Pregled socket programiranja za računalnu mrežu

Utičnica je jedna od najosnovnijih tehnologija programiranja računalnih mreža. Zahidovi omogućuju mrežnim softverskim aplikacijama komunikaciju pomoću standardnih mehanizama ugrađenih u hardver i operativne sustave mreže.

Iako bi to moglo zvučati kao samo još jedna značajka razvoja Internet softvera, tehnologija socket je postojala mnogo prije Web. I mnogi od danas najpopularnijih mrežnih softverskih aplikacija oslanjaju se na utičnice.

Što zalisci mogu učiniti za vašu mrežu

Utičnica predstavlja jedinstvenu vezu između točno dva dijela softvera (tzv. Točka-točka veza). Više od dva komada softvera može komunicirati s klijentom / poslužiteljem ili distribuiranim sustavima pomoću više priključnica. Na primjer, mnogi web pretraživači mogu istodobno komunicirati s jednim web-poslužiteljem putem skupine priključnica na poslužitelju.

Socket-based softver obično radi na dva odvojena računala na mreži, ali utičnice se također mogu koristiti za komunikaciju lokalno ( interprocess ) na jednom računalu. Priključci su dvosmjerni , što znači da je bilo koja strana veze sposobna za slanje i primanje podataka. Ponekad jedna aplikacija koja inicira komunikaciju naziva se "klijent", a druga aplikacija "poslužitelj", ali ova terminologija dovodi do zbrke u peer to peer networkingu i općenito se treba izbjegavati.

Socket API i knjižnice

Na internetu postoji više knjižnica koje implementiraju standardna sučelja za programiranje aplikacija (API-ja) . Prvi glavni paket - knjižnica Berkeley Socket još uvijek je naširoko koristi na UNIX sustavima. Drugi vrlo uobičajen API je knjižnica Windows Sockets (WinSock) za Microsoftove operacijske sustave. U odnosu na druge računalne tehnologije, socket APIs su prilično zreli: WinSock je u upotrebi od 1993. i Berkeley utičnice od 1982. godine.

API socket relativno je mali i jednostavan. Mnoge funkcije su slične onima koje se koriste u datotekama ulaznih / izlaznih rutina kao što su read () , write () i close () , Stvarna funkcija poziva na uporabu ovisi o odabranom programskom jeziku i zvučnoj biblioteci.

Vrste sučelja Socket

Socket sučelja mogu se podijeliti u tri kategorije:

  • Stream konektori, najčešći tip, zahtijevaju da dvije komunikacijske strane najprije uspostave socket vezu, nakon čega će se svi podaci proslijeđeni tom vezom osigurati da stignu u istom redoslijedu u kojem je poslan - takozvani programski orijentirani programiranje model.
  • Datagramski priključci nude "bez veze" semantiku. S datagramima, veze su implicitne, a ne eksplicite kao s streamovima. Svaka strana jednostavno šalje datagrame po potrebi i čeka da drugi odgovori; poruke mogu biti izgubljene u prijenosu ili primljene iz reda, ali je odgovornost aplikacije, a ne priključci za rješavanje tih problema. Implementiranje datagrama utičnice može dati nekim aplikacijama poboljšanje performansi i dodatnu fleksibilnost u usporedbi s korištenjem tokova utičnica, što opravdava njihovu upotrebu u nekim situacijama.
  • Treći tip utičnice - sirovi utičnica - zaobilazi ugrađenu podršku knjižnice za standardne protokole kao što su TCP i UDP . Sirovi priključci koriste se za prilagođeni razvoj protokola niske razine.

Socket podrška u mrežnim protokolima

Moderne mrežne utičnice obično se koriste zajedno s internetskim protokolima - IP, TCP i UDP. Knjižnice koje implementiraju utičnice za Internet Protocol koriste TCP za tokove, UDP za datagrave i sam IP za sirove baze.

Za komunikaciju putem Interneta, IP socket knjižnice koriste IP adresu za identifikaciju određenih računala. Mnogi dijelovi Interneta rade s uslugama imenovanja, tako da korisnici i programeri socket mogu raditi s računalima po imenu ( npr . "Thiscomputer.wireless.about.com") umjesto po adresi ( npr. , 208.185.127.40). Strujni i podatkovni priključci također koriste IP portove kako bi razlikovali više aplikacija jedan od drugog. Na primjer, web preglednici na Internetu znaju koristiti port 80 kao zadanu za komunikaciju socket s web poslužiteljima.