Für eine TCP-Weiterleitung oder einen Dateitransfer sind meist zwei Computer beteiligt. Es können aber weit mehr sein. Damit sie in dieser Anleitung stets erkennen können, welche Funktion gemeint ist, bzw. welcher Computer in welcher Eigenschaft, trennen wir einmal möglichst weit:

|  | |  | TCP-Client initiiert eine TCP-Verbindung |
|  | |  | |  | | |
steuernde Instanz Ihre Kommandozeile mit "Tunnel" |  |
|  | laufende Instanz angesteuertes "Tunnel" TCP-Verbindung tritt in Tunnel ein |
|  | |  | |  | | | |
|  | |  | zwischenstation "Tunnel" (optional) TCP-Verbindung wird von Tunnel zu Tunnel weitergegeben |
|  | |  | |  | | | |
|  | |  | gegenüberliegendes "Tunnel" TCP-Verbindung tritt aus dem Tunnel aus |
|  | |  | |  | | |
|  | |  | TCP-Server nimmt TCP-Verbindung entgegen |
 Normalerweise verbindet sich ein TCP-Client direkt zu seinem TCP-Server.
 Wird die Verbindung über einen Tunnel geleitet, muss ein "Tunnel"-Programm zunächst als TCP-Server arbeiten. Die Daten des Client werden über einen Tunnel weitergereicht zur gegenüberliegenden Station. Diese verbindet sich nun zum eigentlichen TCP-Server, und gibt die Daten weiter.
 Voraussetzung ist, dass das erste Tunnel-Programm konfiguriert ist, die Verbindungen vom TCP-Client entgegenzunehmen und an das gegenüberliegende Tunnel-Programm weiterzureichen.
 Zur Konfiguration der laufenden Instanz von "Tunnel" rufen Sie aus der Kommandozeile erneut das Programm "Tunnel" auf, diesmal als steuernde Instanz. Die steuernde Instanz nimmt die Kommandozeile, und übergibt die Befehle via TCP-Verbindung an die laufende Instanz.
 In der Darstellung sind normale TCP-Verbindungen mit einem Strich dargestellt. Für Tunnel sind zwei Striche dargestellt, denn es werden zwei TCP-Verbindungen genutzt, um alle Daten und Verbindungen über eine Tunnel-Strecke weiterzuleiten.
 Im Fall von Dateiübertragungen findet das gleiche Prinzip Anwendung — nur wird die laufende Instanz zum Initiator. Irgendeiner muss ja die Arbeit machen, und Dateien tun bekanntlich nichts — sie liegen nur rum:

|  | |  | lokale Datei Die Quell-Datei für ein upload Die Ziel-Datei eines download Die Datei kann auf einem anderen Computer liegen. |
|  | |  | |  | | |
steuernde Instanz Ihre Kommandozeile mit "Tunnel" |  |
|  | laufende Instanz angesteuertes "Tunnel" initiiert die Dateiübertragung, liest/schreibt die lokale Datei |
|  | |  | |  | | | |
|  | |  | zwischenstation "Tunnel" (optional) gibt den Datenstrom von Tunnel zu Tunnel weiter |
|  | |  | |  | | | |
|  | |  | gegenüberliegendes "Tunnel" liest/schreibt die gegenüberliegende Datei |
|  | |  | |  | | |
|  | |  | gegenüberliegende Datei Die Ziel-Datei eines upload Die Quell-Datei für ein download Die Datei kann auf einem anderen Computer liegen. |
|