Articles

Che cosa è un socket?

Advertisements

I socket consentono la comunicazione tra due processi diversi sulla stessa o su macchine diverse. Per essere più precisi, è un modo per parlare con altri computer utilizzando descrittori di file Unix standard. In Unix, ogni azione di I/O viene eseguita scrivendo o leggendo un descrittore di file. Un descrittore di file è solo un numero intero associato a un file aperto e può essere una connessione di rete, un file di testo, un terminale o qualcos’altro.

Per un programmatore, un socket appare e si comporta molto come un descrittore di file di basso livello. Questo perché comandi come read() e write () funzionano con i socket nello stesso modo in cui funzionano con file e pipe.

I socket sono stati introdotti per la prima volta in 2.1 BSD e successivamente perfezionati nella loro forma attuale con 4.2 BSD. La funzione socket è ora disponibile con la maggior parte delle versioni di sistema UNIX attuali.

Dove viene utilizzato Socket?

Un socket Unix viene utilizzato in un framework di applicazioni client-server. Un server è un processo che esegue alcune funzioni su richiesta di un client. La maggior parte dei protocolli a livello di applicazione come FTP, SMTP e POP3 fanno uso di socket per stabilire una connessione tra client e server e quindi per lo scambio di dati.

Tipi di socket

Ci sono quattro tipi di socket disponibili per gli utenti. I primi due sono più comunemente usati e gli ultimi due sono usati raramente.si presume che i processi

comunichino solo tra socket dello stesso tipo, ma non vi è alcuna restrizione che impedisca la comunicazione tra socket di tipi diversi.

  • Stream Sockets − La consegna in un ambiente di rete è garantita. Se invii attraverso il socket stream tre elementi “A, B, C”, arriveranno nello stesso ordine − “A, B, C”. Questi socket utilizzano TCP (Transmission Control Protocol) per la trasmissione dei dati. Se la consegna è impossibile, il mittente riceve un indicatore di errore. I record di dati non hanno limiti.

  • Datagram Sockets − La consegna in un ambiente di rete non è garantita. Sono senza connessione perché non è necessario avere una connessione aperta come nei socket Stream: si crea un pacchetto con le informazioni di destinazione e lo si invia. Usano UDP (User Datagram Protocol).

  • Raw Socket-Questi forniscono agli utenti l’accesso ai protocolli di comunicazione sottostanti, che supportano le astrazioni socket. Questi socket sono normalmente orientati al datagramma, sebbene le loro caratteristiche esatte dipendano dall’interfaccia fornita dal protocollo. I socket Raw non sono destinati all’utente generale; sono stati forniti principalmente per coloro che sono interessati allo sviluppo di nuovi protocolli di comunicazione o per accedere ad alcune delle strutture più criptiche di un protocollo esistente.

  • Socket di pacchetti sequenziati-Sono simili a un socket di flusso, con l’eccezione che i limiti dei record sono conservati. Questa interfaccia è fornita solo come parte dell’astrazione socket Network Systems (NS) ed è molto importante nelle applicazioni NS più gravi. I socket Sequenced-packet consentono all’utente di manipolare le intestazioni Sequence Packet Protocol (SPP) o Internet Datagram Protocol (IDP) su un pacchetto o un gruppo di pacchetti, scrivendo un’intestazione prototipo insieme a qualsiasi dato debba essere inviato, o specificando un’intestazione predefinita da utilizzare con tutti i dati in uscita, e consente all’utente di ricevere le intestazioni sui pacchetti in entrata.

Qual è il prossimo?

I prossimi capitoli hanno lo scopo di rafforzare le basi e preparare una base prima di poter scrivere programmi Server e client utilizzando socket. Se vuoi direttamente saltare per vedere come scrivere un programma client e server, allora puoi farlo ma non è raccomandato. Si consiglia vivamente di andare passo dopo passo e completare questi pochi capitoli iniziali per rendere la vostra base prima di passare a fare la programmazione.

Pubblicità