Programare socket pentru rețele de calculatoare

Un socket este una dintre cele mai fundamentale tehnologii de programare a rețelelor de calculatoare. Socket-urile permit aplicațiilor software de rețea să comunice folosind mecanisme standard încorporate în hardware-ul de rețea și sistemele de operare.

Deși sună ca o altă caracteristică a dezvoltării de software pe internet, tehnologia socket a existat înainte de web. Multe aplicații software de rețea populare se bazează pe socket-uri.

Ce poate face tehnologia socket pentru rețeaua dvs

Un socket reprezintă o singură conexiune între exact două componente de software (o conexiune punct la punct). Cu mai mult de două componente software pot comunica client server sau sisteme distribuite prin utilizarea mai multor prize. De exemplu, multe browsere web pot comunica simultan cu un singur server web folosind un grup de prize realizate pe server.

Software-ul bazat pe socket rulează de obicei pe două computere separate din rețea, dar socket-urile pot fi folosite și pentru a comunica local (interproces) pe un singur computer. Prizele sunt bidirecționale, ceea ce înseamnă că fiecare parte a conexiunii este capabilă atât să trimită, cât și să primească date.

Uneori, aplicația care inițiază comunicarea este denumită client, iar cealaltă aplicație este serverul, dar această terminologie duce la confuzie în de la persoană la persoană crearea de rețele și, în general, ar trebui evitate.

Socket API-uri și biblioteci

Mai multe biblioteci care implementează standard interfețe de programare a aplicațiilor (API-uri) există pe internet. Primul pachet principal, Berkeley Socket Library, este utilizat pe scară largă pe sistemele UNIX.

Un alt API comun este biblioteca Windows Sockets (WinSock) pentru sistemele de operare Microsoft. În comparație cu alte tehnologii informatice, API-urile socket sunt mature. WinSock este utilizat din 1993, iar soclul Berkeley din 1982.

API-urile socket-urilor sunt relativ mici și simple. Multe dintre funcții sunt similare cu cele utilizate în rutinele de intrare/ieșire a fișierelor, cum ar fi citit(), scrie(), și închide(). Apelurile de funcții reale de utilizat depind de limbajul de programare și biblioteca de socket aleasă.

Tipuri de interfață socket

Interfețele socket pot fi împărțite în trei categorii:

  • Prize de flux: Acesta este cel mai comun tip. Cele două părți care comunică stabilesc mai întâi o conexiune socket, după care toate datele au trecut prin aceasta conexiunea este garantată să sosească în aceeași ordine în care a fost trimisă (folosind o programare orientată spre conexiune model).
  • Prize de datagramă: Oferă semantică fără conexiune. Cu datagramele, conexiunile sunt mai degrabă implicite decât explicite, ca în cazul fluxurilor. Oricare dintre părți trimite datagrame după cum este necesar și așteaptă ca cealaltă parte să răspundă. Mesajele pot fi pierdute în timpul transmisiei sau primite în neregulă; aplicația se ocupă de aceste probleme, nu de prize. Implementarea socket-urilor de datagramă poate oferi unor aplicații un spor de performanță și o flexibilitate suplimentară în comparație cu utilizarea socket-urilor de flux.
  • Prize brute: Ocoliți suportul încorporat al bibliotecii pentru protocoale standard, cum ar fi TCP și UDP. Prizele brute sunt folosite pentru dezvoltarea de protocol personalizat la nivel scăzut.

Suport de socket în protocoale de rețea

Prizele de rețea moderne sunt utilizate de obicei împreună cu protocoalele de internet IP, TCP și UDP. Bibliotecile care implementează socket-uri pentru protocolul internet folosesc TCP pentru fluxuri, UDP pentru datagrame și IP pentru socket-uri brute.

Pentru a comunica prin internet, bibliotecile de socket IP folosesc adresa IP pentru a identifica anumite computere. Multe părți ale internetului funcționează cu servicii de denumire, astfel încât utilizatorii și programatorii de socket să poată lucra computere după nume (de exemplu, thiscomputer.wireless.lifewire.com) în loc de adresă (de exemplu, 208.185.127.40).

Prizele de flux și datagramă folosesc, de asemenea, IP numere de port pentru a distinge mai multe aplicații unele de altele. De exemplu, browserele web de pe internet știu să folosească portul 80 ca implicit pentru comunicațiile socket cu serverele web.