2.5.1. Сетевой уровень

Сетевой уровень включает протокол Интернет (IP), протокол управляющих сообщений Интернет (ICMP) и протокол групповых сообщений Интернет (IGMP).

Модуль IP выполняет львиную долю всей работы сетевого уровня. ICMP и IGMP лишь дополняют его, помогая обрабатывать некоторые сетевые ситуации, такие, как возникновение ошибки или распространение групповых сообщений (сообщений, посланных двум и более системам одновременно).

Работая в сети TCP/IP, протокол Интернет инкапсулирует (размещает в своих пакетах) данные практически всех остальных протоколов, за исключением протоколов распознавания адресов (ARP и RARP).

Для передачи данных по поделенной на уровни сети требуется пропустить их от приложения вниз сквозь стек протоколов. В процессе обработки данных каждый протокол вкладывает или инкапсулирует данные в форму, пригодную для передачи соседнему по стеку протоколу. Таким образом, инкапсуляция — это процесс преобразования данных прикладного процесса в форму, требуемую соседним, более низким уровнем стека сетевых протоколов. Рис. 2.5 демонстрирует, как сетевое программное обеспечение инкапсулирует данные при работе протокола управления транспортировкой (TCP) на сети технологии Ethernet.

Подпись: Рис. 2.5. Инкапсуляция данных TCP на сети технологии Ethernet

Модуль приложения инкапсулирует данные пользователя в формат прикладного сообщения. Конструкция программы предусматривает использование того или иного метода инкапсуляции. Например, программа может инкапсулировать данные в формат сетевого протокола, скажем, TCP. Модуль TCP на рис. 2.5 преобразует прикладное сообщение в сегмент данных TCP. Сегмент данных TCP состоит из заголовка TCP, как того требует протокол, и прикладных данных. Прикладные данные, в свою очередь, могут иметь заголовок прикладного сообщения и поле прикладных данных. Данные, проходя сквозь модуль IР сетевого уровня, подвергаются дальнейшему преобразованию, и сегмент TCP превращается в IP-пакет (или IP-датаграмму). Драйвер сетевой карты Ethernet инкапсулирует IP-пакет в кадр протокола Ethernet.

Некоторые программы могут не использовать форматы прикладных сообщений. Программа, работающая с протоколом передачи пользовательских датаграмм (UDP), может инкапсулировать данные в формат UDP вместо TCP. Важно помнить, что протоколы TCP/IP инкапсулируют данные, располагая их в требуемой протоколом последовательности и дополняя некоторой служебной информацией.

Адрес сети Интернет называется IP-адресом. Сетевой компьютер не имеет определенного IP-адреса. Каждая сетевая карта Ethernet обязана иметь уникальный сетевой адрес.

В сети TCP/IP каждому интерфейсу (а не компьютеру) соответствует собственный IP-адрес. Один компьютер может иметь несколько сетевых интерфейсов.

Длина адреса Интернет — 32 бита или 4 байта. В языке С IP-адрес можно представить типом long integer. (Тип long integer как раз имеет длину 32 бита.) Однако удобнее записывать его в форме dotted-decimal (десятичное с точкой) или десятичными числами через точку.

Система записи «десятичное с точкой» представляет IP-адрес как четыре разделенных точками десятичных цифры, следующих друг за другом. Следующие числа — это одно и то же число, но записано оно по-разному.

IP-адрес в двоичном виде:                            10000110000110000001000010

IP-адрес в десятичном виде:                         2249721922 (или -2045245374)

IP-адрес в шестнадцатиричном виде:          0х86180842

IP-адрес в записи десятичное с точкой:      134.24.8.66

Запись dotted-decimal («десятичное с точкой») — просто соглашение или правило, как следует записывать IP-адреса. Это правило, облегчающее запись и чтение IP-адреса вами и другими людьми. Число в форме dotted-decimal проще воспринять, нежели его двоичный, шестнадцатиричный или десятичный эквивалент.

32-битный IP-адрес скрывает за собой номера сети и сетевого компьютера (на самом деле — интерфейса). Чтобы отличить одну сеть от другой, Информационный центр сети Интернет (Internet Network Information Center, InterNIC) следит за тем, чтобы номер каждой входящей в Интернет сети нигде больше не повторялся. Когда-то разработчики Интернет договорились, что старший байт IP-адреса будет идентифицировать сеть, а младшие три байта — номер компьютера (интерфейса), входящего в эту сеть.