IPv4
Версия от 21:01, 30 ноября 2016; NikitaMarkovnikov (обсуждение | вклад)
IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет протокола (IP). Описан в IETF в статье RFC 791 (сентябрь 1981 года). Это один из самых используемых интернет протоколов. Был введен в использование в ARPANET в 1983 году.
Функция протокола — передавать дейтаграммы по множеству соединенных сетей.
Рассмотрим формат IPv4-дейтаграмм.
Дейтаграмма состоит из заголовка и основной части (данных). Биты передаются слева направо и сверху вниз (big-endian порядок). В настоящее время ясно, что лучше было бы использовать обратный (little-endian) порядок, но во время создания протокола это не было очевидно. Так на Intel x86 требуется программное преобразование, как при передаче, так и при приеме.
Рассмотрим структуру заголовка:
0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Версия | IHL | Дифференциальное обслуживание (Тип службы) | Полная длина | ||||||||||||||||||||||||||||
Идентификатор | Флаги | Смещение фрагмента | |||||||||||||||||||||||||||||
Время жизни | Протокол | Контрольная сумма заголовка | |||||||||||||||||||||||||||||
IP-адрес источника | |||||||||||||||||||||||||||||||
IP-адрес назначения | |||||||||||||||||||||||||||||||
Опции | Остаток |
- Версия: 4 бита
- Поле Версия содержит версию протокола, к которому принадлежит пакет. В случае IPv4 это 4.
- IHL: 4 бита
- Поле IHL (англ. Internet Header Length) содержит длину заголовка (в нем указано число 32-разрядных слов). Следовательно, оно указывает на начало данных. Минимальное значение длины равно 5. Максимальное — 15, что соответствует заголовку длиной 60 байт. Так, максимальный размер необязательного поля равен 40 байтам.
- Дифференциальное обслуживание (Тип службы): 8 битов
- Изначально это поле называлось Тип службы. По спецификации оно предназначено для различения классов обслуживания. Но поскольку никто не знал, что с ним делать, оно много лет не использовалось. Теперь, когда появилось дифференцированное обслуживание, ему нашли другое применение. Первые 6 бит задают класс обслуживания (DSCP), а в последние 2 помещаются явные уведомления о перегруженности (ECN).
- Полная длина: 16 бит
- Поле Полная длина содержит длину всей дейтаграммы, включая как заголовок, так и данные. Минимальная длина равна 20 байтам. Максимальное допустимое значение равно 65535 байт. Такие длинные дейтаграммы непрактичны для большинства хостов и сетей. Так, все хосты должны уметь принимать дейтаграммы до 576 байтов. Рекоммендуется отправлять дейтаграммы большего размера, только если есть уверенность, что принимающая сторона сможет их обработать.