TCP (Transmission Control Protocol, RFC 793 - Transmission Control Protocol) ist das am meisten verwendete Protokoll zum Datentransfer in Netzwerken.
Es bietet einen verbindungsorientierten, gesicherten Datenstrom. Gehen Daten am Weg verloren oder ändert sich die Reihenfolge sorgt TCP für eine Korrektur.
TCP ist ein Layer 4 Transport Layer Protokoll. TCP PDU’s nennt man Segmente diese werden in IP Paketen transportiert, und diese wiederum in Ethernet Frames.
Geräte die in einem Netzwerk per TCP erreichbar sind werden Host genannt. Anwendungen auf diesen Hosts binden sich zu Ports. Jeder Host hat die Ports 1–65535 (Portnummern).
Jeder Host hat eine eindeutige IP Adresse. Eine IP Adresse ist ein 32 Bit Wert, eine Portnummer hat 16 Bit.
Ein Server ist eigentlich nichts anderes als eine Anwendung die sich auf einem Host an einen bestimmten Port gebunden hat. Ein Web Server würde sich z.B. an den Port 80 binden.
Will ein Client mit einer Server-Anwendung Daten austauschen ist zuerst eine Verbindung aufzubauen. Der Host wird über die IP Adresse identifiziert. Zusätzlich benötigt der Client noch die Port-Nummer an die sich die Server-Anwendung gebunden hat. Nach dem Datenaustausch wird die Verbindung wieder beendet.
Ports eines Hosts mit einer daran gebundenen Anwendung werden als offene Ports bezeichnet, alle anderen Ports sind geschlossen.
Beispiel – Offene TCP Ports eines Hosts mit Metasploit (nmap
):
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
513/tcp open login
514/tcp open shell
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
8009/tcp open ajp13