| TCP/IP-Schicht | Protokolle (Auswahl) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Anwendung | HTTP | FTP | SMTP | POP3 | Telnet | DNS | SNMP | RIP | SSH | IPFIX | |
| Transport | TCP | UDP | SCTP | ||||||||
| Vermittlung | IP (IPv4,IPv6) IPsec ICMP und ARP | ||||||||||
| Physik | Ethernet | W-Lan | |||||||||

Protokoll TCP
TCP:
Das TCP (Transmission Control Protocol) liegt im Schichtmodell in der Transport Layer (Schicht 4) und somit über dem IP. Es baut eine zuverlässige end-to-end Verbindung auf. Zuverlässig heißt, dass die Pakete nicht einfach ins Netz geschickt werden, wie beim UDP. Es wird eine Verbindung zum Zielhost aufgebaut, die bestätigt werden muss. Hinzu kommt eine Prüfsumme im TCP-Header zur Überprüfung von Fehlern im Datenabschnitt der Pakete, die auf der Ebene des TCP als Segmente bezeichnet werden. Ist die Prüfsumme nicht korrekt, d.h. sind Pakete verloren gegangen oder beschädigt wird keine Empfangsbestätigung versendet. Erhält der Sender nach einer Zeit keine Empfangsbestätigung, sendet er ein Paket erneut.
Bereits vor dem Senden der eigentlichen Daten wird eine Verbindung über den s.g. Three-Way-Handshake aufgebaut. Hier wird zuerst ein Segment gesendet, dessen SYN-Flag im Header aktiviert ist. Dadurch wird dem Zielhost mitgeteilt, dass eine Verbindung aufgebaut werden soll und zwar mit der Sequenznummer, die ebenfalls im Header festgelegt ist. Der Empfänger kann die Verbindung aufnehmen, indem er ein Bestätigungssegment zurückschickt. in dem zusätzlich das ACK-Bit aktiviert ist. Die Sequenznummer wird zur Bestätigung im Feld Acknowledgement Number abgelegt und dann um eins erhöht, damit der Senderhost weiß, mit welcher er fortfahren soll.
Der Sender bestätigt die zustande gekommene Verbindung indem er erneut ein Segment an den Empfänger schickt (aktives ACK-Feld und die vom Empfänger angegebene Sequenznummer als Acknowledgement number). Ab dieses Paket können bereits die ersten Daten angehängt werden.. Am Ende der Datenübertragung wird das FIN-Bit aktiviert. Es kommt meistens vor, dass die einzelnen Datenpakete nicht in der gleichen Reihenfolge ankommen in der sie verschickt wurden, da sie über verschiedene Wege weitergeleitet wurden. Somit sind die Hauptaufgaben von TCP sicherzustellen, dass diese Daten beim Empfänger ankommen und dort wieder in der richtigen Reihenfolge zusammengesetzt werden.
Über das TCP kann auch eine so genannte Portnummer (16Bit, 65.535 Ports) angegeben werden. Dadurch ist es möglich eine Applikation auf dem Zielsystem direkt anzusprechen. Beispiele für Portnummern sind: TELNET auf Port 23, FTP auf 21 und SQL auf 14333.
Der TCP Header ist 20Byte groß, daran können weitere Optionen angehängt werden. Die Informationseinheit und der Header müssen in das Datenfeld des IP-Fragments passen.
Die einzelnen Felder werden wie folgt definiert:
- Source Port: Portnummer des Senders
- Destination Port: Portnummer des Empfängers
- Sequence- und Acknowledgement number: zur Kontrolle der Reihenfolge der einzelnen Pakete
- Offset: Länge des gesamten Headers
-
Flags
- URG: urgent pointer - dringend
- ACK: Bestätigung wird mitverschickt
- PSH: Daten werden nicht gepuffert, sondern sofort verarbeitet
- RST: Verbindung wird zurückgesetzt. V.a. bei Übertragungsfehlern, beim ungültigen Segment oder beim Zurückweisen einer Verbindung
- SYN: Verbindungsaufbau
- FIN: Verbindungsende
- Window: Anzahl der Bytes die in beide Richtungen gesendet werden dürfen, Ist z.B. das Feld auf 0 gesetzt so heißt das das Pakete bis zur Acknowledgement number minus Eins empfangen wurden, aber der Empfänger nun keine Daten mehr empfangen kann. Ein Paket mit gleicher Acknowledgement number und einem Wert ungleich Null bedeutet eine Wiederaufnahme des Empfanges.
- Checksum: Enthält eine algorithmisch erzeugte Summe anhand der die Daten auf ihre Richtigkeit überprüft werden.
- Urgent Pointer: weist zusammen mit der Sequenznummer auf die Stelle hin, in der dringende Daten abgelegt sind.
- Options: weitere Felder, u.a. für die maximale Segmentgröße.
- Padding: sichert die Headerlänge von max. 32Bit und den Anfang der eigentlichen Daten.
Ports:
- Well known Ports: 0 bis 1023 werden von der IANA bestimmt, sind fest und sind nur vom System nutzbar (FTP: 21, SSH: 22, TELNET:23, SMTP: 24, HTTP: 80)
- Registered Ports: 1024 bis 49151 ebenfalls von der IANA verwaltet, können von Entwicklern beantragt werden und auf USER-Ebene nutzbar (MS SQL: 1433, MySQL: 3306)
- Dynamic/Private Ports: 49152 bis 65535 keine Kontrolle
Folgende häufig benutzten TCP bzw. UDP-Ports sind standardisiert:
| Service | Port | Typ | Beschreibung |
|---|---|---|---|
| ftp-data | 20 | TCP | FTP File-Transfer (Daten) |
| ftp | 21 | TCP | FTP / File-Transfer (Steuerung) |
| telnet | 23 | TCP | Telnet |
| smtp | 25 | TCP | SMTP / Simple Mail Transfer Protocol |
| nicname | 43 | TCP | Who is |
| nicname | 43 | UDP | Who is |
| domain | 53 | TCP | DNS / Domain Name Server |
| domain | 53 | UDP | DNS / Domain Name Server |
| sqln | 66 | TCP | Oracle SQL Net |
| tftp | 69 | UDP | Trivialer File-Transfer |
| gopher | 70 | TCP | Gopher |
| gopher | 70 | UDP | Gopher |
| finger | 79 | TCP | Finger |
| finger | 79 | UDP | Finger |
| www-http | 80 | TCP | World Wide Web HTTP |
| kerberos | 88 | TCP | Kerberos |
| kerberos | 88 | UDP | Kerberos |
| pop3 | 108 | TCP | POP3 / Post Office Protocol - Version 3 |
| pop3 | 109 | TCP | POP3 / Post Office Protocol - Version 3 |
| pop3 | 110 | TCP | POP3 / Post Office Protocol - Version 3 |
| sunrpc | 111 | TCP | SUN Remote Procedure Call (RPC) |
| sunrpc | 111 | UDP | SUN Remote Procedure Call (RPC) |
| auth | 113 | TCP | Authentication Service |
| auth | 113 | UDP | Authentication Service |
| nntp | 119 | TCP | Network News Transfer Protocol |
| ntp | 123 | TCP | Network Time Protocol |
| ntp | 123 | UDP | Network Time Protocol |
| dce | 135 | TCP | WINS und DHCP bei Windows NT |
| nbs | 137 | TCP | NetBIOS |
| nbs | 138 | TCP | NetBIOS |
| nbs | 139 | TCP | NetBIOS |
| snmp | 161 | TCP | SNMP / Simple Network Management Protocol |
| snmptrap | 162 | TCP | SNMPTRAP / SNMP-Störungsmeldung |
| appltlk | 201 | TCP | AppleTalk-Network |
| appltlk | 202 | TCP | AppleTalk-Network |
| appltlk | 203 | TCP | AppleTalk-Network |
| appltlk | 204 | TCP | AppleTalk-Network |
| appltlk | 205 | TCP | AppleTalk-Network |
| appltlk | 206 | TCP | AppleTalk-Network |
| appltlk | 207 | TCP | AppleTalk-Network |
| appltlk | 208 | TCP | AppleTalk-Network |
| imap3 | 220 | TCP | IMAP / Interactiv Mail Access Protocol |
| imap3 | 220 | UDP | IMAP / Interactiv Mail Access Protocol |
| exe | 512 | TCP | Remote Process Execution |
| login | 513 | TCP | Remote Login |
| who | 513 | UDP | Remote Who is (rwhod) |
| cmd | 514 | TCP | Remote Command (rsh) |
| syslog | 514 | UDP | System Logging Facility |
| printer | 515 | TCP | LPD / Drucker-Spooler |
| talk | 517 | TCP | Terminal / Terminal-Chat |
| talk | 517 | UDP | Terminal / Terminal-Chat |
| ntalk | 518 | TCP | Aktuellere Version von Terminal / Terminal-Chat |
| ntalk | 518 | UDP | Aktuellere Version von Terminal / Terminal-Chat |
| router | 520 | UDP | RIP / Routing Information Protocol |
| uucp | 540 | TCP | UNIX to UNIX Copy |
| uucp | 540 | UDP | UNIX to UNIX Copy |
| uucp-rlogin | 541 | TCP | Variante von UNIX to UNIX Copy |
| uucp-rlogin | 541 | UDP | Variante von UNIX to UNIX Copy |
| klogin | 543 | TCP | Login mit Kerberos-Ticket |
| klogin | 543 | UDP | Login mit Kerberos-Ticket |
| pmd | 1642 | TCP | PortMaster daemon in.pmd |
| pmconsole | 1643 | TCP | PortMaster Console Protocol |
| radius | 1645 | UDP | RADIUS / Remote Authentication Dial In User Service |
| radacct | 1646 | UDP | RADIUS Accounting |
| gnutella | 3646 | TCP | Gnutella - Peer-to-Peer-Server (MP3) |


















TCP



