Сетевой уровень включает протокол Интернет (IP), протокол управляющих сообщений Интернет (ICMP) и протокол групповых сообщений Интернет (IGMP).
Модуль IP выполняет львиную долю всей работы сетевого уровня. ICMP и IGMP лишь дополняют его, помогая обрабатывать некоторые сетевые ситуации, такие, как возникновение ошибки или распространение групповых сообщений (сообщений, посланных двум и более системам одновременно).
Работая в сети TCP/IP, протокол Интернет инкапсулирует (размещает в своих пакетах) данные практически всех остальных протоколов, за исключением протоколов распознавания адресов (ARP и RARP).
Для передачи данных по поделенной на уровни сети требуется пропустить их от приложения вниз сквозь стек протоколов. В процессе обработки данных каждый протокол вкладывает или инкапсулирует данные в форму, пригодную для передачи соседнему по стеку протоколу. Таким образом, инкапсуляция — это процесс преобразования данных прикладного процесса в форму, требуемую соседним, более низким уровнем стека сетевых протоколов. Рис. 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-адреса будет идентифицировать сеть, а младшие три байта — номер компьютера (интерфейса), входящего в эту сеть.