TCP/IP
Für die technisch Interessierten möchten wir hier gerne eine Reihe von technischen Details zum Aufbau von TCP/IP Paketen zeigen. Diese Informationen sind keineswegs vollständig, bieten aber sicher den einen oder anderen Anhaltspunkte für eine weitere Vertiefung.
Sollten Sie Fragen oder Ergänzungen haben, die auf diesen Seiten nicht erläutert werden, so bedienen Sie sich bitte unseres Formulars.
Eine Textdatei mit der vollständigen Paket-Analyse steht Ihnen ebenfalls zur Verfügung.
Bitte beachten Sie, dass diese Seite zu Ihrer freien Verfügung steht und gemäß der GNU Free Documentation License verwendet werden kann. (Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License Version 1.1.).
- Einleitung
- Das 1. Paket (Verbindungsaufbau)
- Das 2. Paket (Verbindungsaufbau)
- Das 3. Paket (Verbindungsaufbau)
- Zusammenfassung des Verbindungsaufbaus
- Das 4. Paket (SMTP-Begrüßung)
- Das 5. Paket (SMTP-Begrüßung)
- Das 6. Paket (SMTP-Identifikation)
- Das 7. Paket (SMTP-Identifikation)
- Das 8. Paket (SMTP-Identifikation)
- Das 9. Paket (SMTP-Identifikation)
- Das 10. Paket (SMTP-Abschluss)
- Das 11. Paket (SMTP-Abschluss)
- Das 12. Paket (SMTP-Abschluss)
- Zusammenfassung der SMTP-Sitzung
- Das 13. Paket (Verbindungsabbau)
- Das 14. Paket (Verbindungsabbau)
- Das 15. Paket (Verbindungsabbau)
- Zusammenfassung des Verbindungsabbaus
- Empfohlene Literatur
Einleitung
Sobald ein E-Mail Programm die Verbindung zu seinem Mail-Server aufnimmt, um z.B. eine E-Mail zu versenden, tauschen Client und Server eine Reihe von Informationen aus, die über eine TCP/IP-Verbindung in Form von Paketen versandt werden. Zur Erläuterung dieser Pakete soll eine einfache und nutzlose Kommunikation zwischen einem Client-Rechner und dem Mailserver mail.zeitform.de
zu Grunde gelegt werden:
Client: telnet mail.zeitform.de 25 Server: 220 mail.zf2.de ESMTP Client: helo world Server: 250 mail.zf2.de Client: quit Server: 221 mail.zf2.de Verbindung beendet.
Die beispielhafte Sitzung zeigt eine telnet-Verbindung an den SMTP-Port (25) des Mailservers. Dieser antwortet standardkonform mit seinem Namen und dem String »ESMTP«, um seine erweiterten Fähigkeiten anzuzeigen. Der Client sendet einen Identifizierungsstring »HELO world«, den der Server erfolgreich quittiert. Schließlich wird die Sitzung durch »QUIT« beendet.
Das 1. Paket (Verbindungsaufbau)
Das erste von 15 TCP/IP-Paketen der Sitzung wird vom Client an den Server geschickt und hat den folgenden Inhalt (hexadezimal mit teilweiser ASCII-Darstellung):
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 003c 0000 4000 4006 391d 928c 0879 928c .<..@.@.9....y.. 20 d40d c566 0019 5ef4 de77 0000 0000 a002 ...f..^..w...... 30 16d0 cf35 0000 0204 05b4 0402 080a 4a2d ...5..........J- 40 1349 0000 0000 0103 0300 .I........
Der hervorgehobene Teil des Paketes stellt den IP-Teil der Nachricht dar. Er beinhaltet neben der Versions-Nummer, der Länge des Kopfes, der Lebensdauer und anderen hier nicht weiter beschriebenen Daten auch Informationen über das Protokoll (»06
« für TCP) und die IP-Adressen der beteiligten Rechner (»928c 0879
« für den Client und »928c d40d
« für den Server).
IP-Header sind immer nach dem folgenden Schema aufgebaut:
Version (4bit) | Headerlänge (4bit) | TOS (8bit) | Blocklänge (16bit) | ||||
Identifikation (16bit) | Flags (3bit) | Fragmentierungsoffset (13bit) | |||||
Lebensdauer (8bit) | Protokoll (8bit) | Checksumme (16bit) | |||||
Quelladresse (32bit) | |||||||
Zieladresse (32bit) | |||||||
Daten (TCP- oder UDP-Block; variabel) |
Der verbleibende Teil des Paketes ist eine TCP-Nachricht, die folgende Informationen enthält (im folgenden wird nur noch der TCP-Teil der Pakete hervorgehoben):
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 003c 0000 4000 4006 391d 928c 0879 928c .<..@.@.9....y.. 20 d40d c566 0019 5ef4 de77 0000 0000 a002 ...f..^..w...... 30 16d0 cf35 0000 0204 05b4 0402 080a 4a2d ...5..........J- 40 1349 0000 0000 0103 0300 .I........
Der verbleibende Teil des Paketes ist eine TCP-Nachricht, die folgende Informationen enthält:
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de77 (1593106039) |
Bestätigungsnummer: | 0000 0000 (keine) |
Header-Länge: | a0 (40 bytes) |
Flags: | 02 (SYN, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | cf35 |
Optionen (hier nicht beschrieben): | 0204 05b4 0402 080a 4a2d 1349 0000 0000 0103 0300 |
TCP-Header sind immer nach dem folgenden Schema aufgebaut:
Quellport (16bit) | Zielport (16bit) | ||||||
Sequenznummer (32bit) | |||||||
Bestätigungsnummer (32bit) | |||||||
Headerlänge (4bit) | reserviert (4bit) | Flags (8bit) | Fenstergröße (16bit) | ||||
Checksumme (16bit) | Dringlichkeitszeiger (16bit) | ||||||
Optionen (variabel) | |||||||
Daten (variabel) |
Der Wert der Flag-Informationen setzt sich aus einzelnen Bits zusammen, die bestimmte Zustände des Paketes signalisieren:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...0 .... = Acknowledgment: Not set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set
Das SYN-Bit - gleichzeitig die einzige interessante Information des ersten Paketes vom Client an den Server - ist eine Art »Anfrage«, es fordert die Gegenstelle auf, das Paket zu beantworten. Informationen zum SMTP-Protokoll enthält dieses erste Paket nicht.
Das 2. Paket (Verbindungsaufbau)
Das zweite Paket ist die Antwort des Servers auf die Verbindungsanfrage des Clients:
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 003c c961 4000 3e06 71bb 928c d40d 928c .<.a@.>.q....... 20 0879 0019 c566 5ef0 f57b 5ef4 de78 a012 .y...f^..{^..x.. 30 7bfc 21c6 0000 0204 0564 0402 080a 06c2 {.!......d...... 40 ed53 4a2d 1349 0103 0300 .SJ-.I....
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f57b (1592849787) |
Bestätigungsnummer: | 5ef4 de78 (1593106040) |
Header-Länge: | a0 (40 bytes) |
Flags: | 02 (SYN + ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | 21c6 |
Optionen (hier nicht beschrieben): | 0204 0564 0402 080a 06c2 ed53 4a2d 1349 0103 0300 |
Die Bestätigungsnummer ist bei dieser Antwort auf den Wert 1593106040 gesetzt und bestimmt die Sequenznummer der folgenden Nachricht. Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set
Durch das ACK-Bit wird das vorherige Paket (SYN-Bit) beantwortet und durch das erneute Senden eines SYN-Bits fordert nun seinerseits der Server eine Bestätigung vom Client.
Das 3. Paket (Verbindungsaufbau)
Das dritte Paket ist die Antwort des Clients auf die Verbindungsanfrage des Servers:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0034 0000 4000 4006 3925 928c 0879 928c .4..@.@.9%...y.. 20 d40d c566 0019 5ef4 de78 5ef0 f57c 8010 ...f..^..x^..|.. 30 16d0 b567 0000 0101 080a 4a2d 1349 06c2 ...g......J-.I.. 40 ed53 .S
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de78 (1593106040) |
Bestätigungsnummer: | 5ef0 f57c (1592849788) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | b567 |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 1349 06c2 ed53 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Durch das ACK-Bit wird das vorherige Paket (SYN-Bit) beantwortet. Der Verbindunsaufbau ist damit beendet. Der SMTP-Server kann mit dem Senden von Daten (zuerst seines Begrüßungstextes) beginnen.
Zusammenfassung des Verbindungsaufbaus
Die ersten drei Pakete der betrachteten TCP/IP-Sitzung dienen dem Verbindungsaufbau in Vorbereitung des folgenden Nachrichtenaustauschs auf der Ebene des SMTP-Protokolls. Der Client fordert die nötige Verbindung (Port 25) an, erhält eine Bestätigung und beantwortet diese wiederum:
Client → Server: | Anforderung einer TCP-Verbindung an Port 25 (SMTP) |
Server → Client: | ACK (bestätigt), Bitte um Bestätigung |
Client → Server: | ACK (bestätigt), warte auf das Senden von Daten |
Das 4. Paket (SMTP-Begrüßung)
Nach dem Verbindungsaufbau beginnt der Server die SMTP-Sitzung mit dem Senden seines Begrüßungstextes an den Client.
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 004b c966 4000 3e06 71a7 928c d40d 928c .K.f@.>.q....... 20 0879 0019 c566 5ef0 f57c 5ef4 de78 8018 .y...f^..|^..x.. 30 7bfc 0216 0000 0101 080a 06c2 ed53 4a2d {............SJ- 40 1349 3232 3020 6d61 696c 2e7a 6632 2e64 .I220 mail.zf2.d 50 6520 4553 4d54 500d 0a e ESMTP..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f57c (1592849788) |
Bestätigungsnummer: | 5ef4 de78 (1593106040) |
Header-Länge: | 80 (32 bytes) |
Flags: | 18 (PSH + ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | 0216 |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 ed53 4a2d 1349 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Alle folgenden Pakete haben ein gesetztes ACK-Bit, um gleichzeitig mit dem Senden von Daten auch die zuvor erhaltene Nachricht zu bestätigen. Das PSH-Bit (Push) fordert die Gegenstelle auf, die vorhandenen Daten sofort zu senden, selbst wenn der Nachrichten-Puffer noch nicht voll ist.
Dieses Paket enthält die ersten SMTP-Daten (den Server-Begrüßungsstring):
220 mail.zf2.de ESMTP
Das 5. Paket (SMTP-Begrüßung)
Der Client bestätigt dem Server zunächst nur den Erhalt der Begrüßungsmeldung:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0034 0000 4000 4006 3925 928c 0879 928c .4..@.@.9%...y.. 20 d40d c566 0019 5ef4 de78 5ef0 f593 8010 ...f..^..x^..... 30 16d0 b550 0000 0101 080a 4a2d 1349 06c2 ...P......J-.I.. 40 ed53 .S
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de78 (1593106040) |
Bestätigungsnummer: | 5ef0 f593 (1592849811) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | b550 |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 1349 06c2 ed53 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Das 6. Paket (SMTP-Identifizierung)
Der Client sendet dem Server nun seine Identifizierung (»HELO
«):
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0040 0000 4000 4006 3919 928c 0879 928c .@..@.@.9....y.. 20 d40d c566 0019 5ef4 de78 5ef0 f593 8018 ...f..^..x^..... 30 16d0 d295 0000 0101 080a 4a2d 17c3 06c2 ..........J-.... 40 ed53 6865 6c6f 2077 6f72 6c64 0d0a .Shelo world..
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de78 (1593106040) |
Bestätigungsnummer: | 5ef0 f593 (1592849811) |
Header-Länge: | 80 (32 bytes) |
Flags: | 18 (PSH + ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | d295 |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 17c3 06c2 ed53 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Dieses Paket enthält die SMTP-Daten zur Identifizierung:
helo world
Das 7. Paket (SMTP-Identifizierung)
Der Server bestätigt den Erhalt der Identifizierung:
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 0034 c9d7 4000 3e06 714d 928c d40d 928c .4..@.>.qM...... 20 0879 0019 c566 5ef0 f593 5ef4 de84 8010 .y...f^...^..... 30 7bfc 4724 0000 0101 080a 06c2 f1cd 4a2d {.G$..........J- 40 17c3 ..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f593 (1592849811) |
Bestätigungsnummer: | 5ef4 de84 (1593106052) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | 4724 |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 f1cd 4a2d 17c3 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Das 8. Paket (SMTP-Identifizierung)
Nun sendet der Server seine SMTP-Bestätigung und signalisiert dem Client die erfolgreiche Identifizierung. Der Client kann mit dem Versenden von E-Mails beginnen:
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 0045 c9d8 4000 3e06 713b 928c d40d 928c .E..@.>.q;...... 20 0879 0019 c566 5ef0 f593 5ef4 de84 8018 .y...f^...^..... 30 7bfc dbc9 0000 0101 080a 06c2 f1cd 4a2d {.............J- 40 17c3 3235 3020 6d61 696c 2e7a 6632 2e64 ..250 mail.zf2.d 50 650d 0a e..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f593 (1592849811) |
Bestätigungsnummer: | 5ef4 de84 (1593106052) |
Header-Länge: | 80 (32 bytes) |
Flags: | 18 (PSH + ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | dbc9 |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 f1cd 4a2d 17c3 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Dieses Paket enthält die SMTP-Daten zur Bestätigung der Identifizierung:
250 mail.zf2.de
Das 9. Paket (SMTP-Identifizierung)
Der Client bestätigt den Erhalt der Identifizierungsbestätigung:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0034 0000 4000 4006 3925 928c 0879 928c .4..@.@.9%...y.. 20 d40d c566 0019 5ef4 de84 5ef0 f5a4 8010 ...f..^...^..... 30 16d0 ac3f 0000 0101 080a 4a2d 17c3 06c2 ...?......J-.... 40 f1cd ..
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de84 (1593106052) |
Bestätigungsnummer: | 5ef0 f5a4 (1592849828) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | ac3f |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 17c3 06c2 f1cd |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Das 10. Paket (SMTP-Abschluss)
Statt nun - wie üblich - mit dem Senden von E-Mail zu beginnen, sendet der Client die Anforderung zum Beenden der SMTP-Sitzung:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 003a 0000 4000 4006 391f 928c 0879 928c .:..@.@.9....y.. 20 d40d c566 0019 5ef4 de84 5ef0 f5a4 8018 ...f..^...^..... 30 16d0 c2f7 0000 0101 080a 4a2d 1909 06c2 ..........J-.... 40 f1cd 7175 6974 0d0a ..quit..
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de84 (1593106052) |
Bestätigungsnummer: | 5ef0 f5a4 (1592849828) |
Header-Länge: | 80 (32 bytes) |
Flags: | 18 (PSH + ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | c2f7 |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 1909 06c2 f1cd |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Dieses Paket enthält die SMTP-Daten zur Beendigung der SMTP-Sitzung:
quit
Das 11. Paket (SMTP-Abschluss)
Die Anforderung des Clients zur Beendigung der Sitzung wird vom Server bestätigt:
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 0045 c9df 4000 3e06 7134 928c d40d 928c .E..@.>.q4...... 20 0879 0019 c566 5ef0 f5a4 5ef4 de8a 8018 .y...f^...^..... 30 7bfc d82a 0000 0101 080a 06c2 f312 4a2d {..*..........J- 40 1909 3232 3120 6d61 696c 2e7a 6632 2e64 ..221 mail.zf2.d 50 650d 0a e..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f5a4 (1592849828) |
Bestätigungsnummer: | 5ef4 de8a (1593106058) |
Header-Länge: | 80 (32 bytes) |
Flags: | 18 (PSH + ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | d82a |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 f312 4a2d 1909 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Dieses Paket enthält die SMTP-Daten zum Beenden der SMTP-Sitzung:
221 mail.zf2.de
Das 12. Paket (SMTP-Abschluss)
Der Client sendet eine Bestätigung über den Erhalt des SMTP-Abschlusses:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0034 0000 4000 4006 3925 928c 0879 928c .4..@.@.9%...y.. 20 d40d c566 0019 5ef4 de8a 5ef0 f5b5 8010 ...f..^...^..... 30 16d0 a99d 0000 0101 080a 4a2d 1909 06c2 ..........J-.... 40 f312 ..
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de8a (1593106058) |
Bestätigungsnummer: | 5ef0 f5b5 (1592849845) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | a99d |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 1909 06c2 f312 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Zusammenfassung der SMTP-Sitzung
Nach dem Senden des Begrüßungsstrings durch den Server identifiziert sich der Client und beendet sofort die Verbindung:
Server → Client: | ACK (bestätigt), Begrüßung durch 220 mail.zf2.de ESMTP |
Client → Server: | ACK (bestätigt), Begrüßung erhalten |
Client → Server: | ACK (bestätigt), Identifizierung durch helo world |
Server → Client: | ACK (bestätigt), Identifizierung erhalten |
Server → Client: | ACK (bestätigt), Bereitschaft zum Empfang von Emails durch 250 mail.zf2.de |
Client → Server: | ACK (bestätigt), Bereitschaft erhalten |
Client → Server: | ACK (bestätigt), Abschluss der Sitzung durch quit |
Server → Client: | ACK (bestätigt), Abschluss der Sitzung erhalten durch 221 mail.zf2.de |
Client → Server: | ACK (bestätigt), Abschluss der Sitzung erhalten |
Das 13. Paket (Verbindungsabbau)
Der Server beginnt mit dem Verbindungsabbau:
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 0034 c9e0 4000 3e06 7144 928c d40d 928c .4..@.>.qD...... 20 0879 0019 c566 5ef0 f5b5 5ef4 de8a 8011 .y...f^...^..... 30 7bfc 4470 0000 0101 080a 06c2 f312 4a2d {.Dp..........J- 40 1909 ..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f5b5 (1592849845) |
Bestätigungsnummer: | 5ef4 de8a (1593106058) |
Header-Länge: | 80 (32 bytes) |
Flags: | 11 (ACK + FIN, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | 4470 |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 f312 4a2d 1909 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...1 = Fin: Set
Das FIN-Bit kennzeichnet das Ende einer TCP-Verbindung. Die Gegenstelle muss eine Nachricht mit gesetztem FIN-Bit bestätigen, bevor die Verbindung getrennt wird.
Das 14. Paket (Verbindungsabbau)
Der Client bestätigt die Anforderung zum Verbindungsabbau:
0 0000 0c07 ac0c 0048 5412 f5be 0800 4500 .......HT.....E. 10 0034 0000 4000 4006 3925 928c 0879 928c .4..@.@.9%...y.. 20 d40d c566 0019 5ef4 de8a 5ef0 f5b6 8011 ...f..^...^..... 30 16d0 a99b 0000 0101 080a 4a2d 1909 06c2 ..........J-.... 40 f312 ..
Quellport: | c566 (50435) |
Zielport: | 0019 (25 = SMTP) |
Sequenznummer: | 5ef4 de8a (1593106058) |
Bestätigungsnummer: | 5ef0 f5b6 (1592849846) |
Header-Länge: | 80 (32 bytes) |
Flags: | 11 (ACK + FIN, siehe unten) |
Fenster-Größe: | 16d0 (5840) |
Checksumme: | a99b |
Optionen (hier nicht beschrieben): | 0101 080a 4a2d 1909 06c2 f312 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...1 = Fin: Set
Die Bestätigung des Clients enthält ebenfalls ein gesetztes FIN-Bit.
Das 15. Paket (Verbindungsabbau)
Die Verbindung wird getrennt.
0 0048 5412 f5be 0004 27a7 d4c2 0800 4500 .HT.....'.....E. 10 0034 c9e1 4000 3e06 7143 928c d40d 928c .4..@.>.qC...... 20 0879 0019 c566 5ef0 f5b6 5ef4 de8b 8010 .y...f^...^..... 30 7bfc 446f 0000 0101 080a 06c2 f312 4a2d {.Do..........J- 40 1909 ..
Quellport: | 0019 (25 = SMTP) |
Zielport: | c566 (50435) |
Sequenznummer: | 5ef0 f5b6 (1592849846) |
Bestätigungsnummer: | 5ef4 de8b (1593106059) |
Header-Länge: | 80 (32 bytes) |
Flags: | 10 (ACK, siehe unten) |
Fenster-Größe: | 7bfc (31740) |
Checksumme: | 446f |
Optionen (hier nicht beschrieben): | 0101 080a 06c2 f312 4a2d 1909 |
Die Flag-Informationen sehen wie folgt aus:
0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set
Der Server bestätigt den Erhalt der Abschluss-Nachricht des Clients (FIN) und beendet die Verbindung.
Zusammenfassung des Verbindungsabbaus
Analog zum Verbindungsaufbau wird auch der Verbindungsabbau vom Server eingeleitet und wechselseitig bestätigt (FIN-Bit).
Server → Client: | ACK (bestätigt), FIN = Verbindungsabbau |
Client → Server: | ACK (bestätigt), FIN bestätigen und senden |
Server → Client: | ACK (bestätigt), FIN bestätigen |
Empfohlene Literatur
- RFC 791: Internet Protocol
- RFC 793: Transmission Control Protocol
- RFC 768: User Datagram Protocol
- RFC 792: Internet Control Message Protocol
- RFC 1180: A TCP/IP Tutorial
- RFC 1122: Requirements for Internet Hosts - Communication Layers
- RFC 1700: Assigned Numbers
- RFC 2821: Simple Mail Transfer Protocol
- RFC 2554: SMTP Service Extension for Authentication
- RFC 2505: Anti-Spam Recommendations for SMTP MTAs
- TCP/IP FAQ; Frequently Asked Questions
- O. Kirch - The Network Administrators' Guide
- J. Drake - Linux Networking HOWTO
- O. Kirch - Linux - Wegweiser für Netzwerker (O'Reilly) - (bei Amazon.de bestellen)
- C. Hunt - TCP/IP Netzwerk-Administration (O'Reilly) - (bei Amazon.de bestellen)
- C. Hunt - TCP/IP Netzanbindung von PCs (O'Reilly) - (bei Amazon.de bestellen)
- D. J. Bernstein - Internet Mail
- D. Wood - Programming Internet Email (O'Reilly) - (bei Amazon.de bestellen)
- B. Costales/E. Allman - sendmail, 2nd Edition (O'Reilly) - (bei Amazon.de bestellen)
- A. Schwartz/S. Garfinkel - Stopping Spam (O'Reilly) - (bei Amazon.de bestellen)
- Claus Aßmann - Links to e-mail related informations
- eMailman - electronic superhero(sm)
- G. Aznar - The Linux Electronic Mail Administrator HOWTO
Bitte beachten Sie auch die Literaturhinweise innerhalb der genannten RFCs.
Sie können die oben aufgeführten Bücher durch Anklicken des Links »bei Amazon.de bestellen« direkt bestellen. Bitte beachten Sie dabei, dass Sie uns damit eine Werbeprovision von 7,5% des Verkaufspreises zukommen lassen. Für Sie entstehen keine zusätzlichen Kosten. Vielen Dank.