:::: MENU ::::

TCP/IP Ethernet(v2) на примере. Часть 3 — IP

Рассмотрим tcp/ip и ethernet протоколы на примере. Для этого я установил соединение c tcp сервером на ПК, через модем GPRS на модеме SIM900(о том как работать с SIM900 смотрите эту статью).

Для отслеживания сетевых пакетов на ПК используется программа анализатор трафика(сниффер) wireshark. Данная программа позволяет не только отслеживать сетевые данные, но и получать полную информацию о пакетах различных протоколов их вложенность и содержание.

ЧАСТЬ 1 —  TCP.

ЧАСТЬ 2 — Ethernet.

ЧАСТЬ 3 — IP.

IP протокол

Через WIRESHARK выловлен такой пакет:

01

 

IP пакет имеет следующую структуру:

13

Рассмотрим все эти поля на примере выловленного пакета.

  • Номер версии протокола IP 0b0100 = 4. Используется IP v4, также встречается более новый IP v6.

  • Длина заголовка 0x5a 0b0101 = 5. Количество 32-битных(4 байтных) слов т.е. 5 * 4байта = 20 байт.

Два эти поля занимают один байт — в wiresharp 0b01000101 = 45.

  • Тип сервиса 0x00.  Показывает тип трафика. Используется для  дифференцированного обслуживания разнотипного трафика.  Изменяя значение этого поля, различные виды трафика можно распределить по приоритетам в очереди.

  • Общая длина 0x34 = 52. Общая длина пакета с учетом заголовка и полей данных. Максимальная длина 65535 байт, но обычно максимальная длина определяется протоколами нижестоящего уровня, в которые вложены IP пакеты (Ethernet). В нашем случае 52 байта — длина пакета IP + длина пакета TCP (данных в данном пакете нет).

  • Идентификатор IP пакета 0x615C = 24924.  Используется для распознания пакетов (при сборе), которые были разбиты при передачи в сети TCP протоколом. Для одной посылки имеет один и тот же номер.

  • Флаги 0x02 = 0b010.  Занимают 3 бита. 1 бит — зарезервирован.  2 бит DF — запрещает маршрутизатору фрагментировать данный пакет. 3 бит MF — указывает, что данный пакет является промежуточным не последним.  0xb010DF=1 запрещена фрагментация в нашем случае.

  • Смещение сегмента 0x00. Задает смещение в байтах этого фрагмента данных относительно поля данных исходного пакета(сборка/разборка сообщения на пакеты). Смещение кратно 8 байтам. В нашем случае нет поля данных — нет смещения.

  • Время жизни 0x80 = 128. Максимальное время в течении которого пакет может перемещаться в сети — задается в секундах. Маршрутизаторы вычитают из этого поля 1 при нахождении в маршрутизаторе данного пакета в течении секунды. Также 1 вычитается, при прохождение пакета через каждый маршрутизатор, даже если время нахождения в этом маршрутизаторе меньше одной секунды. Если время становится нулевым, пакет уничтожается. Современные маршрутизаторы обрабатывают пакеты быстро и время жизни сводится к максимальному количеству маршрутизаторов, через которые может пройти пакет.

  • Протокол верхнего уровня 0x06. Указывает протокол верхнего уровня у данного пакета. (6 — TCP, 17 — UDP, 1 — ICMP).

  • Контрольная сумма заголовка 0x0000. Контрольная сумма рассчитанная только по заголовку. Если 0, как в нашем пакете, то контрольная сумма не учитывается.

  • IP адрес источника 0xC0 0xA8 0x00 0x48 = 192 168 0 72.

  • IP адрес назначения 0xC0 0xA8  0x00 0x54 = 192 168 0 84.

 

 

Номер версии протокола

Длина заголовка
02Тип сервиса

03

Ощая длина

04

Индентификатор пакета

05

Флаги

06

Смещение фрагмента

07Время жизни

08Протокол верхнего уровня

09Контрольная сумма

10IP адрес источника

11IP адрес назначения

12