Одним из принципов, который делает представленную многоуровневую структуру такой мощной и гибкой, является
Рис. 54.2.
Принцип работы TCP в данном случае неважен (при рассмотрении параметров сокетов в разделе 57.9 вы увидите, что это не всегда так; в ряде случаев приложение должно знать о некоторых подробностях работы исходного транспортного протокола). Неважен также принцип работы протокола IP или канального уровня. Для приложений все выглядит так, будто они взаимодействуют друг с другом напрямую через программный интерфейс сокетов; это продемонстрировано на рис. 54.3, где пунктирные горизонтальные линии обозначают маршруты между соответствующими программами, а также протоколами TCP и IP на обоих узлах.
Это важный аспект многоуровневого сетевого протокола. Пример инкапсуляции протоколов семейства TCP/IP показан на рис. 54.4. Ключевая идея заключается в том, что при поступлении с более высокого уровня информация (например, данные программы, TCP-сегмент или IP-датаграмма) никак не интерпретируется, а просто помещается в пакет того типа, который используется в текущем протоколе, маркируется соответствующим заголовком и передается на уровень ниже. При переходе снизу вверх происходит обратный процесс: данные распаковываются.
На рис. 54.4 этого не видно, но принцип инкапсуляции распространяется на канальный уровень, где IP-датаграммы упаковываются в так называемые сетевые кадры. То же самое можно сказать и об уровне приложения, где данные могут быть упакованы каким-то особым образом.
Рис. 54.3.
Рис. 54.4.
Самым низким уровнем на рис. 54.2 является
Передавая информацию, канальный уровень упаковывает датаграммы из сетевого уровня в блоки под названием
С точки зрения прикладного программирования канальный протокол в целом можно игнорировать, так как все его аспекты реализованы на уровне драйвера и аппаратного обеспечения.
Одной из особенностей канального уровня, играющей важную роль в понимании протокола IP, является максимальный размер передаваемого блока информации (англ. maximum transmission unit, MTU). В настоящем контексте это максимальный размер кадра. Данное значение может отличаться в разных протоколах канального уровня.
Команда netstat — i выводит список сетевых интерфейсов в системе, включая их MTU.
Над канальными протоколами находится
• разбиение данных на небольшие фрагменты, подходящие для передачи через канальный уровень (если нужно);
• маршрутизацию данных по интерсети;
• вспомогательные функции для транспортного уровня.
В стеке TCP/IP основным протоколом является сетевой уровень IP. Реализация IP, которая появилась в системе 4.2BSD, имела версию 4 (IPv4). В начале 1990-х была разработана новая, шестая версия данного протокола (IPv6). Наиболее заметная разница между ними заключается в том, что для определения подсетей и узлов в IPv4 используются 32-разрядные адреса, а в IPv6 — 128-разрядные (это делает доступным куда более широкий диапазон адресов). IPv4 все еще преобладает на просторах Интернета, однако в ближайшие несколько лет он должен быть вытеснен протоколом IPv6. Обе версии IP поддерживают транспортные протоколы более высокого уровня, в том числе TCP и UDP.