Стек протоколов TCP/IP

Как упоминалось в предыдущей главе, TCP/IP — это не просто один-два протокола; обычно реализуется сразу целый набор протоколов, или, как иногда называют, стек протоколов. В предыдущей главе мы познакомились с соответствием между протоколами из стека TCP/IP и эталонной моделью OSI, но теперь рассмотрим этот стек более подробно. Как можно видеть на рис, стек TCP/IP состоит из четырех уровней: уровень приложений, транспортный уровень, уровень Интернета и сетевой уровень. В совокупности эти четыре уровня охватывают все функции модели OSI.
Внизу стека находится уровень сетевого интерфейса, который соответствует физическому уровню модели OSI. Этот уровень отвечает за перенос кадров в среду передачи и за извлечение кадров из среды передачи. Необходимо отметить, что это независимый от среды передачи уровень. Не имеет значения, будет ли это медный провод, волоконно-оптический кабель, лазер, инфракрасные лучи или радио. Кроме того, он не зависит от метода доступа к среде. Поэтому в локальной вычислительной сети (LAN) стек TCP/IP можно использовать поверх Ethernet, Token Ring или FDDI, и, конечно, можно использовать TCP/IP совместно с различными технологиями глобальных сетей (WAN), таких как последовательный канал, использующий старый протокол SLIP, или протокол РРР, который был создан как усовершенствование старого стандарта SLIP. РРР предоставляет службы канального уровня, которые включают обнаружение ошибок, управление конфигурацией, а также методы безопасности. Другим типом технологий WAN является коммутация пакетов, например Frame Relay или ATM.
Следующим уровнем снизу является уровень Интернета, который предоставляет функции, соответствующие второму (канальному) и третьему (сетевому) уровням модели OSI. Уровень Интернета отвечает за инкапсуляцию пакетов в дейтаграммы IP и выполняет все необходимые алгоритмы маршрутизации. Здесь имеются четыре протокола IP: протокол управляющих сообщений Интернета (Internet Control Message Protocol, iCMP), протокол управления группами Интернет (Internet Group Management Protocol, IGMP), протокол Интернет (Internet Protocol, IP) и протокол преобразования адресов (Address Resolution Protocol, ARP). Протокол ICMP используется для отправки сообщений и сообщений об ошибках относительно доставки пакетов. Он осуществляет это от имени IP. ICMP не делает IP "надежным" протоколом, но он может предоставить определенный уровень обратной связи по специальным условиям. Сами сообщения ICMP переносятся как дейтаграммы, т.е. без обеспечения надежности. Следующим протоколом, представленным на этом уровне, является IGMP. Он используется компьютерами для сообщения о своем членстве в определенной группе, чтобы получать широковещательные рассылки от маршрутизаторов, которые поддерживают широковещание. Эти рассылки передаются как дейтаграммы, т.е. являются ненадежной формой коммуникации. Последними двумя протоколами Интернета, о которых необходимо сказать, являются IP и ARP. В связи с важностью сетевой коммуникации мы рассмотрим их более детально. Остановимся сначала на протоколе IP.
IP отвечает за адресацию и маршрутизацию пакетов между компьютерами и сетями. (Каждое устройство в сети IP, имеющее IP-адрес, называется хостом; иногда хостами называют компьютеры, маршрутизаторы, принтеры и даже управляемые концентраторы.) Именно поэтому адрес, присвоенный хосту, поддерживающему стек TCP/IP, называется IP-адресом. Это протокол без поддержки соединения, т.е. он не создает сеанс перед передачей данных. В этом отношении он является ненадежным протоколом, так как не гарантирует доставку, не требуя подтверждения, что данные получены в месте назначения. Следующим протоколом уровня Интернета является протокол ARP.
ARP используется для поиска аппаратного адреса машины в сети. Этот адрес, называемый иногда адресом МАС или адресом платы Ethernet, требуется, если два компьютера собираются общаться друг с другом. Адрес МАС должен быть преобразован в адрес IP, чтобы хосты общались с помощью протокола IP. ?RP преобразует адрес с помощью широковещательной рассылки для всех хостов в локальной сети. Компьютер места назначения будет отвечать пакетом, который содержит IP-адрес и адрес МАС. Эта информация будет затем храниться в кэше ARP на локальной машине. Последующая информация предназначена для удаленного хоста; сначала будет проверяться кэш ARP, а затем посылаться другое широковещательное сообщение.
Второй уровень сверху является транспортным уровнем, отвечающим за обеспечение сеансов коммуникации между компьютерами. В стеке существуют два транспортных протокола. Это протокол управления передачей (Transmission Control Protocol, TCP) и протокол пользовательских дейтаграмм (User Datagram Protocol, UDP). Для наличия двух транспортных протоколов в стеке есть серьезная причина, так как они работают по-разному. ТСР является протоколом с поддержкой соединения, т.е. сначала он создает соединение с другой машиной. Используемый, когда требуется надежное соединение, он обеспечивает подтверждение доставки каждого пакета. Если подтверждение не получено, то посылающий компьютер пошлет информацию повторно. С другой стороны, UDP является протоколом без поддержки соединения, он не требует соединения и не гарантирует доставку пакета. Это протокол, работающий без гарантии доставки: он оставляет задачу отслеживания пакетов и управление потоком данных приложению, которое обращается к транспортному уровню.
Вверху модели находится уровень приложений. В стандартной реализации стека протоколов TCP/IP на этом уровне существует множество утилит. Такие протоколы, как FTP (File Transfer Protocol, протокол передачи файлов), Telnet, SNMP (Simple Network Management Protocol, простой протокол управления сетью), DNS (служба имен доменов) находятся на этом уровне, так как именно здесь приложения получают доступ к сети. В реализации TCP/IP компании Microsoft есть два способа, которыми приложения могут получить доступ к сети: либо через NetBIOS, либо через Windows Sockets. Интерфейс NetBIOS позволяет протоколам TCP/IP или NetBEUI использовать службы именования и сообщений, используя соглашение об именах NetBIOS, в то время как служба Windows Sockets предоставляет интерфейс прикладного программирования (API) для транспортных протоколов, таких как TCP/IP или IPX.