UNIX поддерживает работу в целом ряде физических сетей, включая Ethernet (в том числе беспроводная связь), FDDI, Token Ring, ATM и системы с последовательными соединениями. Управление аппаратными устройствами осуществляется на канальном уровне архитектуры TCP/IP, а протоколы более высоких уровней не знают о том, как именно используются аппаратные средства.
Данные передаются по сети в форме пакетов, имеющих максимальный размер, определяемый ограничениями канального уровня. Каждый пакет состоит из заголовка и полезного содержимого (сообщения). Заголовок включает сведения о том, откуда прибыл пакет и куда он направляется. Заголовок, кроме того, может содержать контрольную сумму, информацию, характерную для конкретного протокола, и другие инструкции, касающиеся обработки пакета. Полезное содержимое — это данные, подлежащие пересылке.
Имя базового блока передачи данных зависит от уровня протокола. На канальном уровне это кадр или фрейм, в протоколе IP — пакет, а в протоколе TCP — сегмент. Мы будем придерживаться универсального термина "пакет".
Когда пакет передается вниз по стеку протоколов, готовясь к отправке, каждый протокол добавляет в него свой собственный заголовок. Законченный пакет одного протокола становится полезным содержимым пакета, генерируемого следующим протоколом. Эта операция известна как инкапсуляция. На принимающей машине инкапсулированные кадры восстанавливаются в обратном порядке.
Например, дейтаграмма, передаваемая по сети Ethernet, упакована в трех различных "конвертах". В среде Ethernet она "вкладывается" в простой физический кадр, заголовок которого содержит сведения об аппаратных адресах отправителя и ближайшего получателя, длине кадра и его контрольной сумме (CRC). Полезным содержимым Ethernet-кадра является IP-пакет. Полезное содержимое IP-пакета — UDP-пакет, и, наконец, полезное содержимое UDP-пакета состоит собственно из передаваемых данных. Компоненты такого кадра изображены на рис. Б.
Рис. Б. Типичный сетевой пакет.

