La programmazione di reti di computer comporta la scrittura di programmi per computer che permettono ai processi di comunicare tra loro attraverso una rete di computer.
Comunicazioni orientate alla connessione e comunicazioni senza connessione
Molto generalmente, la maggior parte delle comunicazioni possono essere divise in orientate alla connessione e meno alla connessione. Se una comunicazione è orientata alla connessione o meno, è definita dal protocollo di comunicazione e non dall'interfaccia di programmazione dell'applicazione (API). Esempi di protocolli orientati alla connessione includono Transmission Control Protocol (TCP) e Sequenced Packet Exchange (SPX), ed esempi di protocolli senza connessione includono User Datagram Protocol (UDP), "raw IP", e Internetwork Packet Exchange (IPX).
Clienti e server
Per le comunicazioni orientate alla connessione, le parti della comunicazione hanno solitamente ruoli diversi. Una parte è di solito in attesa di connessioni in entrata; questa parte è di solito chiamata "server". Un'altra parte è quella che inizia la connessione; questa parte è di solito chiamata "client".
Per le comunicazioni senza connessione, una parte ("server") è di solito in attesa di un pacchetto in arrivo, e un'altra parte ("client") è di solito intesa come quella che invia un pacchetto non richiesto al "server".
Protocolli e API popolari
La programmazione di rete copre tradizionalmente diversi livelli del modello OSI/ISO (la maggior parte della programmazione a livello di applicazione appartiene a L4 e superiori). La tabella qui sotto contiene alcuni esempi di protocolli popolari appartenenti a diversi livelli OSI/ISO, e le API popolari per essi.
[LIVELLO OSI/ISO] / [PROTOCOLLO] / [API]
L3(rete) / IP / Raw Socket
L4 (trasporto) / TCP, UDP, SCTP / Berkeley Sockets
L5 (sessione) / TLS / Open SSL
L7 (applicazione) / HTTP / Varie