Протоколы TCP-IP


Обработка приходящих дейтаграмм


Итак, мы рассмотрели IP-маршрутизацию, описав, как принимаются решения относительно отправляемых пакетов. Тем не менее, ясно, что программное обеспечение IP должно также обрабатывать приходящие дейтаграммы.

Когда IP-дейтаграмма прибывает на ГВМ, программное обеспечение сетевого интерфейса доставляет ее программному обеспечению IP для обработки. Если адрес назначения дейтаграммы соответствует IP-адресу ГВМ, программное обеспечение IP на ГВМ принимает дейтаграмму и передает ее программе протокола более высокого уровня для дальнейшей обработки. Если же IP-адрес назначения не соответствует ему, ГВМ требуется уничтожить дейтаграмму(то есть ГВМ не позволяется пытаться маршрутизировать дейтаграммы, по ошибке пришедшие не на ту машину).

В отличие от ГВМ, шлюзы выполняют маршрутизацию. Когда

IP-дейтаграмма прибывает на шлюз, она доставляется программному обеспечению IP. И снова можно выделить два варианта: дейтаграмма может быть доставлена к ее конечному назначению, или ее нужно отправить путешествовать дальше. Как и на ГВМ, если IP-адрес назначения дейтаграммы соответствует собственному IP-адресу шлюза, программное обеспечение IP передает дейтаграмму программному обеспечению более высокого уровня для обработки(обычно, единственными дейтаграммами, предназначающимися шлюзу, являются те, что используются для проверки достижимости и те, что несут команды администрирования шлюзом). Если дейтаграмма еще не достигла своего конечного назначения, IP маршрутизирует ее, используя стандартный алгоритм и информацию из локальной таблицы маршрутизации.

Определение того, достигла ли IP-дейтаграмма своего конечного назначения или нет, не так тривиально, как это может показаться. Напомним, что даже ГВМ может иметь несколько физических соединений, и каждое из них имеет свой IP-адрес. Когда прибывает IP-дейтаграмма, машина должна сравнить межсетевой адрес назначения с IP-адресом каждого из своих сетевых соединений. Если для какого-либо из них соответствие найдено, шлюз сохраняет дейтаграмму и обрабатывает ее. Машина также должна принимать широковещательные дейтаграммы из физических сетей, если их IP-адрес назначения является IP-адресом ограниченного широковещания или IP-адресом направленного широковещания для этой сети. Как мы увидим в главах 16 и 17, подсети и многоадресные адреса делают распознавание адресов достаточно сложным. В любом случае, если адрес не соответствует ни одному из адресов этой машины, IP декрементирует поле времени жизни в заголовке дейтаграммы и удаляет дейтаграмму, если этот счетчик достиг нуля, или вычисляет новую контрольную сумму и маршрутизирует дейтаграмму, если счетчик больше нуля.


Должна ли каждая машина маршрутизировать дейтаграммы, которые она получает ? Ясно, что шлюзы должны маршрутизировать приходящие дейтаграммы, так как это их основная задача. Мы также говорили, что некоторые многоадресные ГВМ ведут себя как шлюзы, даже если они на самом деле компьютеры общего назначения. Хотя использование ГВМ в качестве шлюза обычно неразумно, если кто-то все же сделал это, то ГВМ должен быть сконфигурирован так, чтобы маршрутизировать дейтаграммы так же, как это делает шлюз. А как же остальные ГВМ, не предназначенные для использования в качестве шлюзов ? Ответ будет следующий: ГВМ, не используемые в качестве шлюзов, не должны маршрутизировать приходящие на них дейтаграммы; они должны уничтожать их.

Существует четыре причины, почему ГВМ, не предназначенный для функционирования в качестве шлюза, должен воздерживаться от выполнения любых функций шлюза. Во-первых, когда такой ГВМ получает дейтаграмму, предназначавшуюся другой машине, либо есть ошибка в межсетевом адресе, либо произошла ошибка при маршрутизации или доставке. Эта ошибка может быть не обнаружена, если ГВМ совершит корректирующее действие с помощью маршрутизации дейтаграммы. Во-вторых, маршрутизация может привести к возникновению лишнего межсетевого траффика(и может отвлечь ЦП от выполнения по-настоящему нужных задач). В-третьих, простые ошибки могут вызвать хаос. Предположим, что каждый ГВМ маршрутизирует траффик и представим себе, что случится, если одна из машин по ошибке широковещательно передаст дейтаграмму, предназначенную на самом деле лишь одному ГВМ, Н. Каждый ГВМ в сети получит копию дейтаграммы в результате широковещания, и каждая машина направит свою копию к Н, которая в результате будет бомбардирована множеством копий. В-четвертых, как покажут последующие главы, шлюзы не только маршрутизируют траффик. В следующей главе будет показано, что шлюзы используют специальный протокол для сообщений об ошибках, в то время как ГВМ не используют его(опять же, чтобы избежать бомардирования источника множеством сообщений об ошибках). Шлюзы также распространяют информацию о маршрутах для того, чтобы их таблицы были согласованными. Если ГВМ маршрутизируют дейтаграмму, не реализуя при этом всех функций шлюза, могут возникать неожиданные аномалии.


Содержание раздела