මෙය මගේ සංවිධානයේ මෘදුකාංග ඉංජිනේරුවරයෙකු විසින් මතු කරන ලද ප්රශ්නයකි. පුළුල්ම අර්ථ දැක්වීම ගැන මම උනන්දු වෙමි.
මෙය මගේ සංවිධානයේ මෘදුකාංග ඉංජිනේරුවරයෙකු විසින් මතු කරන ලද ප්රශ්නයකි. පුළුල්ම අර්ථ දැක්වීම ගැන මම උනන්දු වෙමි.
Answers:
TCP සොකට් යනු විශේෂිත TCP සම්බන්ධතාවයක හෝ සවන්දීමේ තත්වයේ සන්දර්භය තුළ IP ලිපිනයක් සහ වරායක් මගින් අර්ථ දක්වා ඇති අවසාන ලක්ෂ්ය අවස්ථාවකි .
වරාය යනු සේවා අන්ත ලක්ෂ්යයක් නිර්වචනය කරන අථත්යකරණ හඳුනාගැනුමකි (සේවා නිදර්ශන එන්ඩ්පොයින්ට් හෝ සැසි හඳුනාගැනුමට වඩා වෙනස්).
TCP සොකට් එකක් සම්බන්ධතාවයක් නොවේ , එය විශේෂිත සම්බන්ධතාවයක අවසාන ලක්ෂ්යයයි.
සේවා අන්ත ලක්ෂ්යයකට සමගාමී සම්බන්ධතා තිබිය හැකිය , මන්දයත් එහි දේශීය හා දුරස්ථ අන්ත ලක්ෂ්යයන් මගින් සම්බන්ධතාවයක් හඳුනාගෙන ඇති අතර එමඟින් විශේෂිත සේවා අවස්ථාවකට ගමනාගමනය යොමු කිරීමට ඉඩ සලසයි.
දී ඇති ලිපිනය / වරාය සංයෝජනය සඳහා එක් සවන්දීමේ සොකට් එකක් පමණක් තිබිය හැකිය .
මෙය සිත්ගන්නාසුලු ප්රශ්නයක් වූ අතර මා ඇතුළතින් දන්නා බව සිතූ කරුණු ගණනාවක් නැවත විමර්ශනය කිරීමට මට සිදුවිය. "සොකට්" වැනි නමක් ස්වයං පැහැදිලි කිරීමක් වනු ඇතැයි ඔබ සිතනු ඇත: එය පැහැදිලිවම තෝරාගෙන ඇත්තේ ඔබ ජාල කේබලයක් සවි කරන අවසාන ලක්ෂ්යයේ නිරූපණයන් සඳහා වන අතර ශක්තිමත් ක්රියාකාරී සමාන්තරයන් ඇත. කෙසේවෙතත්, ජාල විග්රහයේදී “සොකට්” යන වචනය කොතරම් ගමන් මලු රැගෙන යනවාද යන්න නැවත පරීක්ෂා කිරීම අවශ්ය වේ.
හැකි පුළුල්ම අර්ථයෙන් ගත් කල, වරායක් යනු ඇතුළුවීමේ හෝ ප්රගතියේ ලක්ෂ්යයකි. ජාලකරණ සන්දර්භයක් තුළ භාවිතා නොකලද, පෝර්ට් යන ප්රංශ වචනයේ තේරුම දොර හෝ දොරටුවයි . වරාය යනු ඔබ දත්ත නැව්ගත කළත් විශාල වානේ බහාලුම් වේවා යන්න ප්රවාහන අන්ත ලක්ෂ්යයන් බව තවදුරටත් අවධාරණය කරයි.
මෙම සාකච්ඡාවේ අරමුණ සඳහා මම TCP-IP ජාල වල සන්දර්භය වෙත සලකා බැලීම සීමා කරමි. ඕඑස්අයි මාදිලිය ඉතා හොඳින් ක්රියාත්මක වන නමුත් කිසි විටෙකත් එය සම්පූර්ණයෙන් ක්රියාත්මක කර නොමැත.
IP ලිපිනයක් සහ වරායක සංයෝජනය අන්ත ලක්ෂ්යයක් ලෙස හැඳින්වෙන අතර සමහර විට එය සොකට් ලෙසද හැඳින්වේ. මෙම භාවිතය ආරම්භ වන්නේ මුල් TCP පිරිවිතර RFC793 සමඟ ය.
TCP සම්බන්ධතාවයක් අර්ථ දැක්වෙන්නේ අන්ත ලක්ෂ්ය දෙකකින් හෝ සොකට් වලින් ය .
අවසාන ලක්ෂ්යයක් (සොකට්) අර්ථ දැක්වෙන්නේ ජාල ලිපිනයක් සහ වරාය හඳුනාගැනීමේ සංයෝජනයෙනි . ලිපිනය / වරාය සොකට් එකක් සම්පූර්ණයෙන් හඳුනා නොගන්නා බව සලකන්න (මේ පිළිබඳ වැඩි විස්තර පසුව).
වරායන්හි පරමාර්ථය වන්නේ දී ඇති ජාල ලිපිනයක බහු අන්ත ලක්ෂ්යයන් වෙන්කර හඳුනා ගැනීමයි. වරාය යනු අථත්යකරණය කළ අන්ත ලක්ෂ්යයක් යැයි ඔබට පැවසිය හැකිය. මෙම අථත්යකරණය තනි ජාල අතුරුමුහුණතක් මත සමගාමී සම්බන්ධතා කිහිපයක් ඇති කරයි.
අන්තර්ජාලය තුළ එක් එක් ටීසීපී සම්බන්ධතාවය අද්විතීය ලෙස හදුනා ගන්නා අන්ත ලක්ෂ්ය දෙක නියම කරන්නේ සොකට් යුගලය (ග්රාහක අයිපී ලිපිනය, ග්රාහක වරාය අංකය, සේවාදායක අයිපී ලිපිනය සහ සේවාදායක වරාය අංකය යන 4-ටුපල්) ය. ( TCP-IP ඉලස්ට්රේටඩ් වෙළුම 1 , ඩබ්ලිව්. රිචඩ් ස්ටීවන්ස්)
බොහෝ සී-ව්යුත්පන්න භාෂාවල, සොකට් පන්තියේ නිදසුනක් මත TCP සම්බන්ධතා ස්ථාපිත කර ඇති අතර ඒවා උපයෝගී කරගනී. නෙට්වර්ක්ස්ට්රීම් පංතියක නිදසුනක් ලෙස ඉහළ මට්ටමේ සාරාංශයක් මත ක්රියා කිරීම සාමාන්ය දෙයක් වුවද, මෙය සාමාන්යයෙන් සොකට් වස්තුවකට යොමු කිරීමක් නිරාවරණය කරයි. කෝඩරයට මෙම සොකට් වස්තුව සම්බන්ධතාවය නිරූපණය කරන බව පෙනේ, මන්දයත් සම්බන්ධතාවය නිර්මාණය වී ඇති අතර සොකට් වස්තුවේ ක්රම උපයෝගී කර ගනිමිනි.
C # හි, TCP සම්බන්ධතාවයක් ඇති කිරීම සඳහා (පවතින සවන්දෙන්නෙකුට) පළමුව ඔබ TcpClient එකක් සාදන්න . ඔබ TcpClient ඉදිකිරීම්කරුට අන්ත ලක්ෂ්යයක් සඳහන් නොකරන්නේ නම් එය පෙරනිමි භාවිතා කරයි - එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් දේශීය අන්ත ලක්ෂ්යය අර්ථ දැක්වේ. ඉන්පසු ඔබ විසින් නිර්මාණය කරන ලද සම්බන්ධක ක්රමයට සම්බන්ධ වන්න. මෙම ක්රමයට අනෙක් අන්ත ලක්ෂ්යය විස්තර කරන පරාමිතියක් අවශ්ය වේ.
මේ සියල්ල ටිකක් අවුල් සහගත වන අතර සොකට් එකක් යනු සම්බන්ධතාවයක් යැයි විශ්වාස කිරීමට ඔබව යොමු කරයි. රිචඩ් ඩෝර්මන් ප්රශ්නය අසන තුරු මම මෙම වැරදි වැටහීම යටතේ වැඩ කරමින් සිටියෙමි.
කියවීම සහ සිතීම පිළිබඳ බොහෝ දේ කර ඇති මට දැන් ඒත්තු ගැන්වී ඇත්තේ දේශීය එන්ඩ්පොයින්ට් සහ දුරස්ථ එන්පොයින්ට් යන තර්ක දෙකක් ගෙන යන ඉදිකිරීම්කරුවෙකු සමඟ පන්ති ටීසීපී සම්බන්ධතාවයක් පැවැත්වීම වඩා අර්ථවත් වනු ඇති බවයි . දේශීය එන්ඩ්පොයින්ට් සඳහා පෙරනිමි පිළිගත හැකි විට ඔබට දුරස්ථ එන්පොයින්ට් යන තනි තර්කයකට සහය දැක්විය හැකිය . බහු හෝම් පරිගණකවල මෙය අපැහැදිලි ය, නමුත් දුරස්ථ අන්ත ලක්ෂ්යයට කෙටිම මාර්ගය සහිත අතුරුමුහුණත තෝරා ගැනීමෙන් රවුටින් වගුව භාවිතයෙන් අපැහැදිලි බව විසඳිය හැකිය.
වෙනත් ආකාරවලින් ද පැහැදිලි බව වැඩි කරනු ඇත. IP ලිපිනය සහ වරාය සංයෝජනයෙන් සොකට් එකක් හඳුනා නොගනී :
[...] දේශීය හා විදේශීය ලිපිනයන්ගෙන් සමන්විත වන අගයන් හතරම භාවිතා කරමින් TCP එන එන කොටස්: ගමනාන්ත IP ලිපිනය, ගමනාන්ත වරාය අංකය, ප්රභව IP ලිපිනය සහ ප්රභව වරාය අංකය. ගමනාන්ත වරාය දෙස බැලීමෙන් පමණක් පැමිණෙන ක්රියාවලියක් ලැබෙන්නේ කුමන ක්රියාවලියටද යන්න TCP හට තීරණය කළ නොහැක. එසේම, [ලබා දී ඇති වරාය අංකයක] [විවිධ] අන්ත ලක්ෂ්යයන්ගෙන් එකක් වන්නේ පැමිණෙන සම්බන්ධතා ඉල්ලීම් ලැබෙනු ඇති අතර එය සවන්දීමේ තත්වයේ පවතී. (p255, TCP-IP ඉලස්ට්රේටඩ් වෙළුම 1 , ඩබ්ලිව්. රිචඩ් ස්ටීවන්ස්)
ඔබට පෙනෙන පරිදි, ජාල සේවාවක් සඳහා එකම ලිපිනය / වරාය සහිත සොකට් ගණනාවක් තිබීම බොහෝ දුරට ඉඩ ඇති නමුත් විශේෂිත ලිපිනයක් / වරාය සංයෝජනයක් මත එක් සවන්දීමේ සොකට් එකක් පමණි. සාමාන්ය පුස්තකාල ක්රියාත්මක කිරීම් සොකට් පංතියක් ඉදිරිපත් කරයි, උදාහරණයක් ලෙස සම්බන්ධතාවයක් නිර්මාණය කිරීමට සහ කළමනාකරණය කිරීමට භාවිතා කරයි. මෙය අතිශයින්ම අවාසනාවන්ත ය, මන්ද එය ව්යාකූලත්වයට හේතු වන අතර සංකල්ප දෙක පුළුල් ලෙස ව්යාකූල වීමට හේතු වේ.
හග්රාවාල් මාව විශ්වාස නොකරයි (අදහස් බලන්න) ඉතින් මෙන්න නියම නියැදියකි. මම වෙබ් බ්රව්සරයක් http://dilbert.com වෙත සම්බන්ධ කර පසුව ධාවනය කළෙමි netstat -an -p tcp
. නිමැවුමේ අවසාන පේළි හය තුළ සොකට් එකක් අද්විතීයව හඳුනා ගැනීමට ලිපිනය සහ වරාය ප්රමාණවත් නොවන බවට උදාහරණ දෙකක් අඩංගු වේ. 192.168.1.3 (මගේ වැඩපොළ) සහ 54.252.94.236:80 (දුරස්ථ HTTP සේවාදායකය) අතර පැහැදිලි සම්බන්ධතා දෙකක් තිබේ.
TCP 192.168.1.3:63240 54.252.94.236:80 SYN_SENT
TCP 192.168.1.3:63241 54.252.94.236:80 SYN_SENT
TCP 192.168.1.3:63242 207.38.110.62:80 SYN_SENT
TCP 192.168.1.3:63243 207.38.110.62:80 SYN_SENT
TCP 192.168.1.3:64161 65.54.225.168:443 ESTABLISHED
සොකට් යනු සම්බන්ධතාවයේ අවසාන ලක්ෂ්යය බැවින්, ලිපිනය / වරාය සංයෝජනය සහිත සොකට් දෙකක් සහ ලිපිනය / වරාය සංයෝජනය 207.38.110.62:80
සමඟ තවත් දෙකක් 54.252.94.236:80
තිබේ.
මම හිතන්නේ හග්රාවාල්ගේ වරදවා වටහා ගැනීම පැන නගින්නේ “හඳුනා ගැනීම” යන වචනය මා ඉතා පරිස්සමින් භාවිතා කිරීමෙනි. මම අදහස් කළේ "සම්පූර්ණයෙන්ම, නිසැකවම හා අද්විතීය ලෙස හඳුනා ගනී". ඉහත නියැදියේ ලිපිනය / වරාය සංයෝජනය සමඟ අන්ත ලක්ෂ්ය දෙකක් 54.252.94.236:80
ඇත. ඔබ සතුව ඇත්තේ ලිපිනය සහ වරාය නම්, මෙම සොකට් වෙන් වෙන් වශයෙන් පැවසීමට ඔබට ප්රමාණවත් තොරතුරු නොමැත. සොකට් එකක් හඳුනා ගැනීමට එය ප්රමාණවත් තොරතුරු නොවේ .
RFC793 හි 2.7 වගන්තියේ දෙවන ඡේදයේ සඳහන් වේ
සම්බන්ධතාවයක් කෙළවරේ ඇති සොකට් යුගලය මගින් නිශ්චිතව දක්වා ඇත. දේශීය සොකට් එකක් විවිධ විදේශීය සොකට් සමඟ බොහෝ සම්බන්ධතා සඳහා සහභාගී විය හැකිය.
සොකට් පිළිබඳ මෙම අර්ථ දැක්වීම ක්රමලේඛන දෘෂ්ටිකෝණයකින් උපකාරී නොවේ, මන්ද එය සොකට් වස්තුවකට සමාන නොවන නිසා එය විශේෂිත සම්බන්ධතාවයක අවසාන ලක්ෂ්යයයි. ක්රමලේඛකයෙකුට සහ මෙම ප්රශ්නයේ බොහෝ ප්රේක්ෂකයින් ක්රමලේඛකයින් වන අතර මෙය ඉතා වැදගත් ක්රියාකාරී වෙනසක් වේ.
සොකට් එකක් කරුණු තුනකින් සමන්විත වේ:
වරාය යනු උපාංගයක තාර්කික ගේට්ටුවක් සංකේතවත් කරන 1 සිට 65535 දක්වා වූ අංකයකි. සේවාදායකයා සහ සේවාදායකයා අතර සෑම සම්බන්ධතාවකටම අද්විතීය සොකට් එකක් අවශ්ය වේ.
උදාහරණයක් වශයෙන්:
සොකට් එකක් ජාල යෙදුම් දෙකක් අතර තනි සම්බන්ධතාවයක් නියෝජනය කරයි. මෙම යෙදුම් දෙක නාමිකව විවිධ පරිගණකවල ක්රියාත්මක වන නමුත් සොකට් තනි පරිගණකයක අන්තර් සැකසුම් සන්නිවේදනය සඳහා ද භාවිතා කළ හැකිය. යෙදුම් එකිනෙකා සමඟ සන්නිවේදනය කිරීම සඳහා බහු සොකට් නිර්මාණය කළ හැකිය. සොකට් ද්විපාර්ශ්වික වේ, එයින් අදහස් වන්නේ සම්බන්ධතාවයේ දෙපැත්තටම දත්ත යැවීමට සහ ලැබීමට හැකියාව ඇති බවයි. එබැවින් OSI ආකෘතියේ ඕනෑම මට්ටමකින් 2 සිට ඉහළට න්යායාත්මකව සොකට් එකක් සෑදිය හැකිය. ක්රමලේඛකයින් බොහෝ විට ජාල වැඩසටහන් වල සොකට් භාවිතා කරයි, වක්රව වුවද. වින්සොක් වැනි ක්රමලේඛන පුස්තකාල සොකට් ක්රමලේඛනයේ පහත් මට්ටමේ තොරතුරු බොහොමයක් සඟවයි. 1980 දශකයේ මුල් භාගයේ සිට සොකට් බහුලව භාවිතා වේ.
වරායක් ජාල සන්නිවේදනය සඳහා අන්ත ලක්ෂ්යයක් හෝ “නාලිකාවක්” නියෝජනය කරයි. වරාය අංක එකම පරිගණකයේ විවිධ යෙදුම් එකිනෙකට මැදිහත් නොවී ජාල සම්පත් භාවිතා කිරීමට ඉඩ දෙයි. වරාය අංක බහුලව දක්නට ලැබෙන්නේ ජාල වැඩසටහන් වල, විශේෂයෙන් සොකට් ක්රමලේඛනයේ ය. සමහර විට, වරාය අංක අනියම් පරිශීලකයාට දෘශ්යමාන වේ. උදාහරණයක් ලෙස, පුද්ගලයෙකු අන්තර්ජාලයට පිවිසෙන සමහර වෙබ් අඩවි පහත දැක්වෙන ආකාරයේ URL භාවිතා කරයි:
http://www.mairie-metz.fr:8080/ මෙම උදාහරණයේ දී, 8080 අංකය වෙබ් සේවාදායකයට සම්බන්ධ වීමට වෙබ් බ්රව්සරය භාවිතා කරන වරාය අංකයට යොමු වේ. සාමාන්යයෙන්, වෙබ් අඩවියක් වරාය අංක 80 භාවිතා කරන අතර මෙම අංකය URL සමඟ ඇතුළත් කිරීම අවශ්ය නොවේ (එය විය හැකි වුවද).
IP ජාලකරණයේදී, වරාය අංක න්යායාත්මකව 0 සිට 65535 දක්වා පරාසයක පැවතිය හැකිය. බොහෝ ජනප්රිය ජාල යෙදුම්, පරාසයේ පහළ කෙළවරේ (HTTP සඳහා 80 වැනි) වරාය අංක භාවිතා කරයි.
සටහන: වරාය යන පදය ජාල තාක්ෂණයේ තවත් අංශ කිහිපයක් ගැන සඳහන් කරයි. අනුක්රමික, සමාන්තර සහ USB වරායන් වැනි පර්යන්ත උපාංග සඳහා භෞතික සම්බන්ධතා ලක්ෂ්යයක් වරායකට යොමු කළ හැකිය. වරාය යන පදය කේන්ද්රස්ථානයක්, ස්විචයක් හෝ රවුටරයක් වැනි ඇතැම් ඊතර්නෙට් සම්බන්ධතා ස්ථාන වෙත යොමු වේ.
ref http://compnetworking.about.com/od/basicnetworkingconcepts/l/bldef_port.htm
ref http://compnetworking.about.com/od/itinformationtechnology/l/bldef_socket.htm
යම් ප්රතිසමයක් සමඟ
සොකට් සඳහා දැනටමත් බොහෝ තාක්ෂණික දේවල් ලබා දී ඇතත් ... අයිපී, වරාය සහ සොකට් අතර වෙනස යමෙකුට තවමත් දැනිය නොහැකි නම් , මගේ පිළිතුර එක් කිරීමට මම කැමතියි.
එස් සේවාදායකයක් සලකා බලන්න ,
හා කියන්න , පුද්ගලයා X Y, Z සේවා (චැට් සේවා කියන්නේ) අවශ්ය බව දක්වා සේවාදායකය එස්
එවිට
IP ලිපිනය කියයි -> කවුද? X, Y, Z සම්බන්ධ කර ගැනීමට අවශ්ය චැට් සර්වර් 'එස්' ද?
හරි, ඔබට "සේවාදායකයා කවුද"
නමුත් 'එස්' සේවාදායකය වෙනත් පුද්ගලයින්ට වෙනත් සේවාවන් සපයන්නේ යැයි සිතමු, 'එස්' ඒ, බී, සී පුද්ගලයන්ට ගබඩා සේවා සපයයි
එවිට
වරාය කියයි ---> මොන? ඔබට (X, Y, Z) සේවය අවශ්ය වන්නේ චැට් සේවාව මිස ගබඩා කිරීමේ සේවාව නොවේ
හරි .., ඔබ 'චැට් සේවාව' යනු ඔබට අවශ්ය දේ මිස ගබඩාව නොවන බව දැන ගැනීමට ඔබ සේවාදායකය කරයි
ඒත්
ඔබ තිදෙනා වන අතර සේවාදායකයාට මේ තුනම වෙනස් ලෙස හඳුනා ගැනීමට අවශ්ය විය හැකිය
සොකට් එක එනවා
දැන් සොකට් කියනවා -> මොන එකද? විශේෂිත සම්බන්ධතාවය
එනම්, කියන්න,
X පුද්ගලයා සඳහා සොකට් 1
Y පුද්ගලයා සඳහා සොකට් 2
සහ Z පුද්ගලයා සඳහා සොකට් 3
එය තවමත් ව්යාකූලත්වයට පත්වූ කෙනෙකුට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි :)
පළමුවෙන්ම, මම හිතන්නේ අපි A සිට B දක්වා පැකට්ටුවක් ලබා ගන්නේ කුමක් ද යන්න පිළිබඳ මඳ අවබෝධයකින් ආරම්භ කළ යුතුය.
ජාලයක් සඳහා පොදු අර්ථ දැක්වීමක් වන්නේ ඕඑස්අයි මාදිලිය භාවිතා කිරීමයි. එමඟින් ජාලයක් අරමුණ අනුව ස්ථර ගණනාවකට වෙන් කරයි. වැදගත් ඒවා කිහිපයක් තිබේ, ඒවා අපි මෙහි ආවරණය කරන්නෙමු:
TCP වෙනත් දේ අතර වරාය සංකල්පය අඩංගු වේ . අන්තර්ජාල සොකට් ( AF_INET
) බන්ධනය කළ හැකි එකම IP ලිපිනයෙහි මේවා effectively ලදායී ලෙස වෙනස් දත්ත ලක්ෂ්ය වේ.
එය සිදු වන විට, යූඩීපී සහ අනෙකුත් ප්රවාහන ස්ථර ප්රොටෝකෝල ද එසේමය . ඔවුන්ට තාක්ෂණිකව වරායන් විශේෂාංග කිරීමට අවශ්ය නැත , නමුත් මෙම වරායන් මඟින් ඉහත ස්ථර වල ඇති බහු යෙදුම් සඳහා එකම පරිගණකයක් භාවිතා කරමින් පිටතට යන සම්බන්ධතා ලබා ගැනීමට (සහ සැබවින්ම) ක්රමයක් සපයයි.
එය අපව TCP හෝ UDP සම්බන්ධතාවයේ ව්යුහයට ගෙන එයි. සෑම එකක්ම ප්රභව වරායක් සහ ලිපිනයක් සහ ඉලක්කගත වරායක් සහ ලිපිනයක් දක්වයි. මෙය ඕනෑම සැසියකදී, ඉලක්කගත යෙදුමට ප්රතිචාර දැක්වීමට මෙන්ම ප්රභවයෙන් ලැබීමට හැකි වේ.
එබැවින් වරාය යනු එකම ලිපිනය බෙදා ගැනීමට සමගාමී සම්බන්ධතා කිහිපයකට ඉඩ දීම සඳහා පිරිවිතර-අනිවාර්ය ක්රමයකි.
දැන්, ඔබ යෙදුම් දෘෂ්ටි කෝණයකින් බාහිර ලෝකයට සන්නිවේදනය කරන්නේ කෙසේදැයි අපි සොයා බැලිය යුතුය. මෙය සිදු කිරීම සඳහා, ඔබ ඔබේ මෙහෙයුම් පද්ධතියෙන් කාරුණිකව විමසිය යුතු අතර බොහෝ මෙහෙයුම් පද්ධති බර්ක්ලි සොකට් දේවල් කරන ක්රමයට සහය දක්වන බැවින්, මෙවැනි යෙදුමකින් වරාය සම්බන්ධ සොකට් සෑදිය හැකි බව අපට පෙනේ:
int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...
මහා! එබැවින් sockaddr
ව්යුහයන් තුළ, අපි අපගේ වරාය සහ බාම් නියම කරමු! වැඩේ ඉවරයි! හොඳයි, පාහේ, හැර:
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
ද හැකි ය. උර්ග්, එය කාර්යයන්හි ස්පැනරයක් විසි කරයි!
හරි, ඇත්තෙන්ම එය එසේ වී නැහැ. අප කළ යුත්තේ සුදුසු අර්ථකථන කිහිපයක් ඉදිරිපත් කිරීම පමණි:
/var/run/database.sock
.වොයිලා! එය දේවල් පිළිවෙලට කරයි. ඉතින් අපේ යෝජනා ක්රමයේදී,
එබැවින් ඇත්ත වශයෙන්ම වරාය යනු අන්තර්ජාල සොකට් එකක් සෑදීමේ අවශ්යතාවන්ගේ උප කුලකයකි. අවාසනාවකට මෙන්, සොකට් යන වචනයේ තේරුම විවිධ අදහස් කිහිපයකට යොමුවී ඇත. එබැවින් ව්යාකූලත්වයට එකතු කිරීම සඳහා ඔබේ ඊළඟ ව්යාපෘති සොකට් එක නම් කරන්නැයි මම ඔබට හදවතින්ම උපදෙස් දෙමි;)
සාමාන්යයෙන්, ඔබට න්යායාත්මක ගොඩක් ලැබෙනු ඇත, නමුත් මෙම සංකල්ප දෙක වෙන්කර හඳුනා ගැනීමට පහසුම ක්රමයක් පහත පරිදි වේ:
සේවාවක් ලබා ගැනීම සඳහා ඔබට සේවා අංකයක් අවශ්ය වේ. මෙම සේවා අංකය වරාය ලෙස හැඳින්වේ. ඒ තරම් සරළයි.
උදාහරණයක් ලෙස, සේවාවක් ලෙස HTTP 80 වරායේ ක්රියාත්මක වේ.
දැන්, බොහෝ දෙනෙකුට සේවාව ඉල්ලා සිටිය හැකි අතර සේවාදායක-සේවාදායකයෙන් සම්බන්ධතාවයක් ස්ථාපිත කර ඇත. සම්බන්ධතා ගොඩක් ඇත. සෑම සම්බන්ධතාවයක්ම සේවාදායකයෙකු නියෝජනය කරයි. සෑම සම්බන්ධතාවයක්ම පවත්වා ගැනීම සඳහා, සේවාදායකයා සිය සේවාදායකයා නඩත්තු කිරීම සඳහා එක් සම්බන්ධතාවයකට සොකට් එකක් සාදයි.
සොකට් = අයිපී ලිපිනය + වරායක් (සංඛ්යාත්මක ලිපිනය)
ඔවුන් එක්ව යන්ත්රයක ජාල සම්බන්ධතාවයක් සඳහා අවසාන ලක්ෂ්යයක් හඳුනා ගනී. (මම ජාල 101 ක් දැම්මාද?)
පළාත් සභා 2 ක් අතර ඇති සම්බන්ධය සමඟ සොකට්ටුවට සමාන පිළිතුරු රාශියක් ඇති බව පෙනේ .. මම සිතන්නේ එය සම්පූර්ණයෙන්ම වැරදිය. සොකට් එකක් සෑම විටම 1 පරිගණකයේ අවසාන ලක්ෂ්යය වී ඇති අතර එය සම්බන්ධ විය හැකි හෝ නොවිය හැකිය - නිසැකවම අපි සියල්ලෝම යම් අවස්ථාවක සවන්දෙන්නන් හෝ යූඩීපී සොකට් * භාවිතා කර ඇත්තෙමු. වැදගත් කොටස වන්නේ එය ආමන්ත්රණය කළ හැකි සහ ක්රියාකාරී වීමයි. 1.1.1.1:1234 ට පණිවුඩයක් යැවීම වැඩ කරන්නේ නැත, මන්ද එම අන්ත ලක්ෂ්යය සඳහා සොකට් එකක් අර්ථ දක්වා නැත.
සොකට් ප්රොටොකෝල් විශේෂිත වේ - එබැවින් TCP / IP සහ UDP / IP යන දෙකම භාවිතා කරන සුවිශේෂත්වය ක්රියාත්මක කිරීම * (ipaddress: port), උදා., IPX (Network, Node, සහ ... ahem, socket) වලට වඩා වෙනස් නමුත් වෙනස් ය සාමාන්ය "සොකට්" යෙදුමට වඩා සොකට්. IPX සොකට් අංක IP වරායට සමාන වේ). එහෙත්, ඒවා සියල්ලම අද්විතීය ආමන්ත්රණය කළ හැකි අවසාන ලක්ෂ්යයක් ඉදිරිපත් කරයි.
අයිපී ප්රමුඛ ප්රොටෝකෝලය බවට පත්ව ඇති හෙයින්, වරායක් (ජාලකරණ අර්ථයෙන්) යූඩීපී හෝ ටීසීපී වරාය අංකයක් සමඟ සමපාත වේ - එය සොකට් ලිපිනයේ කොටසකි.
යූඩීපී සම්බන්ධතාවය අඩුයි - එයින් අදහස් කරන්නේ අන්ත ලක්ෂ්ය දෙක අතර අථත්ය පරිපථයක් මෙතෙක් නිර්මාණය වී නොමැති බවයි. කෙසේ වෙතත්, අපි තවමත් යූඩීපී සොකට්වල අවසාන ලක්ෂ්යය ලෙස හඳුන්වමු. ඒපීඅයි ශ්රිත මගින් පැහැදිලි වන්නේ දෙකම වෙනස් ආකාරයේ සොකට් බවයි - SOCK_DGRAM
එය යූඩීපී (පණිවිඩයක් යැවීම) සහ SOCK_STREAM
ටීසීපී (අථත්ය පරිපථයක් නිර්මාණය කිරීම) ය.
තාක්ෂණික වශයෙන්, IP ශීර්ෂය IP ලිපිනය දරන අතර, IP (UDP හෝ TCP) හි ඇති ප්රොටෝකෝලය වරාය අංකය දරයි. මෙමඟින් වෙනත් ප්රොටෝකෝල (උදා: වරාය අංක නොමැති, නමුත් IP ලිපින තොරතුරු ඇති ICMP ) තිබිය හැක.
කෙටි කෙටි පිළිතුර.
ඒ වරාය ලෙස විස්තර කළ හැකි අභ්යන්තර ලිපිනය වැඩසටහනක් හෝ ක්රියාවලියක් හෝ හඳුනා ගැනීමේ සත්කාරක තුළ.
ඒ අඩි, ලෙස විස්තර කළ හැකි අතුරු මුහුණත් වැඩසටහන් එක්කෝ කොබැඳි නැත්නම් ස්ථානීකව නොපවතියි අන්තර්ජාලය, අනෙකුත් වැඩසටහන් හෝ ක්රියාවලීන් සමඟ සන්නිවේදනය කිරීම සඳහා වැඩසටහනක් ඉඩ, හෝ.
මේවා මූලික ජාල සංකල්ප වන බැවින් විස්තරාත්මකව තේරුම් ගැනීමට පහසු සහ පුළුල් ආකාරයකින් මම ඒවා පැහැදිලි කරමි.
එබැවින් ජාලකරණයේ සොකට් යනු යුගලයකට (ip, port) = (ලිපිනය, සේවාව) බැඳී ඇති අතථ්ය සන්නිවේදන උපකරණයකි.
සටහන:
එය ඔබගේ සැකයන් දුරු කරයි යැයි සිතමි
ඒවා විවිධ වසම් දෙකක පද වේ: 'වරාය' යනු TCP / IP ජාලකරණයේ සංකල්පයකි, 'සොකට්' යනු API (ක්රමලේඛන) දෙයකි. වරායක් සහ ධාරක නාමයක් හෝ ජාල ඇඩැප්ටරයක් ගෙන දත්ත යැවීමට හෝ ලැබීමට ඔබට භාවිතා කළ හැකි දත්ත ව්යුහයකට ඒවා ඒකාබද්ධ කිරීමෙන් 'සොකට්' සාදනු ලැබේ.
123.132.213.231 # IP address
:1234 # port number
123.132.213.231:1234 # socket address
සොකට් 2 ක් එකට බැඳී ඇති විට සම්බන්ධතාවයක් ඇතිවේ.
ඉහළට ඡන්දය දුන් විශිෂ්ට පිළිතුරු කියවීමෙන් පසු, ජාල වැඩසටහන්කරණයට නවකයෙකු වන මට පහත කරුණු අවධාරණය කළ යුතු බව මට පෙනී ගියේය:
TCP-IP සම්බන්ධතා යනු එක් ලිපිනයක් සම්බන්ධ කරන ද්වි-දිශානුගත මාර්ගයන් ය: වරාය සංයෝජනය වෙනත් ලිපිනයක් සමඟ: වරාය සංයෝජනය. එමනිසා, ඔබ ඔබේ දේශීය යන්ත්රයෙන් දුරස්ථ සේවාදායකයක වරායකට සම්බන්ධතාවයක් විවෘත කරන සෑම විටම (www.google.com:80 කියන්න), ඔබද ඔබේ යන්ත්රයේ නව වරාය අංකයක් සම්බන්ධතාවය සමඟ සම්බන්ධ කරන්නේ, සේවාදායකයාට යැවීමට ඉඩ දීම සඳහා ය. ඔබට නැවත දේවල්, (උදා: 127.0.0.1:65234). ඔබේ යන්ත්රයේ සම්බන්ධතා බැලීමට නෙට්ස්ටැට් භාවිතා කිරීම ප්රයෝජනවත් විය හැකිය:
> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.0.6.49871 17.172.232.57.5223 ESTABLISHED
...
සොකට් යනු මෙහෙයුම් පද්ධතියෙන් ජාල සේවා ඉල්ලා සිටීම සඳහා ක්රියාවලියක් විසින් භාවිතා කරන විශේෂ වර්ගයේ ගොනු හසුරුවකි. සොකට් ලිපිනය යනු ත්රිත්වයයි: {ප්රොටෝකෝලය, දේශීය ලිපිනය, දේශීය ක්රියාවලිය} එහිදී දේශීය ක්රියාවලිය වරාය අංකයකින් හඳුනා ගනී.
TCP / IP කට්ටලයේ, උදාහරණයක් ලෙස:
{tcp, 193.44.234.3, 12345}
සංවාදයක් යනු ක්රියාවලීන් දෙකක් අතර සන්නිවේදන සම්බන්ධතාවය වන අතර එමඟින් දෙකක් අතර සම්බන්ධයක් නිරූපණය කෙරේ. සම්බන්ධතාවයක් යනු ක්රියාවලීන් දෙක මුළුමනින්ම නියම කරන 5-ටුපල් එකකි: {ප්රොටෝකෝලය, දේශීය ලිපිනය, දේශීය ක්රියාවලිය, විදේශීය ලිපිනය, විදේශ ක්රියාවලිය}
TCP / IP කට්ටලයේ, උදාහරණයක් ලෙස:
{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}
වලංගු සංගමයක් විය හැකිය.
අර්ධ ඇසුරක් වන්නේ: {ප්රොටෝකෝලය, දේශීය ලිපිනය, දේශීය ක්රියාවලිය}
හෝ
{ප්රොටෝකෝලය, විදේශීය ලිපිනය, විදේශ ක්රියාවලිය}
එය සම්බන්ධතාවයේ එක් එක් භාගය නියම කරයි.
අර්ධ ඇසුර සොකට් හෝ ප්රවාහන ලිපිනය ලෙසද හැඳින්වේ. එනම්, සොකට් යනු ජාලයක නම් කළ හැකි හා ආමන්ත්රණය කළ හැකි සන්නිවේදනයේ අවසාන ලක්ෂ්යයකි. සොකට් අතුරුමුහුණත සන්නිවේදන ප්රොටෝකෝල වෙත යෙදුම් ක්රමලේඛ අතුරුමුහුණත් කිහිපයකින් එකකි. සාමාන්ය සන්නිවේදන ක්රමලේඛ අතුරුමුහුණතක් ලෙස නිර්මාණය කර ඇති මෙය මුලින්ම හඳුන්වා දුන්නේ 4.2BSD යුනික්ස් පද්ධතිය විසිනි. එය ප්රමිතිගත කර නොතිබුණද එය තථ්ය කර්මාන්ත ප්රමිතියක් බවට පත්ව ඇත.
සොකට් යනු සන්නිවේදන අන්ත ලක්ෂ්යයකි. සොකට් එකක් TCP / IP ප්රොටෝකෝලය පවුලට directly ජුව සම්බන්ධ නොවේ, එය ඔබේ පද්ධතිය සහාය දක්වන ඕනෑම ප්රොටෝකෝලයක් සමඟ භාවිතා කළ හැකිය. සී සොකට් ඒපීඅයි මඟින් ඔබ මුලින්ම සොකට් වස්තුවක් ලබා ගැනීමට අපේක්ෂා කරන අතර පසුව ඔබට දේශීය සොකට් ලිපිනයකට බැඳිය හැකිය (සම්බන්ධතා අඩු ප්රොටෝකෝල සඳහා පැමිණෙන ගමනාගමනය කෙලින්ම ලබා ගැනීමට හෝ සම්බන්ධතා නැඹුරු ප්රොටෝකෝල සඳහා ලැබෙන සම්බන්ධතා ඉල්ලීම් පිළිගැනීමට) හෝ ඔබට දුරස්ථ සොකට් ලිපිනයකට සම්බන්ධ විය හැකිය (එක් ආකාරයක ප්රොටෝකෝලයක් සඳහා). ඔබට දෙකම පාලනය කිරීමට අවශ්ය නම් ඔබට දෙකම කළ හැකිය, දේශීය සොකට් ලිපිනය සොකට්ටුවකට බැඳී ඇති අතර දුරස්ථ සොකට් ලිපිනය සොකට්ටුවකට සම්බන්ධ කර ඇත. සම්බන්ධතා අඩු ප්රොටෝකෝල සඳහා සොකට් එකක් සම්බන්ධ කිරීම පවා අත්යවශ්ය නොවේ, නමුත් ඔබ එය නොකරන්නේ නම්, ඔබ ' ඔබට සොකට්ටුව හරහා යැවීමට අවශ්ය සෑම පැකට්ටුවක් සමඟම ගමනාන්ත ලිපිනය ලබා දිය යුතුය. මෙම දත්ත යැවිය යුත්තේ කොතැනටදැයි සොකට් දැන ගන්නේ කෙසේද? වාසිය නම් ඔබට විවිධ සොකට් ලිපින වලට පැකට් යැවීමට තනි සොකට් එකක් භාවිතා කළ හැකිය. ඔබේ සොකට් එක වින්යාස කර සමහර විට සම්බන්ධ වූ පසු එය ද්වි-දිශා සන්නිවේදන නළයක් ලෙස සලකන්න. කිසියම් ගමනාන්තයකට දත්ත යැවීමට ඔබට එය භාවිතා කළ හැකි අතර සමහර ගමනාන්තයන් ඔබට දත්ත නැවත ඔබ වෙත යැවීමට භාවිතා කළ හැකිය. ඔබ සොකට්ටුවකට ලියන දේ යවා ඇති අතර ලැබී ඇති දේ කියවීම සඳහා ලබා ගත හැකිය. කිසියම් ගමනාන්තයකට දත්ත යැවීමට ඔබට එය භාවිතා කළ හැකි අතර සමහර ගමනාන්තයන් ඔබට දත්ත නැවත ඔබ වෙත යැවීමට භාවිතා කළ හැකිය. ඔබ සොකට්ටුවකට ලියන දේ යවා ඇති අතර ලැබී ඇති දේ කියවීම සඳහා ලබා ගත හැකිය. කිසියම් ගමනාන්තයකට දත්ත යැවීමට ඔබට එය භාවිතා කළ හැකි අතර සමහර ගමනාන්තයන් ඔබට දත්ත නැවත ඔබ වෙත යැවීමට භාවිතා කළ හැකිය. ඔබ සොකට්ටුවකට ලියන දේ යවා ඇති අතර ලැබී ඇති දේ කියවීම සඳහා ලබා ගත හැකිය.
අනෙක් අතට වරාය යනු TCP / IP ප්රොටොකෝල් තොගයේ ඇතැම් ප්රොටෝකෝලයන්ට පමණි. TCP සහ UDP පැකට් වල වරායන් ඇත. වරාය යනු සරල අංකයකි. ප්රභව වරාය සහ ගමනාන්ත වරාය සංයෝජනය මඟින් ධාරකයන් දෙදෙනෙකු අතර සන්නිවේදන නාලිකාවක් හඳුනා ගනී. උදා: ඔබට දෙකම තිබිය හැකි සේවාදායකයක්, සරල HTTP සේවාදායකයක් සහ සරල FTP සේවාදායකයක් තිබිය හැකිය. දැන් එම සේවාදායකයේ ලිපිනය සඳහා පැකට්ටුවක් පැමිණේ නම්, එය HTTP හෝ FTP සේවාදායකයේ පැකට්ටුවක් දැයි දැන ගන්නේ කෙසේද? HTTP සේවාදායකය වරාය 80 සහ FTP සේවාදායකය වරාය 21 හි ක්රියාත්මක වන බැවින් එය දැන ගනු ඇත, එබැවින් පැකට්ටුව ගමනාන්ත වරාය 80 සමඟ පැමිණේ නම්, එය HTTP සේවාදායකය සඳහා මිස FTP සේවාදායකය සඳහා නොවේ. පැකට්ටුවට ප්රභව වරායක් ඇති බැවින් එවැනි ප්රභව වරායක් නොමැතිව සේවාදායකයෙකුට වරකට එක් IP ලිපිනයකට එක් සම්බන්ධතාවයක් පමණක් තිබිය හැකිය. ප්රභව වරාය මඟින් සේවාදායකයෙකුට වෙනත් ආකාරයකින් සමාන සම්බන්ධතා වෙන්කර හඳුනාගත හැකිය: ඒවා සියල්ලටම එකම ගමනාන්ත වරාය ඇත, උදා: වරාය 80, එකම ගමනාන්ත IP (සේවාදායකයේ IP) සහ එකම ප්රභව IP, ඒවා සියල්ලම එන බැවින් එකම සේවාදායකයා, නමුත් ඔවුන්ට වෙනස් ප්රභව වරායන් ඇති බැවින්, සේවාදායකයාට ඒවා එකිනෙකාගෙන් වෙන්කර හඳුනාගත හැකිය. සේවාදායකයා නැවත පිළිතුරු යවන විට, එය ඉල්ලීම පැමිණි වරායට කරනු ඇත, එමඟින් සේවාදායකයාට එකම සේවාදායකයෙන් ලැබෙන විවිධ පිළිතුරු වෙන්කර හඳුනාගත හැකිය.
වරාය පහසුම කොටස විය, එය සොකට් සඳහා අද්විතීය හඳුනාගැනීමක් පමණි. සොකට් යනු ක්රියාවලි මගින් සම්බන්ධතා ඇති කර ගැනීමට සහ එකිනෙකා සමඟ සන්නිවේදනය කිරීමට භාවිතා කළ හැකි දෙයකි. උස ජෙෆ් සතුව විශාල දුරකථන ප්රතිසමයක් ඇති අතර එය පරිපූර්ණ නොවේ, එබැවින් මම එය නිවැරදි කිරීමට තීරණය කළෙමි:
netstat
යම් වේලාවක් දර්ශනයක් දෙස බලන්න . සවන්දීමේ සොකට්ටුවකින් පිළිගත් සියලුම සොකට් එකම වරාය බෙදා ගනී. එර්ගෝ පෝට් යනු සොකට් සඳහා අද්විතීය හඳුනාගැනීමක් නොවේ.
යෙදුමක් ජාලය හරහා සන්නිවේදනය කරන ක්රියාවලි යුගලයකින් සමන්විත වේ (සේවාදායක-සේවාදායක යුගල). මෙම ක්රියාවලීන් සොකට් නම් මෘදුකාංග අතුරුමුහුණතක් හරහා ජාලයට සහ ඉන් පිටතට පණිවිඩ යවයි . "පරිගණක ජාලකරණය: ඉහළට පහළට ප්රවේශය" යන පොතේ ඉදිරිපත් කර ඇති ප්රතිසමයන් සලකා බලයි. වෙනත් නිවසක් සමඟ සන්නිවේදනය කිරීමට අවශ්ය නිවසක් තිබේ. මෙන්න, නිවසක් ක්රියාවලියකට සමාන වන අතර, සොකට්ටුවකට දොර. යැවීමේ ක්රියාවලිය උපකල්පනය කරන්නේ දොරේ අනෙක් පැත්තේ යටිතල පහසුකම් ඇති අතර එමඟින් දත්ත ගමනාන්තයට ප්රවාහනය කරනු ඇති බවයි. පණිවිඩය අනෙක් පැත්තට පැමිණි පසු, එය ලබන්නාගේ දොර (සොකට්) හරහා නිවස තුළට ගමන් කරයි (ක්රියාවලිය). එකම පොතේ මෙම නිදර්ශනය ඔබට උපකාරී වේ:
සොකට් යනු ප්රවාහන ස්ථරයේ කොටසකි, එය යෙදුම් වලට තාර්කික සන්නිවේදනයක් සපයයි. මෙයින් අදහස් කරන්නේ බොහෝ රවුටර සහ / හෝ ස්විචයන් තිබියදීත්, යෙදුමේ දෘෂ්ටි කෝණයෙන් ධාරකයන් දෙකම එකිනෙකා සමඟ කෙලින්ම සම්බන්ධ වී ඇති බවයි. මේ අනුව සොකට් එකක් යනු සම්බන්ධතාවයක් නොවේ, එය සම්බන්ධතාවයේ අවසාන ලක්ෂ්යයයි. ප්රවාහන ස්ථර ප්රොටෝකෝල ක්රියාත්මක කරනු ලබන්නේ ධාරකයන් මත මිස අතරමැදි රවුටර මත නොවේ.
වරායයන්ත්රයකට අභ්යන්තර ආමන්ත්රණය කිරීමේ මාධ්යයන් සැපයීම. මූලික ක්රියාදාමය වන්නේ වෙනත් ක්රියාදාමයන්ට (ඒවායේ දත්ත) බාධා නොකර ජාලය හරහා දත්ත යැවීමට සහ ලැබීමට බහු ක්රියාවලියන්ට ඉඩ දීමයි. සියලුම සොකට් සඳහා වරාය අංකයක් ලබා දී ඇත. ඛණ්ඩයක් ධාරකයකු වෙත පැමිණි විට, ප්රවාහන ස්ථරය මඟින් ගමනාන්තයේ වරාය අංකය පරීක්ෂා කරයි. එමඟින් එම කොටස අනුරූප සොකට්ටුව වෙත යොමු කරයි. ප්රවාහන ස්ථර කොටසක ඇති දත්ත නිවැරදි සොකට්ටුවට ලබා දීමේ මෙම කාර්යය ඩි- මල්ටිපෙක්සිං ලෙස හැඳින්වේ . කොටසේ දත්ත පසුව සොකට්ටුවට අමුණා ඇති ක්රියාවලියට යොමු කරනු ලැබේ.
සොකට් යනු ඔබේ මෘදුකාංගයේ ව්යුහයකි. එය ගොනුවකට වඩා අඩු හෝ අඩු ය; එයට කියවීම සහ ලිවීම වැනි ක්රියාකාරකම් ඇත. එය භෞතික දෙයක් නොවේ; එය ඔබේ මෘදුකාංගයට භෞතික දේවල් වෙත යොමු වීමේ මාර්ගයකි.
වරාය යනු උපාංගයට සමාන දෙයකි. සෑම සත්කාරක සමාගමකටම ජාල එකක් හෝ කිහිපයක් ඇත (ඒවා භෞතික වේ); සෑම ජාලයකම ධාරකයෙකුට ලිපිනයක් ඇත. සෑම ලිපිනයකටම වරාය දහස් ගණනක් තිබිය හැකිය.
එක් සොකට්ටුවක් ලිපිනයක වරායක් භාවිතා කිරීම පමණක් විය හැකිය. I / O ගොනු පද්ධතිය සඳහා උපකරණයක් වෙන් කිරීම වැනි සොකට්ටුව වරාය වෙන් කරයි. වරාය වෙන් කළ පසු, වෙනත් කිසිදු සොකට්ටුවකට එම වරායට සම්බන්ධ විය නොහැක. සොකට් එක වසා දැමූ විට වරාය නිදහස් වේ.
TCP / IP පාරිභාෂිතය දෙස බලන්න .
සිට ඔරකල් ජාවා නිබන්ධනය :
සොකට් යනු ජාලය තුළ ක්රියාත්මක වන වැඩසටහන් දෙකක් අතර ද්වි-මාර්ග සන්නිවේදන සම්බන්ධතාවයේ එක් අන්ත ලක්ෂ්යයකි. සොකට් එකක් වරාය අංකයකට බැඳී ඇති අතර එමඟින් දත්ත යැවීමට නියම කර ඇති යෙදුම TCP ස්තරයට හඳුනාගත හැකිය.
වරාය සහ සොකට් බැංකු ශාඛාවට සමාන කළ හැකිය.
"බැංකුවේ" ගොඩනැගිලි අංකය IP ලිපිනයට සමානය. බැංකුවකට විවිධ අංශ තිබේ:
එබැවින් 1 (ඉතුරුම් ගිණුම් දෙපාර්තමේන්තුව), 2 (පුද්ගලික ණය දෙපාර්තමේන්තුව), 3 (නිවාස ණය දෙපාර්තමේන්තුව) සහ 4 (දුක්ගැනවිලි දෙපාර්තමේන්තුව) වරාය වේ.
දැන් අපි කියමු ඔබ ඉතුරුම් ගිණුමක් විවෘත කිරීමට යන්න, ඔබ බැංකුවට (IP ලිපිනය) යන්න, ඉන්පසු ඔබ "ඉතිරිකිරීමේ ගිණුම් දෙපාර්තමේන්තුවට" (වරාය අංක 1) යන්න, එවිට ඔබට "ඉතුරුම් ගිණුම් දෙපාර්තමේන්තුව" යටතේ සේවය කරන එක් සේවකයෙකු හමුවෙයි. ". ගිණුම ආරම්භ කිරීම සඳහා අපි ඔහුට SAVINGACCOUNT_EMPLOYEE1 අමතන්න.
SAVINGACCOUNT_EMPLOYEE1 යනු ඔබේ සොකට් විස්තරය, එබැවින් SAVINGACCOUNT_EMPLOYEE1 සිට SAVINGACCOUNT_EMPLOYEEN දක්වා SAVINGACCOUNT_EMPLOYEE1 තිබිය හැක. මේ සියල්ල සොකට් විස්තර කරන්නන් ය.
ඒ හා සමානව, වෙනත් දෙපාර්තමේන්තු යටතේ සේවා නියුක්තිකයන් සිටින අතර ඒවා සොකට් වලට සමාන වේ.
සොකට් යනු දත්ත I / O යාන්ත්රණයකි. වරාය යනු සන්නිවේදන ප්රොටෝකෝලයක ගිවිසුම් සංකල්පයකි . වරායක් නොමැතිව සොකට් එකක් පැවතිය හැකිය. නිශ්චිත සොකට් එකක් නොමැතිව වරායක් පැවතිය හැකිය (උදා: එකම වරායේ සොකට් කිහිපයක් සක්රීය නම්, සමහර ප්රොටෝකෝල සඳහා ඉඩ දිය හැකිය).
බොහෝ ප්රොටෝකෝල සහිතව, ග්රාහකයා පැකට්ටුව වෙත යා යුත්තේ කුමන සොකට්ටුවද යන්න තීරණය කිරීම සඳහා වරායක් භාවිතා කරයි, නමුත් එය සැමවිටම අවශ්ය නොවන අතර ලැබෙන සොකට් තේරීම වෙනත් ක්රමයකින් කළ හැකිය - වරාය යනු සම්පූර්ණයෙන්ම ප්රොටොකෝලය හසුරුවන්නා විසින් භාවිතා කරන මෙවලමකි ජාල උප පද්ධතිය. උදා: ප්රොටෝකෝලයක් වරායක් භාවිතා නොකරන්නේ නම්, පැකට් වලට සියලු සවන්දීමේ සොකට් හෝ ඕනෑම සොකට් එකකට යා හැකිය.
සාපේක්ෂ TCP / IP පාරිභාෂිතය ප්රශ්නයෙන් ගම්ය වේ. ගිහියන්ගේ වචන වලින්:
වරාය යනු කිසියම් සිප් කේතයක ඇති නිවසක දුරකථන අංකයට සමානය. නගරයේ ZIP කේතය නගරයේ IP ලිපිනය සහ එම නගරයේ සියලුම නිවාස ලෙස සිතිය හැකිය.
අනෙක් අතට සොකට් එකක් යනු එකිනෙකා සමඟ කතා කරන නිවාස යුගලයක දුරකථන අතර ස්ථාපිත දුරකථන ඇමතුමකට සමානය. එම ඇමතුම් එකම නගරයේ නිවාස හෝ විවිධ නගරවල නිවාස දෙකක් අතර ස්ථාපිත කළ හැකිය. SOCKET යනු එකිනෙකා සමඟ කතා කරන දුරකථන යුගල අතර තාවකාලික ස්ථාපිත මාවතකි.
පුළුල් අර්ථයකින් ගත් කල, සොකට් - ඔබේ විදුලි, කේබල් හෝ දුරකථන සොකට් මෙන් සොකට් එකකි. “අවශ්ය දේවල්” (බලය, සං signal ාව, තොරතුරු) පිටතට ගොස් පැමිණිය හැකි ස්ථානයක්. එය සවිස්තරාත්මක දේවල් රාශියක් සඟවයි, එය "අවශ්ය දේවල්" භාවිතා කිරීම සඳහා අවශ්ය නොවේ. මෘදුකාංග උපභාෂාවෙන්, එය ආයතන දෙකක් අතර සන්නිවේදන යාන්ත්රණයක් නිර්වචනය කිරීමේ සාමාන්ය ක්රමයක් සපයයි (එම ආයතන ඕනෑම දෙයක් විය හැකිය - යෙදුම් දෙකක්, භෞතිකව වෙනම උපාංග දෙකක්, මෙහෙයුම් පද්ධතියක් තුළ පරිශීලක සහ කර්නල් අවකාශය යනාදිය)
වරාය යනු අන්ත ලක්ෂ්ය වෙනස් කොට සැලකීමකි. එය එක් අන්ත ලක්ෂ්යයක් තවත් අන්තයකින් වෙන් කරයි. ජාලකරණ මට්ටමින්, එය එක් යෙදුමක් තවත් යෙදුමකින් වෙනස් කරයි, එවිට ජාල ගබඩාවට තොරතුරු සුදුසු යෙදුමට යැවිය හැකිය.
දැනටමත් මෙම ප්රශ්නයට න්යායාත්මක පිළිතුරු ලබා දී ඇත. මෙම ප්රශ්නයට ප්රායෝගික උදාහරණයක් දීමට මම කැමතියි, එමඟින් සොකට් සහ වරාය පිළිබඳ ඔබේ අවබෝධය පැහැදිලි වනු ඇත.
මම එය මෙහි සොයාගත්තා
මෙම උදාහරණය විලී වැනි වෙබ් අඩවියකට සම්බන්ධ වීමේ ක්රියාවලිය හරහා ඔබව ගෙන යනු ඇත. ඔබ ඔබේ වෙබ් බ්රව්සරය (මොසිල්ලා ෆයර්ෆොක්ස් වැනි) විවෘත කර ලිපින තීරුවට www.wiley.com ටයිප් කරන්න. ඔබගේ වෙබ් බ්රව්සරය එහි IP ලිපිනය හඳුනා ගැනීම සඳහා www.wiley.com යන නම බැලීමට වසම් නාම පද්ධති (DNS) සේවාදායකයක් භාවිතා කරයි. මෙම උදාහරණය සඳහා ලිපිනය 192.0.2.100 වේ.
ෆයර්ෆොක්ස් 192.0.2.100 ලිපිනයට සහ යෙදුම් ස්ථර වෙබ් සේවාදායකය ක්රියාත්මක වන වරායට සම්බන්ධ කරයි. ෆයර්ෆොක්ස් ප්රසිද්ධ වරායක් බැවින් අපේක්ෂා කළ යුතු වරාය කුමක්දැයි දනී. වෙබ් සේවාදායකයක් සඳහා සුප්රසිද්ධ වරාය වන්නේ TCP port 80 ය.
ෆයර්ෆොක්ස් සම්බන්ධ කිරීමට උත්සාහ කරන ගමනාන්ත සොකට් එක සොකට් ලෙස ලියා ඇත: වරාය, හෝ මෙම උදාහරණයේ 192.0.2.100:80. මෙය සම්බන්ධතාවයේ සේවාදායක පැත්තයි, නමුත් මොසිල්ලා ෆයර්ෆොක්ස් හි ඔබට නැරඹීමට අවශ්ය වෙබ් පිටුව යැවිය යුත්තේ කොතැනට දැයි සේවාදායකයාට දැනගත යුතුය, එබැවින් ඔබට සම්බන්ධතාවයේ සේවාදායකයාගේ පැත්ත සඳහා සොකට් එකක් ද ඇත.
සේවාදායක පාර්ශවීය සම්බන්ධතාවය සෑදී ඇත්තේ 192.168.1.25 වැනි ඔබගේ IP ලිපිනය සහ අහඹු ලෙස තෝරාගත් ගතික වරාය අංකයෙනි. ෆයර්ෆොක්ස් හා සම්බන්ධ සොකට් එක 192.168.1.25:49175 වගේ. වෙබ් සේවාදායකයන් TCP port 80 මත ක්රියාත්මක වන හෙයින්, මෙම සොකට් දෙකම TCP සොකට් වන අතර, ඔබ UDP වරායක ක්රියාත්මක වන සේවාදායකයකට සම්බන්ධ වන්නේ නම්, සේවාදායකය සහ සේවාදායක සොකට් දෙකම UDP සොකට් වේ.
සොකට් යනු I / O දත්ත සඳහා පරිශීලක යෙදුම් සඳහා කර්නලය විසින් සපයන ලද සාරාංශයකි. සොකට් වර්ගයක් අර්ථ දැක්වෙන්නේ එය හැසිරවීම, අයිපීසී සන්නිවේදනයක් යනාදියෙනි. එබැවින් යමෙකු ටීසීපී සොකට් එකක් නිර්මාණය කරන්නේ නම් ඔහුට සොකට් සඳහා දත්ත කියවීම සහ සරල ක්රම මගින් දත්ත ලිවීම වැනි උපක්රම සිදු කළ හැකිය. පැකට් පහළ මට්ටමේ ජාල ප්රොටෝකෝල වෙත යොමු කිරීම කර්නලයේ විශේෂිත සොකට් ක්රියාත්මක කිරීම මඟින් සිදු කෙරේ. මෙහි ඇති වාසිය නම්, ප්රොටෝකෝලය විශේෂිත නයිටිග්රිටි හැසිරවීම ගැන පරිශීලකයා කරදර විය යුතු නැති අතර සාමාන්ය බෆරයක් වැනි සොකට් වෙත දත්ත කියවා ලිවිය යුතුය. අයිපීසී සම්බන්ධයෙන්ද එය සත්ය වේ, පරිශීලකයා සොකට් වෙත දත්ත කියවා ලියන අතර කර්නලය විසින් නිර්මාණය කරන ලද සොකට් වර්ගය මත පදනම්ව සියලුම පහළ මට්ටමේ තොරතුරු හසුරුවයි.
අයිපී සමඟ වරාය කිරීම සොකට්ටුවට ලිපිනයක් සැපයීම හා සමානයි, එය අවශ්ය නොවන නමුත් එය ජාල සන්නිවේදනයට උපකාරී වේ.
තනි වරායකට බහු බාහිර වෙළඳසැලක් වැනි විවිධ බාහිර අයිපී සමඟ සම්බන්ධිත සොකට් එකක් හෝ කිහිපයක් තිබිය හැකිය.
TCP 192.168.100.2:9001 155.94.246.179:39255 ESTABLISHED 1312
TCP 192.168.100.2:9001 171.25.193.9:61832 ESTABLISHED 1312
TCP 192.168.100.2:9001 178.62.199.226:37912 ESTABLISHED 1312
TCP 192.168.100.2:9001 188.193.64.150:40900 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.23.194.149:43970 ESTABLISHED 1312
TCP 192.168.100.2:9001 198.49.73.11:38842 ESTABLISHED 1312
සොකට් යනු යෙදුමේ අතුරුමුහුණත ලෙස භාවිතා කරන ජාලකරණ අන්ත ලක්ෂ්යයේ SW වියුක්තකරණයයි. ජාවා හි, සී # එය වස්තුවෙන් නිරූපණය වේ, ලිනක්ස්, යුනික්ස් හි එය ගොනුවකි.
වරාය යනු ඔබට සන්නිවේදනයක් ස්ථාපිත කිරීමට අවශ්ය නම් ඔබ විසින් නියම කරන ලද සොකට්ටුවක දේපලකි. සොකට්ටුවකින් පැකට්ටුව ලබා ගැනීම සඳහා ඔබ එය විශේෂිත දේශීය වරාය හා ජාතික හැඳුනුම්පත (දේශීය IP ලිපිනය සමඟ) හෝ සියලුම ජාතික හැඳුනුම්පත් (INADDR_ANY බන්ධන ඇමතුමෙහි දක්වා ඇත) සමඟ බැඳ තැබිය යුතුය. පැකට්ටුව යැවීමට, දුරස්ථ සොකට්ටුවේ වරාය සහ අයිපී නියම කළ යුතුය.
සොකට් යනු මූලික වශයෙන් ජාල සන්නිවේදනය සඳහා අවසාන ලක්ෂ්යයක් වන අතර එය අවම වශයෙන් IP ලිපිනයක් සහ වරායකින් සමන්විත වේ. ජාවා / සී # සොකට් යනු ද්වි-මාර්ග සම්බන්ධතාවයේ එක් පැත්තක් ඉහළ මට්ටමේ ක්රියාත්මක කිරීමකි.
එසේම, ජාවා ප්රලේඛනයේ අර්ථ දැක්වීමක් .
වරාය:
අනුක්රමික, සමාන්තර සහ USB වරායන් වැනි පර්යන්ත උපාංග සඳහා භෞතික සම්බන්ධතා ලක්ෂ්යයක් වරායකට යොමු කළ හැකිය. වරාය යන පදය සමහර ඊතර්නෙට් සම්බන්ධතා ලක්ෂ්යයන්, කේන්ද්රස්ථානයක්, ස්විචයක් හෝ රවුටරයක ඇති ඒවා ලෙසද සඳහන් කරයි.
තව්ව:
සොකට් එකක් ජාල යෙදුම් දෙකක් අතර තනි සම්බන්ධතාවයක් නියෝජනය කරයි. මෙම යෙදුම් දෙක නාමිකව විවිධ පරිගණකවල ක්රියාත්මක වන නමුත් සොකට් තනි පරිගණකයක අන්තර් සැකසුම් සන්නිවේදනය සඳහා ද භාවිතා කළ හැකිය. යෙදුම් එකිනෙකා සමඟ සන්නිවේදනය කිරීම සඳහා බහු සොකට් නිර්මාණය කළ හැකිය. සොකට් ද්විපාර්ශ්වික වේ, එයින් අදහස් වන්නේ සම්බන්ධතාවයේ දෙපැත්තටම දත්ත යැවීමට සහ ලැබීමට හැකියාව ඇති බවයි.
වරාය මඟින් IP ජාල ප්රොටෝකෝලය සඳහා TCP සහ UDP ප්රවාහනයන්හි සන්නිවේදන අන්ත ලක්ෂ්යයක් දක්වයි. සොකට් යනු මෙම ප්රොටෝකෝල (සොකට් ඒපීඅයි) ක්රියාත්මක කිරීමේදී බහුලව භාවිතා වන සන්නිවේදන අන්ත ලක්ෂ්යයක් සඳහා වන මෘදුකාංග සාරාංශයකි. විකල්ප ක්රියාත්මක කිරීමක් වන්නේ XTI / TLI API ය.
මෙයද බලන්න:
ස්ටීවන්ස්, ඩබ්ලිව්ආර් 1998, යුනික්ස් ජාල වැඩසටහන්කරණය: ජාලකරණ ඒපීඅයි: සොකට් සහ එක්ස්ටීඅයි; 1 වන වෙළුම, ප්රෙන්ටිස් ශාලාව.
ස්ටීවන්ස්, ඩබ්ලිව්ආර්, 1994, ටීසීපී / අයිපී ඉලස්ට්රේටඩ්, 1 වන වෙළුම: ප්රොටෝකෝල, ඇඩිසන්-වෙස්ලි.