Ранее мы отмечали: большинство протоколов канального уровня налагает ограничение на максимальный размер блоков данных (MTU). Например, в широко используемой архитектуре Ethernet он равен 1500 байтам (что намного меньше максимального размера IP-датаграммы). Кроме того, в протоколе IP существует понятие
Если датаграмма превышает MTU, то протокол IP разбивает ее на фрагменты, чьи размеры подходят для передачи по сети. В точке назначения они собираются обратно в исходную датаграмму (каждый такой фрагмент сам является датаграммой с полем, содержащим сдвиг, который позволяет определить его местоположение в оригинальном сообщении).
Эта фрагментация хоть и не видна протоколам более высокого уровня, но все равно считается нежелательной (см. [Kent & Mogul, 1987]). Дело в том, что протокол IP не поддерживает повторную передачу, а итоговую датаграмму можно собрать только в том случае, если до пункта назначения дошли все ее фрагменты. В результате при потере хотя бы одного фрагмента или в случае возникновения ошибки передачи мы теряем всю датаграмму целиком. В некоторых ситуациях это может привести к существенному увеличению процента потерянных данных (в случае с протоколами более высокого уровня, такими как UDP, не выполняющими повторную передачу пакетов) или снижению скорости (в случае с такими протоколами, как TCP, поддерживающими повторную передачу). Современные реализации TCP используют специальный алгоритм
IP-адрес состоит из двух частей: идентификатора сети, в которой находится узел, и идентификатора самого узла.
В IPv4 адрес занимает 32 бита (см. рис. 54.5). Его обычно записывают в виде десятичных чисел (всего 4 байта), разделенных точками, например, 204.152.189.116.
Рис. 54.5.
Когда организация подает заявку на получение диапазона адресов формата IPv4, она получает 32-разрядный сетевой адрес и соответствующую 32-разрядную
204.152.189.0/24
/24 означает, что часть адреса, содержащая идентификатор сети, состоит из первых 24 бит, а оставшиеся 8 бит отводятся для идентификатора узла. Ту же самую маску можно было бы определить как 255.255.255.0.
Организация, владеющая этим диапазоном, имеет право назначить своим компьютерам 254 уникальных интернет-адреса — с 204.152.189.1 по 204.152.189.254. Существует два адреса, которые нельзя назначить: первый — тот, чей идентификатор узла полностью состоит из нулей (которые используются для идентификации самой сети), а второй имеет адрес узла, полностью состоящий из единиц (что является
В протоколе IPv4 определенные адреса имеют специальное назначение. Например, 127.0.0.1 обычно является адресом, замкнутым на себя, и назначается узлу с именем localhost (эту роль может играть любой IPv4-адрес в подсети 127.0.0.0/8, однако 127.0.0.1 является общепринятым выбором). Датаграмма, посланная по данному адресу, на самом деле никогда не попадает в сеть, а возвращается и принимается тем же узлом, который ее отправил. Этот адрес принято задействовать для тестирования клиент-серверных программ в локальной среде. В программах на языке C он определен в виде константы INADDR_LOOPBACK.