Когда пакет передается вниз с транспортного уровня, IP добавляет свой собственный заголовок к пакету.
Заголовок IP содержит IP адрес источника, где бы создан пакет, IP адрес получателя, к которому направляется пакет и тип транспортного протокола, инициировавшего запрос.
Протокол информирует IP на хосте получателя, передавать пакет протоколу TCP или UDP.
Контрольная сумма, которая представляет собой математически вычисленную величину, которая используется для подтверждения того, что пакет был получен целый (неповрежденный).
И, время жизни пакета или TTL, значение, которое определяет, как долго пакет живет в сети до того момента, как он будет отброшен.
Это предотвращает появление бесконечных петель в (объединенных) распределенных сетях.
Если IP адрес получателя определяется как локальный адрес, IP передает пакет напрямую данному хосту.
Если IP адрес получателя определяется как удаленный адрес, IP проверяет локальную таблицу маршрутизации для определения маршрута к удаленному хосту.
Если маршрут найден, IP посылает пакет, используя этот маршрут.
Если маршрут не найден, пакет посылается на шлюз по умолчанию хоста-отправителя, также называемого роутером.
IP на маршрутизаторе делает четыре вещи:
Уменьшает TTL по крайней мере на единицу на каждом маршрутизаторе.
Или на большее число, если пакет застревает на маршрутизаторе из-за затора (перегрузки).
Если TTL достигает нуля, пакет отбрасывается.
Затем IP вычисляет новую контрольную сумму.
После этого, он получает аппаратный адрес следующего маршрутизатора, и , в конце,
пересылает пакет.
Этот процесс полностью повторяется на каждом маршрутизаторе до тех пор, пока пакет не будет доставлен к конечному получателю.
Если маршрутизатор получает пакет, который слишком большой для топологии сети
IP разобьет пакет на меньшие порции
Когда эти кусочки прибудут на конечный пункт назначения, IP соберет их в исходный пакет.
Этот процесс называют фрагментацией и сборкой.
Фрагментация часто случается в сетях, где есть разные среды, например, Ethernet и Token Ring.
Давайте посмотрим, как это работает.
IP пакет приходит на маршрутизатор. IP разбивает пакет на три меньших фрагмента.
Для каждого нового пакета создается свой заголовок, который включает:
Флаг, указывающий на то, что за этом фрагментом следует следующий фрагмент.
Флаг не добавляется к последнему фрагменту, потому что за ним нет следующего фрагмента.
ID фрагмента (идентификатор фрагмента) идентифицирует все фрагменты, которые принадлежат одному пакеты.
Смещение фрагмента указывает хосту получателя, как собирать пакет.
Все три пакета маршрутизируются в удаленную сеть.
Даже, если они проходят через несколько маршрутизаторов, собираться они будут только когда достигнут хоста получателя.
Когда эти три пакета будут получены IP на удаленном хосте, они по идентификатору фрагмента будут опознаны как часть одного пакета.
Затем, смещение фрагмента используется для того, чтобы собрать их в корректном порядке.
В конце концов, собранный пакет передается наверх по стеку либо TCP, или UDP.
Когда IP маршрутизирует пакеты, ему нужно получить аппаратный адрес хоста-получателя.
IP использует ARP для получения аппаратного адреса хоста TCP/IP в таких сетях кaк Ethernet и Token Ring.
Когда IP нужен аппаратный (MAC) адресARP проверяет кэш на наличие аппаратных адресов, соответствующих IP узла назначения.
Если такого соответствия в КЭШе ARP не найдено, ARP формирует пакет ARP запроса MAC-адреса хоста получателя.
Чтобы повысить эффективность будущих соединений, соответствие IP и MAC адреса отправителя также включается в пакет запроса.
Затем фрейм отправляется в сеть и широковещательно распространяется в сети.
Все хосты получают запрос, и пакет запроса перенаправляется ARP.
Если IP хоста получателя совпадает с IP адресом в запросе,
формируется ответный пакет ARP, который содержит запрошенный MAC-адрес получателя, и отправляется прямо на хост отправителя.
Когда MAC-адрес получен, и IP и MAC-адрес сохраняются в записи локального КЭШа ARP.
IP пакет теперь может быть доставлен по MAC-адресу получателя.
Если во время маршрутизации возникают ошибки,
Internet Control Massage Protocol или ICMP посылает сообщения и отчеты об ошибках хосту отправителя.
Например, ICMP посылает пакет отправителю с требованием понизить скорость передачи, когда возникает затор на маршрутизаторе.
Сообщение о перенаправлении, когда обнаружен предпочтительный маршрут.
Это может произойти, когда на маршрутизаторе произошел затор, но доступен альтернативный маршрут.
Или сообщение о недоступности получателя, когда нет доступного альтернативного маршрута , например, при обрыве линии.
Сообщения ICMP упаковываются в IP датаграммы и маршрутизируются (отправляются) хосту-отправителю.
Следующий уровень в нашей модели – транспортный уровень.
Транспортный уровень обеспечивает конечные точки соединения между двумя хостами.
В UDP и TCP конечные точки называются портами.
UDP обычно используется для передачи небольших объемов информации и имеет две основные характеристики:
Он не образует соединение или сессию между двумя хостами перед тем как передавать данные.
Наоборот, сообщения UDP могут быть отправлены широковещательно, чтобы многие хосты получили сообщение.
UDP не гарантирует доставку сообщений. Пакеты могут быть получены в другом порядке, чем были отправлены или задублированы.
За надежность доставки отвечает приложение.
Когда приложение хочет послать данные другому хосту, UDP строит заголовок, который включает порт отправителя,
Порт получателя, который предоставляет адрес (номер приложения), которому доставлять сообщения.
И контрольную сумму для данных и заголовка.
На хосте-получателе пакет передается наверх до UDP и передается в порт получателя.
TCP обычно используется приложениями для передачи большого объема данных.
Имеет три основные характеристики:
Во-первых, TCP ориентирован на соединение, что означает, что TCP устанавливает сессию между двумя хостами перед тем, как начать обмениваться данными.
Во-вторых, TCP гарантирует надежность доставки путем использования номерных последовательностей и подтверждений о доставке.
Номерные последовательности позволяют сегментам TCP/IP разделяться на множество пакетов и затем собираться в оригинальный сегмент.
Подтверждения о доставке подтверждают, что данные были получены.
В-третьих, TCP использует соединения, основанные на потоке байт, что означает, что данные передаются как последовательность байт без границ сообщений.