Socket Programming pārskats par datortīkliem

Socket ir viena no fundamentālākajām datortīkla programmēšanas tehnoloģijām. Savienojumi ļauj tīkla programmatūras lietojumprogrammām sazināties, izmantojot tīkla aparatūras un operētājsistēmu iebūvēto standarta mehānismu.

Lai gan tas varētu izklausīties kā vēl viena interneta programmatūras izstrādes iezīme, socket-tehnoloģija pastāvēja ilgi pirms Web. Un daudzi mūsdienu populārākie tīkla programmatūras lietojumprogrammas balstās uz kontaktligzdām.

Ko ligzdas var darīt jūsu tīklā

Socket pārstāv vienu savienojumu starp precīzi diviem programmatūras gabaliem (tā saukto "no punkta-punkta" savienojumu). Vairāk nekā divas programmatūras daļas var sazināties ar klientu / serveri vai izplatītajām sistēmām, izmantojot vairākas kontaktligzdas. Piemēram, daudzi tīmekļa pārlūkprogrammas vienlaikus var sazināties ar vienu tīmekļa serveri, izmantojot serverī izveidoto kontaktligzdu grupu.

Socket-based software parasti tiek darbināts divos atsevišķos datoros tīklā, taču kontaktligzdas var izmantot arī vietējā saziņā ( starpprocess ) vienā datorā. Savienojumi ir divvirzienu , tas nozīmē, ka abas savienojuma puses var gan sūtīt, gan saņemt datus. Dažreiz viena lietojumprogramma, kas sāk komunikāciju, tiek dēvēta par "klientu", bet otru - par "serveri", taču šī terminoloģija rada neskaidrības vienādranga tīklā, un to parasti vajadzētu izvairīties.

Socket API un bibliotēkas

Internetā pastāv vairākas bibliotēkas, kas ievieš standarta lietojumprogrammu saskarnes (API) . Pirmā galvenā pakete - Berkeley Socket Library joprojām plaši tiek izmantota UNIX sistēmās. Vēl viena ļoti izplatīta API ir Windows operētājsistēmu Windows Sockets (WinSock) bibliotēka. Salīdzinājumā ar citām datortehnoloģijām socket API ir diezgan nobriedis: WinSock ir izmantots kopš 1993. gada un Berkeley kontaktligzdas kopš 1982. gada.

Socket API ir salīdzinoši neliels un vienkāršs. Daudzas no funkcijām ir līdzīgas tām, kas tiek izmantotas failu ievades / izvades kārtībā, piemēram, read () , write () , un close () . Faktiskais funkciju izmantošanas aicinājums ir atkarīgs no izvēlētās programmēšanas valodas un ligzdas bibliotēkas.

Socket Interface Types

Socket interfeisi var iedalīt trīs kategorijās:

  • Visbiežāk sastopamajam tipam paredzētās straumēšanas ligzdas prasa, lai abas saziņas puses vispirms izveidotu kontaktligzdas savienojumu, pēc tam visi dati, kas nodoti caur šo savienojumu, tiks garantēti, lai nonāktu tādā pašā secībā, kādā tā tika nosūtīta, - tā saukto sakaru orientēta programmēšana modelis.
  • Datagrammas kontaktligzdas piedāvā "bez savienojuma" semantiku. Ar datagrammu savienojumi ir netieši, nevis skaidri, kā ar straumēm. Katra puse vienkārši nosūta datagrammas pēc nepieciešamības un gaida, kad otra puse atbildēs; ziņojumi var tikt pazaudēti pārsūtīšanā vai saņemti nepareizā kārtībā, bet pieteikuma atbildība ir tā, nevis socket, lai risinātu šīs problēmas. Datagrammas kontaktligzdas ieviešana dažām lietojumprogrammām var dot darbības spēju un papildu elastību salīdzinājumā ar plūsmas ligzdām, pamatojot to izmantošanu dažās situācijās.
  • Trešais ligzda - izejas ligzda - apiet bibliotēkas iebūvēto atbalstu standarta protokoliem, piemēram, TCP un UDP . Neapstrādātas ligzdas tiek izmantotas pielāgotam zema līmeņa protokola izstrādei.

Socket Support tīkla protokolos

Mūsdienu tīkla ligzdas parasti izmanto kopā ar interneta protokoliem - IP, TCP un UDP. Bibliotēkas, kas ievieš Interneta protokolu ligzdas, izmanto TCP plūsmām, UDP datagramiem un pašu IP izejas ligzdām.

Lai sazinātos ar internetu, IP pieslēgvietu bibliotēkas izmanto IP adresi, lai noteiktu konkrētus datorus. Daudzas interneta daļas strādā ar nosaukumu pakalpojumiem, lai lietotāji un pieslēgvietu programmētāji varētu strādāt ar datoriem pēc nosaukuma ( piemēram , "thiscomputer.wireless.about.com"), nevis pēc adreses ( piemēram , 208.185.127.40). Stream un datagrammas ligzdas arī izmanto IP portu numurus, lai atšķirtu vairākas programmas no cita. Piemēram, interneta pārlūkprogrammās internetā ir zināms, ka portam 80 kā noklusējuma kontaktligzdu saziņai ar Web serveriem ir zināma nozīme.