Общая структура кадра:
MAC |
LLC |
IP |
TCP |
HTTPS |
Формат MAC заголовка:
·
Preamble (7байт + 1байт)
·
Destination
Address
·
Source
Address
·
Length
Формат LLC заголовка:
Флаги используются на
уровне MAC
для определения границ кадра LLC
Формат IP заголовка
0 |
1 |
2 |
3 |
||||||||||||||||||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Версия |
IHL |
Тип обслуживания |
Длина пакета |
||||||||||||||||||||||||||||
Идентификатор |
Флаги |
Смещение фрагмента |
|||||||||||||||||||||||||||||
Число переходов (TTL) |
Протокол |
Контрольная сумма заголовка |
|||||||||||||||||||||||||||||
IP-адрес отправителя (32 бита) |
|||||||||||||||||||||||||||||||
IP-адрес получателя (32 бита) |
|||||||||||||||||||||||||||||||
Параметры (до 320 бит) |
Данные (до 65535 байт
минус заголовок) |
||||||||||||||||||||||||||||||
Version – версия протокола, к которому принадлежит
дейтаграмма.
IHL – поле для хранения переменной
длины заголовка (5x4B[20B] – 15[60B])
Type of Service – для
различения классов обслуживания. Состоит из трёхразрядного поля Precedence (приоритет) и флагов D, T, R , C(задержка, пропускная способность, надёжность, мин.
стоимость).
Total Length – длина
всей дейтаграммы, включая заголовок и данные. Макс.: 65536
Identification – позволяет
хосту-получателю определить, какой дейтаграмме принадлежат полученные им фрагменты.
Все фрагменты одной дейтаграммы имеют один и тот же ID.
Flags – 3 бита флагов. Первый бит
должен быть всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и
третий бит MF (more fragments) показывает, не является ли этот пакет последним в цепочке пакетов.
Fragment Offset – смещение
фрагмента указывает положение фрагмента в исходной дейтаграмме.
Time of live – счётчик,
ограничивающий время жизни пакета.
Protocol – сообщает, какому процессу
транспортного уровня передать дейтаграмму (TCP, UDP, ...).
Header Checksum – контрольная
сумма, защищающая заголовок от ошибок.
Source Address & Destination Address – номер сети и номер хоста отправителя и получателя.
Option & Padding – необязательная
часть, возможно, будет использоваться в след. версиях протокола.
Формат TCP заголовка:
Бит |
0 - 3 |
4 - 9 |
10 - 15 |
16 - 31 |
0 |
Порт источника |
Порт назначения |
||
32 |
Номер последовательности |
|||
64 |
Номер подтверждения |
|||
96 |
Смещение данных |
Зарезервировано |
Флаги |
Окно |
128 |
Контрольная сумма |
Указатель важности |
||
160 |
Опции и заполнение (необязательное) |
|||
160/192+ |
Данные |
Номер порта отправителя и Номер порта получателя – являются идентификаторами локальных конечных
точек соединения. Номер порта вместе с IP-адресом хоста образуют уникальный
48-битный идентификатор конечной точки. Пара таких идентификаторов, относящихся
к источнику и приёмнику, однозначно определяют соединение.
Порядковый номер и Номер подтверждения – порядковый номер TCP-cегмента и номер
подтверждения, относящийся к следующему ожидаемому байту.
Смещение – Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а
максимальный - 15, что составляет 20 и 60 байт соответственно. Смещение
считается от начала заголовка TCP.
Резерв – зарезервировано для будущего использования и должны устанавливаться в
ноль.
URG – устанавливается,
если используется указатель важности, содержащий
смещение в байтах от текущего порядкового номера байта до места расположения
срочных данных. Таким образом в протоколе TCP реализуются прерывающие
сообщения.
ACK – устанавливается, если поле номер подтверждения содержит осмысленные данные.
PSH – push-флаг, при помощи которого отправитель просит получателя доставить данные
приложению сразу по получении пакета, а не хранить их в буфере, пока тот не
наполнится.
RST – используется для сброса состояния соединения, которое из-за сбоя хоста или
по другой причине попало в тупиковую ситуацию. Кроме того, он используется для
отказа от неверного сегмента или попытки создать соединение.
SYN – признак сообщения; синхронизация номеров последовательности (используется
при установки соединения).
FIN - используется для разрыва соединения.
Он указывает на то, что у отправителя больше нет данных для передачи.
Окно – сообщает, сколько байт может быть послано после байта, получившего
подтверждение. Значение этого поля может быть равно нулю, что означает, что все
байты вплоть до номера подтверждения
получены, но у получателя в данный момент какие-то проблемы, и остальные байты
он пока принять не может.
Указатель важности (URGENT POINTER) – используется совместно с кодовым битом URG, указывает на 1B данных, которые необходимо
срочно принять, несмотря на возможное переполнение буфера (2B).
Контрольная сумма – Поле контрольной суммы - это 16-битное
дополненение суммы всех 16-битных слов заголовка и текста. Если сегмент
содержит нечетное число октетов в заголовке /или тексте, последние октеты
дополняются справа 8 нулями для выравнивания по 16-битовой границе. Биты
заполнения (0) не передаются в сегменте и служат только для расчета контрольной
суммы. При расчете контрольной суммы значение самого поля контрольной суммы
принимается равным 0.
Опции и заполнение – предоставляет дополнительные возможности, не
покрываемые стандартным заголовком. С помощью одного из таких полей каждый хост
может указать максимальный размер поля полезной нагрузки, который он может
принять (по умолчанию 536 байт).