Межсетевой протокол IPv4: поле “протокол” в заголовке IP-дейтаграммы, его смысл и использование, IP-туннелирование.
4 бита № версии | 4 бита Длина заголовка | 8 бит Тип сервиса | 16 бит Общая длина | |||||||
PR | D | T | R | |||||||
16 бит Идентификатор пакета | 3 бита Флаги | 13 бит Смещение фрагмента | ||||||||
D | M | |||||||||
8 бит Время жизни | 8 бит Протокол верх уровня | 16 бит Контрол сумма | ||||||||
32 бита IP адрес источника | ||||||||||
32 бита IP адрес назначения | ||||||||||
Опции и выравнивание | ||||||||||
Протокол (Protocol) занимает один байт и указывает, какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета (например, это могут быть сегменты протокола TCP, дейтаграммы UDP, пакеты ICMP или OSPF). идентификатор интернет-протокола следующего уровня
Инкапсуляция: данные после пересылки их прикладной программой проходят через все уровни вниз по протокольному стеку, а каждый слой добавляет к спущенным ему данным собственную инфу в виде заголовка (header). Например: TCP-сегмент -> IP-дейтаграмма –> кадр Ethernet.
ДемультиплексированиеПоле Протокол – чтобы узнать что в контейнере. Это константа, которая показывает, что внутри дейтаграммы. На канальномуровне кадр Ethernet смотрит в поле «тип» и решает, куда отдать: ARP, RARP или IP – это уже на межсетевом.IPсмотрит в поле «протокол»и решает, кому отдать: UDP или TCP. Это уже транспортный уровень. Они смотрят в № порта и решают, кому дальше отдать (DNS, SMTP и т.д.) уже на уровне приложений.
Т.е. поле Протокол в IP показывает, кому дальше надо ее отдать.
Внутри IP может лежать другая IP-дейтаграмма – это тоннелирование.В нормальный пакет запихиваем чужеродный и пересылаем, а роутеры запихнутых не видят. Поэтому отфильтровать тоннель очень сложно.надо, чтобы проходить через чужие сети (например, чтобы китайскую машину провезти по Финляндии, ее надо запихнуть в другую, с европейскими номерами).
Значения идентификаторов для различных протоколов приводятся в документе RFC «Assigned Numbers».
49. Межсетевой протокол IPv4: поле “контрольная сумма заголовка” в заголовке IP-дейтаграммы, его смысл и использование.
4 бита № версии | 4 бита Длина заголовка | 8 бит Тип сервиса | 16 бит Общая длина | |||||||
PR | D | T | R | |||||||
16 бит Идентификатор пакета | 3 бита Флаги | 13 бит Смещение фрагмента | ||||||||
D | M | |||||||||
8 бит Время жизни | 8 бит Протокол верх уровня | 16 бит Контрольная сумма | ||||||||
32 бита IP адрес источника | ||||||||||
32 бита IP адрес назначения | ||||||||||
Опции и выравнивание | ||||||||||
Для уменьшения вероятности искажения адресной части пакета, заголовок пакета препровождается проверочной последовательностью - контрольной суммой, занимающей 2 байта и рассчитываемой по всему заголовку.
Корректирующий код: берется все поле, умножается на полином CRC (cyclic redundancy check — циклическая избыточная проверка), получатель тоже * на полином, если CRC не тот же, то данные где-то испорчены. На перегоне содержание дейтаграммы не проверяют, так как сеть должна работать быстро.
Контрольная сумма считается в обратном коде. Значение этого поля сначала устанавливается в 0. Затем выполняется сложение (с циклическим переносом из старшего разряда в младший) всех 16-разрядных слов заголовка, и инвертированное значение результата записывается в поле контрольной суммы: перенос старшего разряда в младший 8+7=15+1=6.
UDP: если в контр. сумме написаны все нули, значит она не инвертирована, а это значит, что контр. сумма не подсчитывалась. Обратно сообщения об ошибках источнику не высылаются, потому что ip-адрес источника содержит 4 байта, весь заголовок 20 байтов, т.е., если отправлять пакет источнику обратно, то 20% ошибок придется только лишь на ip-адрес источника (а это очень много).
Если сообщение не дошло, то осуществляется повторная отправка (retransmission) – это задача не сети, а отправителя. Это задача TCP-протокола, у него есть таймер по истечении времени, он отправляет снова, но до этого рассчитывается мин-ое время доставки дейтаграммы.
Значение Контрольной суммы заголовка должно подсчитываться заново на каждом транзитном участке, так как по крайней мере одно поле постоянно меняется (поле Время жизни).