Cos’è TCP/IP

TCP/IP (Protocollo)

TCP/IP (Transmission Control Protocol / Internet Protocol) non è un protocollo unico, ma un insieme di protocolli che lavorano insieme. Fu studiato originariamente per avere la massima flessibilità possibile.  Avere cioè la possibilità di attraversare più ambienti di rete eterogenei e raggiungere una destinazione finale attraverso più percorsi. L’obiettivo desiderato dai progettisti era quello di garantire la trasmissione dei dati attraverso percorsi alternativi anche nel caso che una parte della rete fosse danneggiata.

L’evoluzione del TCP/IP e lo sviluppo non possono essere attribuiti ad uno o gruppi di individui, esso non è uno standard proprietario ed è accettato su tutta Internet. Gli standard del TCP/IP sono disponibili a tutti e sono pubblicati sotto forma di RCF (Request for comment).

Mantenute dalla IAB (Internet Activities Board) che consente a chiunque di avanzare o valutare una RCF pur essendo vagliate dalla IETF (Internet Engineering Task Force) divisione della IAB. Dopo discussioni ed esami una nuova proposta può essere trasformata in uno standard, che sarà adottato da tutta la comunità degli sviluppatori di Internet, quindi il suo sviluppo e miglioramento è continuo. Le regole e le specifiche di questi protocolli sono incorporate nei programmi che li utilizzano per comunicare in rete.

TCP/IP e reti

TCP/IP si applica alle reti, ogni PC connesso alla rete deve utilizzare un indirizzo IP es: 192.168.123.1. L’indirizzo è formato da 4 porzioni, separate da punti. Ogni porzione corrisponde ad un byte, l’indirizzo completo sono 4 byte quindi è impossibile che una delle porzioni abbia un valore al di fuori di 0-255. Per convenzione esiste una suddivisione all’interno dell’indirizzo: a sinistra si trova il “network number” , mentre a destra si trova l’ “host number“. Due macchine che si trovano sulla stessa LAN (Local Area Network) hanno lo stesso Network number . La linea di suddivisione tra Network e Host number è determinata dall’intervallo nel quale è contenuto il primo dei 4 numeri.

Se il valore del primo numero è:

  • 0-127 (il primo byte è 0xxxxxxx in binario), la linea di suddivisione è dopo il primo numero e abbiamo una rete di classe A. Esiste un numero limitato di reti di classe A (125) ma ognuna può supportare fino a 16.777.214 host.
  • 128-191 (il primo byte è 10xxxxxx in binario), la linea di suddivisione è dopo il secondo numero, rete di classe B. Esistono 16.382 reti di classe B e ognuna può supportare fino a 65534 host.
  • 192-223 (il primo byte è 110xxxxx in binario) a linea di suddivisione è dopo il terzo numero, rete di classe C. Esiste un enorme numero di reti di classe C (2.097.150) ma ognuna di esse non può supportare più di 254 host.
  • I restanti valori del primo numero (224-255) non sono rilevanti.

È spesso possibile scavalcare le regole delle reti di classe A B e C utilizzando le Subnet mask che permettono di suddividere ulteriormente la rete utilizzando più bit per il network number e meno per l’host number, ma le tecniche necessarie per utilizzarle sono piuttosto complesse.

Virtual Hosting

In ogni caso, per avviare un server web, gli indirizzi con cui si avrà a che fare verranno assegnati dall’amministratore di rete o verranno inviati da Internet. Un altro concetto importante è il Virtual Hosting, perchè ogni virtual host deve avere un proprio indirizzo IP. Ora se abbiamo due macchine X e Y e sono sulla stessa rete configurate correttamente, hanno lo stesso network number e diversi host number, sono in grado di avviare TCP/IP e inviarsi a vicenda pacchetti di informazioni. Se invece i network number non sono uguali, TCP/IP invia i pacchetti ad un router (instradatore) una macchina che consegna i pacchetti al destinatario, attraverso Internet o WAN (rete geografica di grosse dimensioni). Esistono due modi di comunicare utilizzando TCP/IP UDP o TCP, per Apache si usa TCP.