Nell'ambito delle reti di computer, un protocollo di tunneling è un protocollo di comunicazione che permette ad un utente di fornire o accedere ad un servizio non supportato o non fornito direttamente dalla rete. Un uso importante del tunneling è ad esempio permettere ad un protocollo straniero di essere usato su una rete che naturalmente non lo supporta; per esempio, usare IPv6 su una rete compatibile solo con IPv4. Un altro uso importante è fornire servizi che sono di norma impraticabili o insicuri se offerti attraverso la rete originaria; per esempio, fornire un indirizzo di rete aziendale ad un utente remoto la cui rete fisica non è parte del network aziendale. Poiché il tunneling comporta il reincapsulamento del traffico di rete in una forma differente, normalmente usando uno standard crittografico, un terzo uso è quello di nascondere la natura dei dati che sono trasmessi mediante tunneling.
Il protocollo di tunneling funziona usando la porzione riservata ai dati di un normale pacchetto IP detto payload, in esso sono memorizzati i reali pacchetti forniti dal servizio. Il tunneling usa un modello di protocollo a livelli, come i protocolli OSI o TCP/IP, ma frequentemente viola questa caratteristica quando usa il payload per trasportare un servizio non normalmente previsto dalla rete sottostante. Usualmente, nel modello a strati, il protocollo di ricezione opera ad un livello uguale o maggiore rispetto al protocollo di invio (anche esso detto payload).