Под словом "байт" мы подразумеваем 8-битовую цепочку данных. В былые времена этот термин имел более широкое значение, поэтому иногда в документах RFC можно встретить термин "октет".
Канальный уровень
Канальный уровень обеспечивает связь между сетевым программным обеспечением и собственно сетевым оборудованием.
Стандарты формирования кадров Ethernet
Одна из основных обязанностей канального уровня — добавление заголовков к пакетам и вставка разделителей между ними. Заголовки содержат информацию об адресах канального уровня и контрольные суммы, а разделители позволяют принимающей стороне определить, где заканчивается один пакет и начинается другой. Процесс добавления вспомогательных битов называется формированием кадров.
В десятимегабитных сетях Ethernet существует два различных стандарта кадровой разбивки: DIX Ethernet II и IEEE 802.2 LLC SNAP. На серверах UNIX и в маршрутизаторах Cisco применяется первый стандарт, в сетях IPX и системах Novell — второй. Стандарты различаются несколькими полями в заголовке кадра, но они не конфликтуют друг с другом, поэтому принимающее устройство может однозначно определить формат каждого пакета и соответствующим образом декодировать заголовок.
Выбор стандарта кадровой разбивки диктуется имеющейся сетевой платой и ее драйвером. На персональных компьютерах, работающих под управлением Windows, выбор можно делать самостоятельно, а в UNIX — обычно нет. С точки зрения UNIX оба стандарта прекрасно взаимодействуют. А вот в среде Windows компьютеры, расположенные в одной сети, но придерживающиеся различных стандартов, не могут общаться друг с другом. Системному администратору обычно не приходится заниматься вопросами формирования кадров, если только не выполняется низкоуровневая отладка в смешанной сети.
Стандарты кабелей Ethernet
Выбор кабелей в десятимегабитной сети Ethernet довольно прост, но ситуация усложняется, когда речь заходит о стомегабитных сетях. Раньше существовали три различных стандарта для витой пары (ТХ, в котором использовались две пары кабелей категории 5, а также Т4 и VG, в каждом из которых требовались четыре пары категории 3) и еще один для оптоволокна (FX, в котором используется многорежимный волоконно-оптический кабель). Компания Hewlett-Packard отстаивала стандарт VG и первой выпустила для него продукты. Другие производители проигнорировали его и остановили свой выбор на стандарте ТХ, который в настоящее время используется повсеместно.
Беспроводные сети
В спецификации IEEE 802.11 делается попытка описать стандарты кадровой разбивки и передачи сигналов для беспроводных сетей. К сожалению, спецификация является весьма нечеткой и включает ряд параметров, которые не были полностью определены. При взаимодействии разнородных сетей приходилось учитывать такие аспекты, как трансляция и инкапсуляция.
В случае трансляции пакет преобразуется из одной формы в другую, а при инкапсуляции он упаковывается в структуру требуемого формата. В среде Windows применяется инкапсуляция, а в UNIX — трансляция, поэтому базовые беспроводные станции должны конфигурироваться явным образом. Когда развертывается беспроводная сеть, нужно убедиться, что базовая станция и связанные с ней рабочие станции функционируют в одинаковом режиме.
Пользователи портативных компьютеров сталкиваются с другой проблемой, вызванной неоднозначностью спецификации 802.11. Беспроводные платы PCMCIA имеют энергосберегающий режим, несовместимый с некоторыми базовыми станциями. По умолчанию он, естественно, включен. Если окажется, что пользовательские портативные компьютеры не работают в беспроводной сети, попросите пользователей отключить энергосберегающий режим. Самая лучшая конфигурация домашней беспроводной сети — с базовой станцией Apple AirPort и сетевыми платами Lucent. Посредством портативного компьютера в такую сеть можно входить отовсюду: в постели в бассейне и даже с улицы.
Максимальный размер передаваемого блока
Размер пакетов ограничивается как характеристиками аппаратных средств, так и требованиями протоколов. Например, объем полезного содержимого Ethernet-пакета не может превышать 1500 байтов. Предельны; размер пакета устанавливается на канальном уровне и называется максимальной единицей передачи (Maximum Transfer Unit, MTU). Типичные значения параметра MTU приведены в табл. 13.2.
Для ATM параметр MTU не вполне применим, так как сеть ATM расположена где-то на границе между физическим и канальным уровнями. Ячейка ATM обычно имеет размер 53 байта с 48-байтовым блоком данных, но в спецификации AAL/5 пакет может иметь размер до 216 байтов. Как правило, в обычном режиме параметр MTU равен 9180 байтов, а в режиме LANE (Local Area Network Emulation — эмуляция локальной сети) — 1500 байтов.
Таблица 13.2. Максимальные размеры передаваемых блоков в сетях различных типов
|
Тип сетевого соединения
|
Максимальный размер блока
|
|
Ethernet
|
1500 байтов (1492 в спецификации 802.2)
|
|
FDDI
|
4500 байтов (4352 для IP/FDDI)
|
|
РРР
|
настраиваемый, обычно 512 или 576 байтов
|
|
ATM
|
53 байта
|
|
Спутниковые каналы (Tl, ТЗ)
|
настраиваемый, обычно 1500 или 4500 байтов
|
В TCP/IP протокол IP отвечает за разбивку пакета на фрагменты, чтобы их размер соответствовал требованиям конкретного сетевого соединения. Если пакет проходит через несколько сетей, в одной из них параметр MTU может оказаться меньшим, чем в исходной сети. В этом случае маршрутизатор подвергнет пакет дальнейшей фрагментации. Подобный процесс нежелателен, когда маршрутизатор сильно загружен. Протокол TCP способен определить наименьшее значение MTU вдоль всего пути следования пакета и с самого начала разбить пакет в соответствии с этим значением. Протокол UDP не столь "любезен" и перекладывает всю ответственность на протокол IP. В стандарте IPv6 промежуточные маршрутизаторы больше не могут выполнять фрагментацию пакетов: режим предварительного определения максимального размера блока является обязательным.
Иногда проблема фрагментации оказывается достаточно коварной. Например, в виртуальной частной сети с туннельной архитектурой необходимо проверять размер пакетов, проходящий через туннель. Обычно их начальный размер — 1500 байтов, но когда к ним добавляется туннельный заголовок, размер пакетов становится равным примерно 1540 байтов, и уже требуется фрагментация. Уменьшение размера блока позволяет избежать фрагментации и повысить производительность сети. Обратитесь к man-странице по команде ifconfig, чтобы узнать, как настроить параметр MTU сетевой платы.
Адресация пакетов
Подобно письмам и сообщениям электронной почты, сетевые пакеты могут достичь пункта назначения только при наличии правильного адреса. В TCP/IP используется сочетание нескольких схем адресации:
- МАС-адреса сетевого оборудования;
- IP-адреса программного обеспечения;
- текстовые имена компьютеров.
Сетевая плата может иметь МАС-адрес канального уровня, который отличает ее от других сетевых плат данной физической сети, IP-адрес, определяющий ее положение в сети Internet, и текстовое имя, понятное пользователям.
Самый нижний уровень адресации задается сетевыми аппаратными средствами. Например, Ethernet-устройствам при изготовлении присваиваются уникальные шестибайтовые аппаратные адреса. Платы сетей Token Ring имеют аналогичные шестибайтовые адреса. В некоторых сетях с двухточечным соединением (например, РРР; см. параграф 13.8) аппаратные адреса вообще не нужны: адрес пункта назначения указывается непосредственно при установлении соединения.
Шестибайтовые адреса Ethernet разбиваются на две части: первые три байта определяют изготовителя платы, а последние три байта выступают в качестве уникального серийного номера, назначаемого изготовителем. Текущий список производителей сетевого оборудования можно получить по адресу
http://www.iana.org/assignments/ethernet-numbers
В свое время эта информация регулярно публиковалась в виде документов RFC, но затем такая практика прекратилась. Последним документом в серии Assigned Numbers (назначенные номера) был документ RFC1700 (1994 г.) Официальным хранилищем всех специальных имен, действующих в сети Internet, является Web-страничка www.iana.org/numbers.htm.
Аппаратные адреса Ethernet должны быть постоянными и неизменным. К сожалению, некоторые сетевые платы допускают программное задание аппаратных адресов. Особенно сложно в этом отношении с платами беспроводной связи. Избегайте назначения адресов из диапазона группового вещания и других специальных адресов. В Solaris и Red Hat можно менять аппаратный адрес любого сетевого интерфейса, но лучше этого не делать.
На следующем, более высоком уровне используется Internet-адресация (которую чаще называют IP-адресацией). Каждому сетевому интерфейсу присваивается четырехбайтовый IP-адрес. Эти адреса глобально уникальны и аппаратно независимы. Мы уделим им достаточно много внимания i параграфе 13.4.
Соответствие между IP-адресами и аппаратными адресами реализуется на канальном уровне модели TCP/IP. В сетях, допускающих широковещательный режим (т.е. в сетях, позволяющих адресовать пакеты всем компьютерам данной физической сети), протокол ARP обеспечивает автоматическую привязку адресов без вмешательства системного администратора.
Поскольку IP-адреса представляют собой длинные, на первый взгляд случайные, числа, то запомнить их трудно. UNIX-системы позволяют связывать текстовые имена с IP-адресами, чтобы вместо telnet 128.138.242.1 пользователь мог ввести telnet anchor.
Существует несколько способов осуществления подобной привязки: с помощью статического файла (/etc/hosts), баз данных NIS и NIS+ и, наконец. DNS — глобальной системы доменных имен. Помните, что имя компьютера — это просто сокращенный способ записи IP-адреса; низкоуровневое сетевое программное обеспечение его не понимает.
Порты
IP-адреса идентифицируют компьютеры, точнее, сетевые интерфейсы компьютера; они недостаточно конкретны для адресации отдельных процессов и сервисов. Протоколы TCP и UDP расширяют концепцию IP-адресов, вводя понятие порта. Порт в данном случае представляет собой двухбайтовое число, добавляемое к IP-адресу и указывающее конкретный канал взаимодействия. Все стандартные сервисы UNIX, в частности электронная почта, FTP, сервер удаленного доступа, связываются с "известными" портами, которые определены в файле /etc/services. Для того чтобы предотвратить попытки сторонних процессов замаскироваться под стандартные сервисы, UNIX-системы ограничивают доступ к портам с номерами до 1024 только для пользователя root.
Типы адресов
В протоколе IP и на канальном уровне поддерживается несколько типов адресов:
- направленный — адрес, который обозначает отдельный компьютер (в действительности сетевой интерфейс);
- групповой — адрес, идентифицирующий группу узлов;
- широковещательный — адрес, обозначающий все узлы локальной сети.
Режим группового вещания используется в таких приложениях, как, например, видеоконференции, где одна и та же последовательность пакетов посылается всем участникам конференции. Протокол IGMP (Internet Group Management Protocol — протокол управления группами Internet) отвечает за управление группами узлов, идентифицируемыми как один групповой адресат. Режим группового вещания все еще является экспериментальным. Тем не менее, он находит все более широкое применение в таких областях, как передача голосовых данных по IP-сетям и передача видео по запросу.
На канальном уровне младший бит старшего байта группового адреса (первый байт, передаваемый по кабелю) установлен равным 1, т.е. любой адрес с нечетным первым байтом рассматривается как групповой. Такие адреса используются различными аппаратными устройствами в протоколах начальной конфигурации. Адрес группового вещания в Internet — 01:00:5Е.
Широковещательные адреса канального уровня, если рассматривать их в двоичном виде, состоят из одних единиц.
В протоколе IP групповые адреса начинаются с байта, значение которого находится в диапазоне 224—239. В широковещательных адресах последняя часть адреса в двоичном виде состоит из одних единиц.