Una presa è una delle tecnologie più fondamentali della programmazione di reti di computer. I socket consentono alle applicazioni software di rete di comunicare utilizzando i meccanismi standard integrati nell'hardware di rete e nei sistemi operativi.
Anche se potrebbe sembrare solo un'altra caratteristica dello sviluppo di software su Internet, la tecnologia socket è esistita molto prima del Web. E molte delle più popolari applicazioni software di rete oggi si basano sui socket.
Quali zoccoli possono fare per la tua rete
Un socket rappresenta una singola connessione tra esattamente due pezzi di software (un cosiddetto punto a punto connessione). Più di due software possono comunicare con client / server o sistemi distribuiti utilizzando più socket. Ad esempio, molti browser Web possono comunicare contemporaneamente con un singolo server Web tramite un gruppo di socket creati sul server.
Il software basato su socket di solito viene eseguito su due computer distinti sulla rete, ma i socket possono anche essere utilizzati per comunicare localmente ( interprocess ) su un singolo computer. Le prese sono bidirezionale , nel senso che entrambi i lati della connessione sono in grado di inviare e ricevere dati. A volte l'unica applicazione che avvia la comunicazione è definita "client" e l'altra applicazione è il "server", ma questa terminologia porta a confusione nella rete peer-to-peer e dovrebbe essere generalmente evitata.
API e librerie di socket
Numerose librerie che implementano interfacce di programmazione di applicazioni standard (API) esistono su Internet. Il primo pacchetto mainstream: la Berkeley Socket Library è ancora ampiamente utilizzata sui sistemi UNIX. Un'altra API molto comune è la libreria Windows Sockets (WinSock) per i sistemi operativi Microsoft. Rispetto ad altre tecnologie informatiche, le API socket sono piuttosto mature: WinSock è in uso dal 1993 e prese Berkeley dal 1982.
Le API socket sono relativamente piccole e semplici. Molte delle funzioni sono simili a quelle utilizzate nelle routine di input / output dei file come leggere(), Scrivi(), e vicino(). Le chiamate effettive da utilizzare dipendono dal linguaggio di programmazione e dalla libreria socket scelta.
Tipi di interfaccia socket
Le interfacce socket possono essere suddivise in tre categorie:
- ruscello i socket, il tipo più comune, richiede che le due parti comunicanti stabiliscano prima una connessione socket, dopodiché qualsiasi dato passato attraverso quella connessione sarà garantito per arrivare nello stesso ordine in cui è stato inviato - il cosiddetto modello di programmazione orientato alla connessione .
- Datagram socket offrono semantica "connection-less". Con i datagrammi, le connessioni sono implicite piuttosto che esplicite come con gli stream. Ciascuna delle parti invia semplicemente datagrammi secondo necessità e attende che l'altro risponda; i messaggi possono essere persi in trasmissione o ricevuti fuori servizio, ma è la responsabilità dell'applicazione e non le prese per affrontare questi problemi. L'implementazione dei socket dei datagramma può dare a alcune applicazioni un incremento delle prestazioni e una flessibilità aggiuntiva rispetto all'uso dei socket di streaming, giustificando il loro uso in alcune situazioni.
- Il terzo tipo di socket - il crudo socket - ignora il supporto integrato della libreria per protocolli standard come TCP e UDP. I socket grezzi vengono utilizzati per lo sviluppo personalizzato del protocollo di basso livello.
Supporto socket nei protocolli di rete
I moderni socket di rete vengono in genere utilizzati in combinazione con i protocolli Internet: IP, TCP e UDP. Le librerie che implementano socket per Internet Protocol usano TCP per flussi, UDP per datagrammi e IP stesso per socket non elaborati.
Per comunicare su Internet, le librerie di socket IP utilizzano l'indirizzo IP per identificare computer specifici. Molte parti di Internet funzionano con i servizi di denominazione, in modo che gli utenti e i programmatori di socket possano lavorare con i computer per nome ( per esempio. , "thiscomputer.wireless.about.com") anziché per indirizzo ( per esempio. , 208.185.127.40). I socket stream e datagramma utilizzano anche i numeri di porta IP per distinguere più applicazioni l'una dall'altra. Ad esempio, i browser Web su Internet sanno utilizzare la porta 80 come predefinita per le comunicazioni socket con i server Web.