Next Previous Contents

8. Hogyan néznek ki a csomagok?

Rendkívül furcsa (és furcsán rendkívüli) a leírás arról, hogyan néznek ki a csomagok. Számos eszköz van arra, hogy kövessük a csomagok ki-be érkezését a Linuxodon: a leggyakoribb ezek közül a "tcpdump" (manapság többet tud, mint a TCP), de ennél is szebb az "ethereal". Legtöbb program úgy ismert, mint "packet sniffers".

Kezdetben minden csomag megmondja hová megy, honnan jött, mi a típusa és más adminisztratív részletet. Ezt a részt hívjuk "packet header"-nek. A maradék része a csomagnak tartalmazza az aktuális adatot, amit közvetít, ezt általában "packet body"-nak nevezzük.

Szóval az IP csomag kezdõdik egy "IP header"-rel: legalább 20 byte hosszú. Így néz ki (RFC791-bõl lopott diagram):

  .-------+-------+---------------+-------------------------------.
  |Version|  IHL  |Type of Service|          Total Length         |
  |-------+-------+---------------+-------------------------------|
  |         Identification        |Flags|      Fragment Offset    |
  |---------------+---------------+-------------------------------|
  |  Time to Live |    Protocol   |         Header Checksum       |
  |---------------+---------------+-------------------------------|
  |                       Source Address                          |
  |---------------------------------------------------------------|
  |                    Destination Address                        |
  `---------------------------------------------------------------'

A fontos mezõk a protokollok, amellyel jelölik, vajon a TCP csomag (6-os szám), UDP csomag (17-es szám) vagy valami más, a source IP-cím és a destination IP-cím.

Most, ha a protokoll mezõk azt mondják, ez a TCP csomag, ekkor a TCP header azonnal követi ezt az IP headert: a TCP is legalább 20 byte hosszú:

  .-------------------------------+-------------------------------.
  |          Source Port          |       Destination Port        |
  |-------------------------------+-------------------------------|
  |                        Sequence Number                        |
  |---------------------------------------------------------------|
  |                    Acknowledgment Number                      |
  |-------------------+-+-+-+-+-+-+-------------------------------|
  |  Data |           |U|A|P|R|S|F|                               |
  | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
  |       |           |G|K|H|T|N|N|                               |
  |-------+-----------+-+-+-+-+-+-+-------------------------------|
  |           Checksum            |         Urgent Pointer        |
  `---------------------------------------------------------------'

A legfontosabb mezõk itt a source port és a destination port, amely megmondja, melyik szolgáltatáshoz menjen a csomag (vagy jön, abban az esetben, ha válaszcsomag). A sorozat és a visszaigazolási számok sorban tartják a csomagokat és megmondják a másik vége milyen csomagokat fogadott. Az ACK, SYN, RST és FIN zászlók (fentrõl lefelé írva) egyedüli bit, amely tárgyalja a nyitó (SYN) és záró (RST vagy FIN) csatlakozásokat.

Követve ezt a headert jön az aktuális üzenet, amelyet az Application küldött (packet body). A normál csomag 1500 byte fel és ez jelenti, hogy a legtöbb adatra 1460 byte felmehet (20 byte az IP header és 20 byte a TCP header): közel 97%.


Next Previous Contents