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.
Die Protokolle von
TCP:
| |
|
|
|
|
|
|
|
|
|
|
|
|
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 |
Ü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) |
siehe auch: ►
Kapitel IP - Protokoll