Процесс доставки IP пакета подобен процессу посылки почтового отправления. Есть множество шагов, вовлеченных в процесс поставки IP пакета адресату. Таблица выделяет эти шаги и соответствующие им шаги знакомого процесса — посылки и получения письма. Шлюз по умолчанию - адрес местного маршрутизатора, который должен быть конфигурирован на хостах (PC, серверы, и так далее). На этот адрес хост пошлет любой пакет, который не предназначен для местной сети.
Шаг | Действие IP | Аналогия Поставки Почты |
1. | Когда хост хочет послать датаграмму, то он проверяет - находится ли адрес получателя в местной сети. Если адрес не находится в местной сети, хост использует адрес шлюза по умолчанию, который решает, куда отправить пакет. | Отправитель письма ищет адрес получателя в записной книжке. ("Я могу доставить это непосредственно, или я должен отправить это по почте?") |
2. | Датаграмма помещается во фрейм и передается на канальный уровень. Во фрейме указывается физический адрес маршрутизатора, который получит датаграмму. | Отправитель помещает письмо в конверт и бросает его в местный почтовый ящик. |
3. | Местный маршрутизатор получает фрейм, распаковывает его, и посылает фрейм процессу маршрутизации. | Местное почтовое отделение получает конверт наряду с другими конвертами из почтового ящика. Письмо отделено для обработки. |
4. | Маршрутизатор находит соответствие сети адресата со списком сетей в таблице маршрутизации. | Местное почтовое отделение определяет город и государство, которому нужно послать письмо. |
5. | Используя таблицу маршрутизации, маршрутизатор может решить, как лучше всего отправить пакет к его адресату (адрес следующего маршрутизатора и из какого порта он достижим). | Местное почтовое отделение посылает письмо центральному почтовому отделению для обработки. |
6. | Используя IP адрес следующего маршрутизатора, протокол разрешения физических адресов (ARP) получает физический адрес следующего маршрутизатора (MAC адрес) и использует этот адрес как адрес получателя фрейма. | Центральное почтовое отделение определяет контейнер, в который письмо должно быть помещено для поставки в город получателя. |
7. | Датаграмма помещается во фрейм и передается на канальный уровень вместе с физическим адресом маршрутизатора - получателя датаграммы. | Письмо помещено в контейнер, который посылают почтовому отделению в городе получателя. |
8. | Шаги 2 - 7 повторяются, пока не будет достигнут маршрутизатор сети получателя. | Контейнер перемещается по маршруту почты, пока не достигает почтового отделения в городе получателя. |
9. | Маршрутизатор распаковывает фрейм и посылает датаграмму сетевому уровню. | Почтовое отделения в городе получателя извлекает письмо от контейнера. |
10. | Маршрутизатор проверяет IP адрес датаграммы и затем проверяет таблицу маршрутизации и определяет, что сеть местная. | Почтовое отделение проверяет, что конверт нужно доставить в получателю письма. |
11. | Маршрутизатор получает физический адрес адресата от протокола разрешения физических адресов (ARP) и заключает пакет во фрейм. | Почтовое отделение помещает конверт в контейнер для местных писем. |
12. | Датаграмма доставляется хосту- адресату. | Почтальон доставляет конверт получателю. |
IP передает информацию в форме пакета (также называемой датаграмма).
4 | 4 | 8 | 16 | 16 | 3 | 13 | 8 |
VERS | HLEN | Тип сервиса | Общая длина | Метка идентификации | Флаги | Смещение фрагмента | TTL |
8 | 16 | 32 | 32 | var | |
Протокол | Контрольная сумма заголовка | IP-адрес отправителя | IP-адрес получателя | IP опции | Данные |
Поле | Описание |
Version (Версия) | 4 бита используются для отображения версии протокола IP. Текущая версия - четвертая. Следующей будет шестая. |
Header Length (Длина заголовка) | 4 бита используются для отображения количества 32-битных слов в заголовке IP-пакета. Минимальный размер слова - 20 байт, следовательно, длина минимального заголовка - 0x5. Опции IP могут увеличить минимальный размер заголовка на 4 байта. Если опция не использует их все, то оставшиеся биты заполняются нулями, поэтому длина заголовка всегда кратна 4 байтам. |
Type of Service (Тип обслуживания) | 8 бит используются для обозначения требуемого для этой датаграммы качества обслуживания при доставке через маршрутизаторы объединенной IP-сети. В них есть биты, выделенные для приоритета, задержки, пропускной способности и характеристики надежности. |
Total Length (Общая длина) | 16 бит используются для отображения общей длины датаграммы протокола IP (заголовок IP-пакета + его содержание). Сюда не включен заголовок сетевого кадра. |
Identification (Идентификация) | 16 бит используются в качестве идентификатора данного IP-пакета. Если IP-пакет фрагментирован, то все фрагменты имеют одинаковые идентификаторы, используемые при сборке узлом-получателем. |
Fragmentations Flags (Фрагментационные флаги) | 3 бита зарезервированы для флагов фрагментации, однако только 2 бита определены для текущего использования. Один флаг служит для обозначения фрагментированного пакета, другой - для идентификации последнего фрагмента. |
Fragment Offset (Смещение фрагмента) | 13 бит используются как счетчик смещения для указания положения фрагментов относительно начала поля данных IP-пакета. Если фрагментации нет, то смещение равно 0x0. |
Time To Live (Время существования) | 8 бит используются в качестве индикатора времени (транзитов IP-пакета), максимально допустимого перед тем, как пакет будет отвергнут. Поле TTL используется как счетчик времени (в секундах), проведенного пакетом на маршрутизаторе, который соответственно уменьшает TTL. Современные маршрутизаторы почти всегда перенаправляют датаграммы менее чем за 1 секунду, однако, по требованиям RFC 791, они должны уменьшать TTL не менее чем на единицу. Поэтому TTL становится счетчиком максимального числа транзитов. |
Protocol (Протокол) | 8 бит используются в качестве идентификатора протокола, данные которого инкапсулированы в IP-пакет. Поле протокола применяется для передачи IP-пакета протоколу верхнего уровня. |
Header Checksum (Контрольная сумма заголовка) | 16 бит используются в качестве контрольной суммы заголовка IP-пакета. Данные пакета не учитываются и могу иметь свою собственную контрольную сумму для проверки ошибок. Когда узел получает пакет, он проводит проверку контрольной суммы и при несовпадении значений отвергает пакет. Когда маршрутизатор пересылает пакет, он, как минимум, уменьшает TTL. Поэтому контрольная сумма вычисляется снова при каждом транзите ну пути от отправителя к получателю. |
Source Address (Адрес отправителя) | 32 бита используются для хранения IP-адреса узла-отправителя. |
Destination Address (Адрес получателя) | 32 бита используются для хранения IP-адреса узла-получателя. |
Options and Padding (Опции и заполнение) | Для хранения опций используется кратное 32 число бит. Если же опции не занимают это место целиком, остаток заполняется нулями. Таким образом, длина IP-заголовка всегда может быть выражена количеством четверок байт и записана в поле Header Length. |
IP использует поле Протокол в датаграммном заголовке, чтобы идентифицировать протокол, которому будут передаваться область данных датаграммы. Каждый протокол имеет свой уникальный индефикатор.
Протокол | Индетификатор |
TCP | 6 |
UDP | 17 |
ICMP | 1 |
EIGRP | 88 |
Протокол ICMP работает на всех хост-машинах, использующих протокол TCP/IP. Сообщения этого протокола переносятся внутри IP-дейтаграмм. Протокол ICMP используются для посылки управляющих сообщений и сообщений об ошибках. ICMP выполняет следующие функции:
Если маршрутизатор получает пакет, который не может быть доставлен в конечный пункт назначения, то он посылает отправителю ICMP-сообщение "Пункт назначения недостижим". Но сначала он пошлет маршрутизатору - получателю эхо-запрос. Сообщение может быть не доставлено из-за того, что маршрут к пункту назначения неизвестен, а эхо-ответ представляет собой успешный ответ на выдачу команды ping. Однако результатом выполнения этой команды могут быть и другие сообщения, например сообщение о недостижимости или сообщение, об окончании времени ожидания.