Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Если подполе флага хранит 1, то при каждом попадании по IP-адресу на пустое место будет записываться временная метка, а значение указателя увеличиваться на 8. Когда будет заполнено все предварительно выделенное пространство, значение подполя переполнения увеличивается на единицу и запись меток прекращается. Предположим, что отправитель хочет записать временные метки для списка предварительно выбранных узлов. В этом случае в поле флага нужно указать 3 и заполнить список выбранных адресов интернета. Если в текущий момент указатель установлен на адрес маршрутизатора, это устройство заполнит место для временной метки и увеличит значение указателя на 8.
6.16.14 Кодирование Basic и Extended Security Options
Значения этих полей устанавливаются военными и правительственными агентствами. Дополнительные сведения можно получить в RFC 1108.
6.17 Пример заголовка IP
На рис. 6.14 показан результат работы анализатора Sniffer компании Network General для заголовка MAC-кадра сети DIX Ethernet и для заголовка IP.
DLC: - DLC Header -
DLC:
DLC: Frame 14 arrived at 10:26:10.5797; size is 61 bytes
DLC: Destination = Station Sun 076A03, Sun Atlantis
DLC: Source = Station Sun 07FD89, Sun Jupiter
DLC: Ethertype = 0800 (IP)
DLC:
IP: - IP Header -
IP:
IP: Version = 4, header length = 20 bytes
IP: Type of Service = 00
IP: 000. .... = routine
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: Total length =47 bytes
IP: Identification = 4458
IP: Flags = 0X
IP: .0.. .... = may fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to Live = 30 seconds/hops
IP: Protocol = 6 (TCP)
IP: Header checksum = 12F4 (correct)
IP: Source address = [192.42.252.1]
IP: Destination address = [192.42.252.20]
IP: No options
IP:
HEX
MAC Header
06 00 20 07 6A 03 (Destination physical address)
08 00 20 07 FD 89 (Source physical address)
08 00 (Protocol Type for IP)
IP Header
45 00 00 2F (Version, Hdr Length, Prec/TOS, Total Length)
11 6A 00 00 (Identification, Flags, Fragment Offset)
1E 06 12 F4 (Time to Live, Protocol, Header Checksum)
C0 2A FC 01 (Source IP Address)
C0 2A FC 14 (Destination IP Address)
Рис. 6.14. Интерпретация заголовков MAC и IP
Заголовок MAC начинается 6-байтовыми физическими адресами систем источника и назначения. Отметим, что анализатор Sniffer заменяет первые 3 байта каждого физического адреса на соответствующее имя компании — производителя сетевого адаптера (в нашем случае это Sun). Поле типа содержит код X'0800, что означает: "данную информацию доставлять в IP".
На рисунке датаграмма IP следует сразу за коротким MAC-заголовком сети DIX Ethernet. Это кадр стандарта 802.3, а за MAC-заголовком располагаются 8-байтовый заголовок LLC с подзаголовком SNAP.
Размер кадра — 61 байт. В эту величину включается 14-байтовый MAC-заголовок кадра, но не учитывается 4-байтовая завершающая часть MAC, поэтому полный кадр имеет длину 65 байт. Кадры Ethernet или 802.3 для носителя на коаксиальном кабеле должны иметь длину не менее 64 байт, следовательно, кадр едва не стал меньше допустимого минимального размера. Датаграмма кадра имеет общую длину только 47 байт.
Как и многие заголовки IP, рассматриваемый в примере заголовок не содержит вариантов и, следовательно, имеет длину 20 байт. На практике поле Type of Service имеет, как правило, значение 0.
Можно заметить, что датаграмма не является фрагментом более длинной датаграммы, поскольку поле Fragment Offset хранит 0, показывая начало датаграммы, и второй флаг установлен в 0, указывая на ее конец.
Датаграмма зафиксировала информацию о 30 попаданиях в поле TTL. Поле Protocol имеет значение 6, что указывает на доставку датаграммы TCP на хост назначения.
Анализатор Sniffer транслировал IP-адреса источника и назначения в общепринятый формат с точками.
Шестнадцатеричные октеты, создающие исходный заголовок MAC и заголовок IP, показаны в нижней части рисунка. Заданный в Sniffer вывод в шестнадцатеричном формате был заменен на соответствующие, но более простые значения в формате с точками.
6.18 Сценарий обработки датаграммы
Для лучшего понимания работы IP рассмотрим операции по обработке датаграммы в маршрутизаторе и хосте назначения. Выполняемые при этом шаги показаны на рис. 6.15.
Рис. 6.15. Обработке датаграммы
Возникающие проблемы и ошибки приводят обычно к отбрасыванию датаграммы и посылке источнику сообщения об ошибке. Эти процессы будут рассмотрены в главе 7, посвященной протоколу Internet Control Message Protocol (ICMP).
6.18.1 Обработка в маршрутизаторе
После получения датаграммы маршрутизатор проводит серию проверок, чтобы узнать, не нужно ли отбросить данную датаграмму. Вычисляется контрольная сумма заголовка и сравнивается со значением из поля контрольной суммы.
Просматриваются поля версии, длины заголовка, общей длины и протокола для выявления имеющих смысл значений. Уменьшается значение из поля времени жизни. При ошибке в контрольной сумме, параметрах или нулевом значении времени жизни, а также в том случае, когда маршрутизатор не имеет достаточного объема памяти для продолжения ее обработки, датаграмма отбрасывается.
На следующем шаге выполняется анализ безопасности посредством серии предварительно сконфигурированных тестов. Например, маршрутизатор может ограничить входной трафик, чтобы было доступно только несколько серверов назначения.
Далее маршрутизатор выполняет процедуру маршрутизации датаграммы. По указанию в заголовке датаграммы выбирается вариант точного или произвольного маршрута от источника. Затем, если это необходимо и разрешено, осуществляется фрагментирование. Если датаграмма не может быть передана дальше без фрагментации, но поле "Не фрагментировать" имеет значение 1, она отбрасывается.
Имеющиеся варианты обрабатываются. Измененные заголовки должны быть построены для каждой датаграммы или ее фрагмента. Наконец повторно вычисляется контрольная сумма заголовка и датаграмма пересылается системе следующего попадания. Это наиболее общий сценарий обработки датаграммы маршрутизатором. Однако иногда он является конечной точкой назначения датаграммы. Например, запрос сетевой управляющей информации может посылаться на сам маршрутизатор.
6.18.2 Обработка в хосте назначения
В хосте назначения вычисляется контрольная сумма, и полученный результат сравнивается с соответствующим полем. Проверяется адрес назначения на принадлежность данному хосту. Проверяется также корректность полей версии, длины заголовка, общей длины и протокола. Датаграмма отбрасывается при любой ошибке или при недостатке буферного пространства для ее обработки хостом.
Если датаграмма фрагментирована, то хост проверяет четыре поля: идентификации, адреса источника, адреса назначения и протокола для выявления фрагментов с идентичными значениями (т.е. принадлежащих одной датаграмме). Далее используется значение из поля смещения фрагмента для позиционирования фрагментов относительно друг друга.
Целая датаграмма пересылается соответствующей службе высокого уровня, например TCP или UDP.
Хост не ожидает полного завершения сборки датаграммы из фрагментов. Когда поступает первый фрагмент, таймер устанавливается в локально конфигурируемое значение (обычно между 1 и 2 минутами). Фрагменты датаграммы, не собранные за это время, отбрасываются.
6.19 Средства защиты и безопасность
Все хотят получить максимальные преимущества от коммуникаций, но благоразумный сетевой администратор всегда принимает меры, чтобы защитить ресурсы компьютеров от воздействия извне, в первую очередь от хакеров. Маршрутизаторы со средствами защиты (firewall router; иногда используется дословный перевод — брандмауэр, т.е. противопожарная стенка. — Прим. пер.) стали наиболее популярными устройствами в оборонительном арсенале сетевого администратора.
Маршрутизаторы со средствами защиты устанавливаются для фильтрации трафика с целью обеспечения безопасности сайта. Как показано на рис. 6.16, такие маршрутизаторы могут конфигурироваться на разрешение или запрещение трафика на основе:
■ IP-адреса источника
■ IP-адреса назначения
■ Протокола
■ Приложения
Рис. 6.16. Маршрутизатор со средствами защиты
Например, внутренним пользователям можно разрешить посылку и прием сообщений электронной почты и доступ к внешним серверам WWW, а внешним пользователям — только к небольшому подмножеству серверов сайта.