На рис. 2.4 показано, что уровень соединения состоит из интерфейса аппаратного обеспечения и двух модулей протоколов: ARP (Address Resolution Protocol, протокол преобразования адреса) и RARP (Reverse Address Resolution Protocol, протокол обратного преобразования адреса). Протокол ARP преобразует формат адреса сетевого уровня в формат адреса уровня соединения. RARP выполняет обратные действия, преобразуя формат адреса уровня соединения в формат адреса сетевого уровня.
Уровень соединения, называемый в модели ISO/OSI “data-link” (уровень обмена данными или канальный уровень), расположен между физическим и сетевым уровнями. Уровень соединения, как показано на рис. 2.4, обрабатывает поток данных между физическим и сетевым уровнями. В случае TCP/IP функции сетевого уровня выполняются модулем IP.
Кроме обработки данных, каждый уровень сетевой модели скрывает от соседей детали конкретной реализации протоколов. Уровень соединения скрывает от сетевого подробности, связанные с функционированием физического уровня. Хорошо спроектированный уровень соединения сделает так, что протоколам сетевого уровня будет все равно, на какой сети работать — будь то технология Ethernet или Token Ring. Данные будут просто передаваться уровню соединения, который и обеспечит всю дальнейшую обработку.
Для написания приложений Интернет необязательно знать подробности той или иной сетевой технологии, однако нужно знать, как данные проходят сквозь протокольный стек. Для того чтобы понять работу сетевого уровня соединения, необходимо познакомиться с работой хотя бы одной конкретной сетевой технологии.
Наиболее широко используются сети, построенные на технологии Ethernet. Сетевые компьютеры оборудованы одной или несколькими сетевыми картами, соединяющими их с сетью. Конструкция сетевой интерфейсной карты полностью зависит от сетевой технологии. Если ваша сеть — Ethernet, то и карта должна быть только Ethernet. Чтобы включить компьютер в сеть, в него необходимо вставить как минимум одну сетевую карту. Иногда, однако, компьютер оборудуется большим количеством сетевых карт. Сетевые карты могут принадлежать различным технологиям.
Компьютер с несколькими сетевыми картами имеет не один, а несколько сетевых адресов {multihomed}. Если он объединяет карты различных сетевых технологий, он может работать в качестве маршрутизатора. Например, компьютер, оборудованный картой Ethernet и картой Token Ring, может маршрутизировать данные между двумя различными сетями: Ethernet и Token Ring. Компьютер с двумя одинаковыми сетевыми картами (например, Ethernet) имеет два сетевых адреса, но не является маршрутизатором, хотя и перенаправляет данные между двумя сетями одинаковой технологии.
Компьютер соединяется с сетью Ethernet посредством сетевого кабеля и интерфейсной карты. Все компьютеры в локальной сети Ethernet соединены с одним и тем же кабелем. Когда программное обеспечение посылает данные по сети, они перемещаются от одной сетевой карты к другой. Каждая сетевая карта имеет уникальный адрес. Данные, проходящие по сети Ethernet, упаковываются в кадры. Кадр Ethernet состоит из двух адресов: получателя и отправителя, из собственно пользовательских данных и специального поля, обозначающего тип данных, переносимых кадром. Адрес формата Ethernet состоит из шести битов.
Каждая сетевая карта Ethernet следит, не появится ли ее адрес в кадрах, проходящих мимо нее по шине. Кроме собственного адреса, сетевые карты следят за появлением специального шестнадцатеричного адреса FF-FF-FF-FF-FF-FF, служащего уведомлением о том, что ведется широковещательная передача, предназначенная всем.
Все карты Ethernet могут одновременно слушать, но лишь одна может при этом передавать. Если две из них одновременно начнут передачу, возникнет столкновение. Технология Ethernet опознает такие ситуации и требует, чтобы устройства прекратили передачу и продолжили ее после короткого, но случайного промежутка времени. Методика распознавания столкновений называется “множественный доступ с прослушиванием несущей и обнаружением столкновений” (CSMA/CD).
Перед тем как соединить компьютер с сетью Ethernet, в него необходимо вставить сетевую карту. Далее, сетевую карту необходимо подключить к кабелю. Кабель соединит остальные сетевые компьютеры с вашим. Кабель — это канал, непосредственно переносящий данные от одного компьютера к другому. Интерфейсная карта соединяет компьютер (сетевые программы) с кабелем (физическим уровнем), являясь, таким образом, уровнем соединения сетевой модели.
Протоколы TCP/IP работают одинаково, независимо от применяемой сетевой технологии. Компьютер можно подключить к сети Ethernet, Token Ring и любой другой сети, поддерживающей TCP/IP, и везде этот модуль будет работать одинаково. Это происходит потому, что уровень соединения (интерфейсная карта) скрывает от него все особенности и отличия более низких уровней, определяемых сетевой технологией. Написав программу TCP/IP, вы можете быть уверены, что она без всяких изменений будет одинаково работать везде, в каких бы сетях ее ни применяли.
Приложение клиент-сервер, управляющее медицинской базой данных и основанное на TCP/IP, можно продать врачам, чьи локальные сети построены как на основе Ethernet, так и на основе Token Ring безо всяких изменений. Если вдруг больница перейдет к использованию других сетевых карт, кабелей или операционной системы, ни вам, ни программистам в больнице не понадобится вносить поправки в приложение. В каждом из приведенных примеров мы заменяли уровень соединения (сетевую карту), не оказывая воздействия ни на один из вышележащих уровней. В этом проявляется вся мощь многоуровневой сетевой модели и, в частности, протоколов TCP/IP.