Presa

Un socket è noto come un tipo di software che funge da punto finale che funziona per stabilire un collegamento di comunicazione di rete bidirezionale tra l'estremità del server e il programma di ricezione del client.[1] Spesso viene anche definito come un punto finale in un canale di comunicazione bidirezionale. Queste prese sono realizzate e mobilitate insieme ad una serie di richieste di programmazione identificate come chiamate di funzione, tecnicamente definita come interfaccia di programmazione dell'applicazione (API). Un socket è in grado di semplificare il funzionamento di un programma perché i programmatori ora devono solo preoccuparsi di manipolare le funzioni del socket e questo permette loro di fare affidamento sul sistema operativo per trasportare effettivamente i messaggi attraverso la rete in modo corretto.[2]

Funzionalità

In genere, una presa segue un flusso specifico di eventi per farla funzionare. Per un modello client-to-server orientato alla connessione, il socket sul processo server attende la richiesta di un client. Per fare questo, il server deve principalmente stabilire un indirizzo che i client possono utilizzare per trovare e connettersi al server. Quando una connessione è stabilita con successo, il server aspetterà che i client richiedano un servizio. Lo scambio di dati client-to-server avviene se il client si connette al server attraverso il socket. Il server risponderà alla richiesta del cliente e invierà una risposta.[3]

La maggior parte delle volte, gli URL e le loro connessioni vengono utilizzati per accedere a Internet. I programmi richiedono un semplice collegamento di comunicazione tra il client del programma e il server. Questo ruolo è associato ad un socket che aiuterà a legare le estremità client e server del programma. Se un client inizia a stabilire una comunicazione con il server, viene effettuata una connessione affidabile tra server e client attraverso il canale di comunicazione TCP. Con questo tipo di comunicazione, sia il client che il server possono leggere o scrivere su socket legati ad uno specifico canale di comunicazione.[^04]

Tipi di zoccoli

Di seguito sono riportati diversi tipi di prese:

Prese Datagramma

Si tratta di un tipo di presa di rete che fornisce un punto senza connessione per l'invio e la ricezione di pacchetti di dati. Ogni pacchetto inviato da un datagramma viene instradato e consegnato singolarmente. Può essere utilizzato anche per l'invio e la ricezione di messaggi broadcast.

Prese grezze

Questa presa consente l'accesso al fornitore di trasporto sottostante. Questi sono in grado di fornire agli utenti l'accesso ai protocolli di comunicazione sottostanti che supportano l'astrazione dei socket. Normalmente, questi sono orientati al datagramma anche se le loro caratteristiche esatte dipendono dall'interfaccia fornita dal protocollo. Questi non sono destinati ad un uso generale ma sono stati forniti principalmente a coloro che sono interessati a sviluppare nuovi protocolli di comunicazione o ad utilizzarli per accedere ad alcune strutture criptiche di protocolli già esistenti.

Prese a pacchetto sequenziale Prese

Questo è simile a una presa di corrente, ma con l'eccezione che i limiti di registrazione vengono mantenuti. Questo tipo di socket permette agli utenti di manipolare le intestazioni del protocollo di sequenza dei pacchetti (SPP) o del protocollo Internet datagramma (IDP) su un pacchetto o anche su un gruppo di pacchetti. Questa presa permette inoltre all'utente di ricevere intestazioni per i pacchetti in entrata.

Prese di corrente

Questo tipo di presa si basa sul protocollo TCP per la trasmissione dei dati. Se la consegna dei dati è impossibile, il mittente riceverà un indicatore che la connessione ha causato un errore. I record di dati non hanno confini.[4] Questa presa fornisce un flusso di dati unico, orientato alla connessione, in sequenza e senza limiti di registrazione, con meccanismi ben definiti per creare e/o distruggere le connessioni e per rilevare gli errori. Trasmette dati affidabili, in ordine e senza capacità fuori banda. Si presume che i processi comunichino solo tra prese dello stesso tipo, ma non vi sono restrizioni che impediscono la comunicazione tra queste prese di tipo diverso.

Presa attiva

Si tratta di un collegamento alla presa con le prese attive remote attraverso un collegamento dati aperto. Se questo collegamento sarà chiuso, anche le prese attive in ogni punto saranno distrutte. Viene utilizzato dai clienti che desiderano avviare richieste di connessione per connettersi. Tuttavia, questa presa attiva può anche essere trasformata in una presa passiva, legando un nome alla presa con il bind-macro e indicando la disponibilità ad accettare connessioni con il listen-macro.

Presa passiva

Questa presa non è collegata ma, invece, attende una connessione in entrata che genererà una nuova presa attiva. Viene utilizzato dai server per accettare le richieste di connessione con la connect-macro. Questa presa passiva non può essere utilizzata per avviare richieste di connessione. I concetti di prese attive e passive per le prese di corrente non si applicano agli altri tipi di prese, come la presa datagramma.[5]

Porte e zoccoli

Un socket è un'interfaccia per l'invio e la ricezione di dati su una porta specifica, mentre una porta è un valore numerico assegnato a un processo specifico o a un'applicazione nel dispositivo.[6] Anche se esiste una stretta relazione tra un socket e una porta, il socket non è in realtà una porta. Ogni porta può avere una sola presa passiva in attesa delle connessioni in entrata e diverse prese attive, ciascuna corrispondente ad una connessione aperta nella porta.[1:1] Oggi, la presa rende la comunicazione più facile ed efficiente. Permette di stabilire una connessione tra due processi diversi sulla stessa macchina o su macchine diverse. In poche parole, è un modo per parlare con un altro computer.

Storia

L'uso del termine "Socket" è iniziato nel 1971 dove è stato utilizzato durante lo sviluppo di ARPANET. La maggior parte delle prese realizzate oggi si basano sulle prese Berkerley, che sono state sviluppate nel 1983. Le prese utilizzate per stabilire una connessione internet, tuttavia, sono modellate sui modelli Winsock che sono stati realizzati nel 1991. Le prese Berkerley sono note anche come prese BSD. Nel 1989, Berkerley ha rilasciato versioni del suo sistema operativo e della loro libreria di rete come libere da vincoli di licenza. Altre prime implementazioni sono state scritte per TOPS-20, MVS, VM e IBM-DOS.


  1. https://www.techopedia.com/definition/16208/socket ↩︎ ↩︎

  2. https://www.webopedia.com/TERM/S/socket.html ↩︎

  3. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/howdosockets.htm ↩︎

  4. https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm ↩︎

  5. https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.hala001/astream.htm ↩︎

  6. http://pediaa.com/difference-between-socket-and-port/ ↩︎