Pregled soketnog programiranja za računarsko umrežavanje

Socket je jedna od osnovnih tehnologija programiranja računarskih mreža. Utičnice omogućavaju mrežnim softverskim aplikacijama da komuniciraju pomoću standardnih mehanizama ugrađenih u mrežni hardver i operativne sisteme.

Iako bi to moglo da zvuči kao još jedna od karakteristika razvoja softvera za Internet, tehnologija soketa postojala je dugo prije Weba. I mnogi od danas najpopularnijih mrežnih softverskih aplikacija se oslanjaju na utičnice.

Šta Sokete mogu učiniti za vašu mrežu

Utičnica predstavlja jednu vezu između tačno dva dela softvera (tzv. Tačka-tačka veza). Više od dva komada softvera može komunicirati sa klijentom / serverom ili distribuiranim sistemima koristeći više soketa. Na primer, mnogi Veb pregledači mogu istovremeno komunicirati sa jednim Web serverom preko grupe soketa na serveru.

Socket-bazirani softver obično radi na dva odvojena računara na mreži, ali se i soketovi mogu koristiti za lokalno komuniciranje ( interprocess ) na jednom računaru. Soketi su dvosmerni , što znači da je svaka strana veze sposobna i za slanje i prijem podataka. Ponekad jedna aplikacija koja inicira komunikaciju naziva se "klijentom", a druga aplikacijom "server", ali ova terminologija dovodi do konfuzije u odnosu na peer-peer mrežu i uglavnom treba izbegavati.

Socket API-ji i biblioteke

Nekoliko biblioteka koje implementiraju standardne API-ove aplikacija postoje na Internetu. Prvi mainstream paket - Berkeley Socket Library se još uvijek koristi u UNIX sistemima. Još jedan vrlo uobičajeni API je biblioteka Windows Sockets (WinSock) za Microsoft operativne sisteme. U odnosu na druge kompjuterske tehnologije, API-ovi soketa su sasvim zreli: WinSock se koristi od 1993. godine i Berkeley sockets od 1982. godine.

API-ovi soketa su relativno mali i jednostavni. Mnoge od funkcija su slične onima koje se koriste u ulaznim / izlaznim podacima za datoteke kao što su read () , write () i close () . Konkretne funkcije poziva za korišćenje zavise od izabranog jezika programskog jezika i biblioteke soketa.

Tipovi interfejsa utičnice

Soketni interfejsi mogu se podeliti u tri kategorije:

  • Stream soketovi, najčešći tipovi, zahtevaju da dve stranke koje komuniciraju prvo uspostavljaju socket konekciju, nakon čega će svi podaci preneti preko te veze biti garantovani da stignu u istom redosledu u kojem je poslat - tzv. Programsko orijentisano programiranje model.
  • Datagram utičnice nude "semantiku bez veze". Sa datagramovima, veze su implicitne, a ne ekspicitne kao i sa tokovima. Jedna strana jednostavno šalje datagramove po potrebi i čeka drugu da odgovori; poruke se mogu izgubiti u prenosu ili su primljene van reda, ali je odgovornost aplikacije, a ne soket za rešavanje ovih problema. Sprovođenje datagram soketa može dati nekim aplikacijama povećanje performansi i dodatnu fleksibilnost u poređenju sa upotrebom priključaka za protokole, opravdavajući njihovu upotrebu u nekim situacijama.
  • Treća vrsta utičnice - neispravna utičnica - zaobilazi ugrađenu podršku biblioteke za standardne protokole kao što su TCP i UDP . Raw sockets se koriste za prilagođeni razvoj protokola na niskom nivou.

Podrška za Socket u mrežnim protokolima

Savremene mrežne utičnice se obično koriste u kombinaciji sa Internet protokolima - IP, TCP i UDP. Biblioteke koje implementiraju utičnice za Internet protokol koriste TCP za streamove, UDP za datagrame i samu IP za sirove utičnice.

Za komunikaciju preko Interneta, IP socket biblioteke koriste IP adresu za identifikaciju određenih računara. Mnogi delovi Interneta rade sa imenovanjem, tako da korisnici i soket programeri mogu raditi sa računarima po imenu ( npr . "Thiscomputer.wireless.about.com") umjesto po adresi ( npr . 208.185.127.40). Stream i datagram utičnice takođe koriste brojeve IP portova kako bi razlikovali više aplikacija jedan od drugog. Na primer, Web preglednici na Internetu znaju da koriste port 80 kao podrazumevanu za sokne komunikacije sa Web serverima.