Приключилось мне сегодня впервые задействовать утилиту tcpdump. Освоил азы работы с этой программкой, а также на практике пощупал структуры Ethernet-фреймов, а также IP и CARP пакетов.
Хочу сказать, что утилита tcpdump и сама по себе способна выдавать некоторые сведения о сетевых пакетах, в том числе и о протоколе CARP, к примеру в такой форме:
# tcpdump -env -c1 -v -i em1 proto carp tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size 96 bytes 17:38:42.373244 00:00:5e:00:01:74 > 01:00:5e:48:2c:59, ethertype IPv4 (0x0800), length 70: (tos 0x10, ttl 255, id 9851, offset 0, flags [DF], proto VRRP (112), length 56) 83.246.222.22 > 224.0.0.18: VRRPv2, Advertisement, vrid 116, prio 240, authtype none, intvl 1s, length 36, addrs(7): 42.157.168.200,246.209.52.106,174.160.114.135, 223.166.101.125,126.225.201.162,16.217.148.103,149.149.240.151
Однако хотелось мне поближе пощупать, как она работает, и как вообще получаются эти значения.
Итак, я запустил чудесную утилиту tcpdump и вот что мне она выдала:
# tcpdump -w - -c1 -i em1 proto carp | hd 00000000 d4 c3 b2 a1 02 00 04 00 00 00 00 00 00 00 00 00 |................| 00000010 60 00 00 00 01 00 00 00 a4 dc 8a 4d 6b 7c 01 00 |................| 00000020 46 00 00 00 46 00 00 00 01 00 5e 48 2c 59 00 00 |................| 00000030 5e 00 01 75 08 00 45 10 00 38 0a 5f 40 00 ff 70 |................| 00000040 11 b1 53 f6 de 16 e0 00 00 12 21 75 f0 07 00 01 |................| 00000050 7b bf dc 7f 68 a2 11 a9 78 cb e4 76 75 f4 73 2b |................| 00000060 3d a8 3a ff e3 e9 85 0a da 9d 4a 83 ce d7 |..............| 0000006e
Чтобы показать HEX-дамп входных данных, начиная со смещения, к примеру 40, нужно воспользоваться ключиком -s:
# tcpdump -w - -c1 -i em1 proto carp | hd -s 40
Потратив несколько часов на гугление и собирание инфы по крупицам, я пришел к следующей таблице. В ней явно можно видеть уровни модели OSI, и их вложенность – Ethernet-кадр (канальный уровень), в нем IP-пакет (сетевой), в нем CARP-пакет (сложно сказать, какой уровень, но инкапсулируется в IP).
Более подробную информацию по каждому типу заголовка можно узнать, щелкнув по соответствующей ссылке в таблице.
Байты | Описание | Значение в данном случае |
d4 c3 b2 a1 | magic number утилиты tcpdump, определяет очередность байт | little-endian |
02 00 | major version number | 2 |
04 00 | minor version number | 4 |
00 00 00 00 | unused time zone offset | не используется |
00 00 00 00 | unused time stamp accuracy | не используется |
60 00 00 00 | max length of the saved data in packets (capture length), задается параметром tcpdump -s | значение по умолчанию 96 байт (0x60h) |
01 00 00 00 | link-layer type of packets | 1 – Ethernet |
a4 dc 8a 4d | date packet arrived (unixtime) | Thu, 24 Mar 2011 05:54:44 GMT |
6b 7c 01 00 | microseconds packet arrived | 97387 мкс |
46 00 00 00 | number of bytes of data in that file | 70 байт – последует после этого заголовка |
46 00 00 00 | total number of bytes, должно быть больше или равно предыдущего значения | 70 байт |
01 00 5e 48 2c 59 | destination mac | 01:00:5E:48:2C:59 |
00 00 5e 00 01 75 | source mac | 00:00:5E:00:01:75 |
08 00 | EtherType, тип инкапсулируемого протокола | 0x08h – IP |
45 | номер версии; длина заголовка | IPv4 и длина 5 |
10 | Type of Service, ToS | 10 |
00 38 | общая длина IP-пакета | 0x38h = 56 байт |
0a 5f | идентификатор пакета IP | 24330 |
40 00 | флаги протокола ip | |
ff 70 | TTL, номер протокола | TTL 255, proto 122 = vrrp/carp |
11 b1 | контрольная сумма ip-пакета | 0x11B1h |
53 f6 de 16 | source ip | 83.246.222.22 |
e0 00 00 12 | destination ip | 224.0.0.18 |
21 | версия протокола, тип пакета | версия 2 1 – Advertisement |
75 f0 | vrid (или vhid); priority (или advskew) | vhid=117; advskew=240 |
07 | количество IP-адресов, содержащихся в данном adv | 7 ip-адресов |
00 | AuthType | 0=No Authentication |
01 | advbase, интервал синхронизации | 1 секунда |
7b bf dc 7f | Откуда взялись эти IP-адреса, для меня до сих пор остается загадкой. | |
68 a2 11 a9 | ||
78 cb e4 76 | ||
75 f4 73 2b | ||
3d a8 3a ff | ||
e3 e9 85 0a | ||
da 9d 4a 83 | ||
ce d7 | Ethernet CRC | 0xCED7h |
http://sydneycbdrepair.educationalimpactblog.com/20605811/veterinary-cbd-supplier-no-further-a-mystery