Next Previous Contents

8. Wie Pakete aussehen

Fuer die aussergewoehnlich Neugierigen (und die neugierigen Ausserge- woehnlichen) ist hier noch eine Beschreibung, wie Pakete genau aussehen. Es gibt verschiedene Tools, die ueberwachen, was fuer Pakete in und aus Deinem Linux-Recher gehen: Das am weitesten verbreitete ist 'tcpdump' (welches heute mehr als nur TCP versteht). Solche Tools sind bekannt als 'Paket Sniffer'.

Der Anfang eines jeden Pakets sagt, wohin es geht, woher es kam, den Typ des Pakets und andere administrative Details. Dieser Teil des Pakets heisst 'Paket Header'. Der andere Teil des Pakets, der die tatsaechlich zu uebermittelnden Daten enthaelt, heisst 'Paket Body'.

Jedes IP-Paket beginnt also mit einem IP-Header, mindestens 20 Byte lang. So sieht es aus (dieses Diagramm schamlos aus RFC 791 entwendet):

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Version|  IHL  |Type of Service|          Gesamtlaenge         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Identifikation        |Flags|      Fragment Offset    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Time to Live |    Protokoll  |         Header Checksum       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Quelladresse                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Zieladresse                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Die wichtigen Felder sind das Protokoll, welches bestimmt, ob es sich um ein TCP-Paket (Nummer 6), ein UDP-Paket (Nummer 17) oder etwas anderes handelt, die Quell-IP-Adresse und die Ziel-IP-Adresse.

Wenn jetzt das Protokollfeld aussagt, dass dieses Paket ein TCP-Paket ist, dann wird diesem IP-Header sofort ein TCP-Header folgen: Der TCP-Header ist ebenfalls mindestens 20 Byte lang:

     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Quellport           |            Zielport           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                          Sequenznummer                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                      Bestaetigungsnummer                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Data |           |U|A|P|R|S|F|                               |
     | Offset|Reserviert |R|C|S|S|Y|I|             Fenster           |
     |       |           |G|K|H|T|N|N|                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Checksumme          |         Urgent Pointer        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Die wichtigsten Felder hier sind der Quellport und der Zielport, welcher sagt, fuer welchen Dienst das Paket geht (oder von welchem es kommt, wenn es ein Antwort-Paket ist). Die Sequenz- und die Bestaetigungsnummer werden verwendet, um die Pakete in der richtigen Reihenfolge zu halten und um dem anderen Ende mitzuteilen, welche Pakete empfangen wurden. Die ACK, SYN, RST und FIN Flags (von oben nach unten geschrieben) sind einzelne Bits, welche benutzt werden, um ueber Beginn (SYN) und Ende (RST oder FIN) einer Verbin- dung zu verhandeln.

Diesem Header folgen nun die eigentlichen Daten, welche die Anwendung geschickt hat (der Paket Body). Ein normales Paket ist bis zu 1500 Byte gross: Das bedeutet, das die Daten maximal 1460 Byte (20 Bytes fuer den IP-Header, und 20 fuer den TCP-Header) einnehmen koennen: ueber 97%.


Next Previous Contents