Priză (interfață software)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 2 septembrie 2018; verificările necesită 10 modificări .

Socket ( în engleză  socket  - connector) - numele interfeței software pentru furnizarea de schimb de date între procese . Procesele dintr-un astfel de schimb pot fi executate atât pe un singur computer , cât și pe computere diferite, interconectate numai printr-o rețea . Un socket este un obiect abstract care reprezintă punctul final al unei conexiuni.

Trebuie făcută o distincție între socket -urile client și server . Prizele client pot fi comparate aproximativ cu dispozitivele terminale ale rețelei telefonice și socketurile de server cu comutatoare . O aplicație client (de exemplu, un browser ) utilizează numai socket-uri client, iar o aplicație server (de exemplu, un server web către care browserul trimite solicitări) utilizează atât socket-uri client, cât și server.

Interfața socket a apărut pentru prima dată în BSD Unix . API -ul socket este definit în standardul POSIX.1 și este susținut într-o oarecare măsură de toate sistemele de operare moderne .

Principii socket

Adresele și porturile sunt folosite pentru a comunica între mașini utilizând stiva de protocoale TCP/IP . Adresa este o structură de 32 de biți pentru protocolul IPv4 , 128 de biți pentru IPv6 . Numărul portului este un număr întreg în intervalul de la 0 la 65535 (pentru protocolul TCP ).

Această pereche definește un socket (un „socket” corespunzător unei adrese și unui port ).

În procesul de schimb, de regulă, sunt utilizate două prize - soclul expeditorului și soclul destinatarului. De exemplu, la accesarea serverului pe portul HTTP , socket-ul va arăta astfel: 194.106.118.30:80, iar răspunsul va merge la mmm.nnn.ppp.qqq:xxxxx.

Fiecare proces poate crea un socket de „ascultare” (socket de server) și îl poate lega la un port al sistemului de operare (în UNIX , procesele neprivilegiate nu pot folosi porturi mai mici de 1024).

Procesul de ascultare este de obicei într-o buclă de așteptare, adică trezirea când apare o nouă conexiune. În același timp, rămâne posibil să verificați conexiunile în acest moment, să setați un timeout pentru operație etc.

Fiecare priză are propria sa adresă. Sistemele de operare din familia UNIX pot suporta multe tipuri de adrese, dar sunt necesare adresa INET și adresa UNIX . Dacă legați un socket la o adresă UNIX, atunci un fișier special (fișier socket ) va fi creat pe calea dată, prin care orice proces local poate comunica prin citirea/scrierea din acesta (vezi socket de domeniu Unix ). Prizele INET sunt accesibile din rețea și necesită alocarea unui număr de port.

De obicei, clientul se „atașează” în mod explicit la ascultător, după care orice citire sau scriere în descriptorul său de fișier va transfera date între acesta și server.

Vezi și

Note