Il TCP/IP è un’architettura di rete progettata con l’obiettivo di collegare reti di natura diversa (internetworking) e di essere molto affidabile anche in caso di guasti della rete. È nato da una ricerca finanziata dal Dipartimento della Difesa degli Stati Uniti, che desiderava una rete affidabile, utilizzabile anche in caso di guerre o catastrofi.

Quali sono i livelli fondamentali?
Livello di rete (Internet): Offre un servizio privo di connessione e non affidabile: le informazioni vengono spezzate in pacchetti (pacchetti del protocollo IP, o Internet Protocol) e ogni pacchetto può raggiungere la destinazione in modo indipendente, anche in ordine diverso da quello di invio. Si tratta di una rete a commutazione di pacchetto.
Livello di trasporto: Offre due tipi di servizi: orientato alla connessione (protocollo TCP, o Transmission Control Protocol) e privo di connessione (protocollo UDP, o User Datagram Protocol). L’applicazione può scegliere quale servizio utilizzare. Non ci sono livelli di sessione e presentazione distinti.
Livello di applicazione: Contiene tutti i protocolli e i servizi ad alto livello (come SNMP, SMTP, POP3, FTP, HTTP, DNS, SSH e TELNET).
Schema Livelli Modello TCP/IP

Sotto al livello di rete non vengono definiti altri livelli. Viene indicato genericamente un livello chiamato host-to-network, che prevede l’utilizzo di uno qualsiasi degli standard disponibili. In pratica, il TCP/IP può utilizzare qualsiasi protocollo sottostante per trasportare pacchetti IP lungo il mezzo di trasmissione, appoggiandosi a qualsiasi tecnologia esistente. Il TCP/IP è ormai usato universalmente sia su internet che sulle reti locali, che in tal caso prendono il nome di intranet.
Elenco di alcuni protocolli del livello applicazione:
SNTP: Il Simple Network Time Protocol è un protocollo di sincronizzazione temporale che si basa sul protocollo UDP e può essere utilizzato su tutti i dispositivi che lo supportano per la sincronizzazione degli orologi di sistema nelle reti IP (IPv4 e IPv6). Si basa su una struttura client-server in cui i singoli client ottengono le informazioni sull’orario da un time server.
SMTP: Il Simple Mail Transfer Protocol viene usato per trasmettere messaggi di posta elettronica tra due host, utilizzando la porta 25. Il server SMTP si occupa di trasferire i messaggi nelle caselle di posta (mailbox) dei destinatari, oppure inoltrarli (operazione di relay) al server che provvederà a farlo.POP3: Il Post Office Protocol è un protocollo per la ricezione di e-mail. Permette a un client di posta elettronica di recuperare le e-mail da un server, trasmettendo le e-mail dal server al dispositivo locale. Generalmente, la porta predefinita è la 110, mentre per una connessione sicura si utilizza la porta 995.
FTP: Il File Transfer Protocol è utilizzato per il trasferimento di dati basato su un sistema client-server. Consente di caricare, spostare e scaricare file all’interno di un sistema di directory, utilizzando il Transmission Control Protocol (TCP) per il trasferimento dati e richiedendo l’autenticazione del client attraverso nome utente e password. Generalmente comunica sulla porta TCP 21.
HTTP: L’Hyper Text Transfer Protocol è utilizzato come protocollo di un ipertesto. Consente la comunicazione tra client e server attraverso internet, utilizzando la porta 80. La versione sicura di HTTP è HTTPS.
DNS: Il Domain Name System è un protocollo che aiuta a dirigere il traffico su internet collegando i nomi di dominio con i server web reali. In sostanza, traduce un nome di dominio come amazon.com in un indirizzo IP del server, come 216.3.128.12. Generalmente utilizza la porta 53.
SSH: Il Secure Shell è un protocollo di rete che consente di collegarsi a un computer remoto in sicurezza tramite un’interfaccia testuale a linea di comando. È lo standard in tutti i sistemi Linux/Unix per via della sua sicurezza e flessibilità. Utilizza la porta TCP 22.
TELNET: Telnet è un protocollo di rete utilizzato su Internet o reti locali per fornire una comunicazione bidirezionale interattiva orientata al testo tramite una connessione terminale virtuale. Utilizza generalmente la porta TCP 23.