Superrigardo pri Socket-Programado por Komputila Reto

Socket estas unu el la plej fundamentaj teknologioj de komputila reto-programado. Sockets permesas retajn programajn programojn komuniki per normaj mekanismoj konstruitaj en retaj aparataro kaj mastrumaj sistemoj.

Kvankam ĝi povus soni kiel nur alia trajto de interreta softvara evoluado, la teĥnoteknologio ekzistis multe antaŭ la retejo. Kaj multaj de la plej popularaj programoj pri programoj pri la reto nun dependas de sockets.

Kiuj Sockets Povas Fari Por Via Reto

Socket reprezentas ununura konekto inter precize du pecoj de programaro (tiel nomata punkto al punkto- konekto). Pli ol du pecoj de programaro povas komuniki kun kliento / servilo aŭ distribuitaj sistemoj per multoblaj sistemoj. Ekzemple, multaj retumiloj povas samtempe komuniki kun sola TTT-servilo per grupo de sockets faritaj sur la servilo.

La programaro bazita en la bazokuplo kutime funkcias du apartajn komputilojn en la reto, sed bazoj ankaŭ povas esti uzataj por komuniki loke ( interproces ) en unu komputilo. Sockets estas bidirecciaj , signifante, ke ambaŭ flankoj de la rilato kapablas sendi kaj ricevi datumojn. Foje la unu aplikaĵo, kiu komencas komunikadon, estas nomata "kliento" kaj la alia apliko la "servilo", sed ĉi tiu terminologio kondukas al konfuzo en interparolantaj interrilatoj kaj ĝenerale eviti.

Socket APIs kaj Bibliotekoj

Pluraj bibliotekoj kiuj implementas normajn programajn interfacojn de programado (API) ekzistas en Interreto. La unua ĉefa pakaĵo - la Berkeley Socket Library daŭre estas vaste uzata sur UNIX-sistemoj. Alia tre komuna API estas la biblioteko de Windows Sockets (WinSock) por mastrumaj sistemoj de Microsoft. Relativa al aliaj komputilaj teknologioj, socket APIs estas sufiĉe maturaj: WinSock estis uzata ekde 1982 kaj Berkeley-bazoj ekde 1982.

La zonoj API estas relative malgrandaj kaj simplaj. Multaj el la funkcioj estas similaj al tiuj uzataj en dosieroj de enigo / eligo de dosieroj kiel read () , write () , kaj close () . La reala funkcio alvokas dependi de la programlingvo kaj la butiko-biblioteko elektita.

Socket Interface Tipoj

La interfacoj de interŝanĝoj povas esti dividitaj en tri kategoriojn:

  • Stratoj, la plej oftaj tipoj, bezonas, ke la du komunikantaj unuecoj unue establigas interligon, post kiu iu ajn datumo tra tiu konekto garantias alveni en la sama ordo, en kiu ĝi estis sendita - nomata konekto orientita programado modelo.
  • Datagram- bazoj ofertas "konekt-malpli" semantikon. Kun datagramoj, ligiloj estas implicitaj prefere ol eksplicitaj kiel kun riveretoj. Ajna partio simple sendas datagramojn kiel bezonas kaj atendas ke la alia respondu; mesaĝoj povas esti perditaj en transdono aŭ ricevitaj ekster ordo, sed ĝi estas la respondeco de la apliko kaj ne la bazoj por trakti ĉi tiujn problemojn. Efektivigantaj datagram-bazoj povas doni iujn aplikojn efikecon kaj plian flekseblecon kompare al uzado de riveraj basoj, pravigante ilian uzon en iuj situacioj.
  • La tria tipo de ŝnuro - la kruda socket - preterpasas la kongruan subtenon de la biblioteko por normaj protokoloj kiel TCP kaj UDP . Raw-bazoj estas uzataj por kutimo de malalta nivelo-protokola evoluo.

Socket Subteno en Reto-Protokoloj

Moderna reto-bazoj estas kutime uzataj kune kun la interretaj protokoloj - IP, TCP, kaj UDP. La bibliotekoj efektivigante bazojn por Interreta Protokolo uzas TCP por riveretoj, UDP por datagramoj, kaj IP mem por krudaj bazoj.

Por komuniki tra Interreto, IP-inaj bibliotekoj uzas la IP-adreson por identigi specifajn komputilojn. Multaj partoj de Interreto funkcias kun nomado de servoj, por ke la uzantoj kaj socket-programistoj povu funkcii per komputiloj per nomo ( ekz . "Ĉi-komputilo.wireless.about.com") anstataŭ per adreso ( ekz . 208.185.127.40). Rojo kaj datagramaj sistemoj ankaŭ uzas IP- numerojn por distingi multoblajn aplikojn inter si. Ekzemple, retumiloj en Interreto scias uzi havenon 80 kiel la defaŭlta por komunikado kun serviloj retejo.