Модель работы при передаче дейтаграмм
Модель работы при передаче дейтаграмм из одной прикладной программы в другую иллюстрирует следующий сценарий. Предположим, что эта передача будет включать один промежуточный шлюз. Передающая прикладная программа готовит свои данные, вызывает свой локальный модуль IР для отправки этих данных в виде дейтаграммы и передает адрес места назначения и другие параметры в качестве аргументов вызова. Модуль IР готовит заголовок дейтаграммы и присоединяет к нему данные. Модуль определяет адрес локальной сети для этого адреса IР; в данном случае это адрес шлюза. Он посылает эту дейтаграмму и адрес локальной сети в локальный сетевой интерфейс. Локальный сетевой интерфейс создает локальный сетевой заголовок и присоединяет к нему дейтаграмму, а затем посылает результат через локальную сеть. Дейтаграмма прибывает на хост шлюза в оболочке заголовка локальной сети, интерфейс локальной сети удаляет этот заголовок и передает дейтаграмму модулю IР. Модуль определяет из адреса IР, что дейтаграмма должна быть передана на другой хост во второй сети. Модуль определяет адрес локальной сети для хоста назначения. Он обращается к интерфейсу локальной сети, чтобы послать ей дейтаграмму. Интерфейс локальной сети создает заголовок локальной сети и присоединяет дейтаграмму, посылая результат хосту назначения. На хосте назначения дейтаграмма освобождается от заголовка локальной сети интерфейсом локальной сети и передается модулю IР.
Модуль IР определяет, что дейтаграмма предназначена для прикладной программы на этом хосте. Он передает данные прикладной программе в ответ на системный вызов, передавая адрес источника и другие параметры, как результат вызова.
Функция или назначение протокола IР состоит в переносе дейтаграмм в пределах объединенной сети, или сетевого комплекса. Это реализуется путем передачи дейтаграмм из одного модуля IР в другой, пока не будет достигнуто место назначения. Модули IР располагаются на хостах и шлюзах в системе Интернет. Дейтаграммы маршрутизируются из одного модуля IР в другой через отдельные сети на основе интерпретации адреса IР. Таким образом, одним из важных механизмов протокола IР является IР-адрес.
При маршрутизации сообщений из одного модуля IР в другой дейтаграммам может понадобиться пересекать сеть, максимальный размер пакета в которой меньше размера дейтаграммы. Чтобы преодолеть эту трудность, в протоколе IР предоставлен механизм фрагментации.
Существует различие между именами, адресами и маршрутами. Имя указывает, что мы ищем. Адрес указывает, где это находится. Маршрут указывает, как туда попасть. Протокол IР имеет дело прежде всего с адресами. Задача протоколов высокого уровня (т.е. протокола хост-хост или приложения) — выполнить отображение из имен в адреса. Модуль IР отображает IР-адреса в адреса локальной сети. Задача низкоуровневых процедур (т.е. локальной сети или шлюзов) — выполнить отображение из адресов локальной сети или маршрутов.
Адреса имеют фиксированную длину из четырех октетов (32 бита). Адрес начинается с номера сети, за которым следует локальный адрес (называемый "собственным" полем). Есть три формата классов адресов IР: в классе (а) старший бит равен нулю, следующие семь битов определяют сеть, а последние 24 бита являются локальным адресом; в классе (Ь) старшими двумя битами будут один-ноль, следующие 14 битов определяют сеть, а последние 16 битов являются локальным адресом; в классе (с) старшими тремя битами будут один-один-ноль, следующие 21 бита определяют сеть, а последние восемь битов являются локальным адресом.
При отображении адресов IР в адреса локальной сети должна быть проявлена осторожность; в ряде случаев единственный физический хост должен действовать как несколько различных хостов за счет использования нескольких различных адресов IР. Некоторые хосты будут также иметь несколько физических интерфейсов (мультихост). Должно быть предусмотрено существование хоста с несколькими физическими сетевыми интерфейсами, каждый из которых может иметь несколько логических адресов IР.
