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

Общие сведения о семействе протоколов TCP/IP

История, применения, сравнение с OSI. Internet, internet.

Что такое RFC.

Здесь содержатся минимальные сведения, необходимые для понимания функционирования сетей передачи данных, использующих смейство протоколов TCP/IP.

Архитектура семейства протоколов TCP/IP

Семейство протоколов "TCP/IP" обычно обозначает совокупность различных протоколов различных уровней и назначения, которые связаны с основными, базовыми протоколами IP (Internet Protocol - межсетевой протокол, RFC-791) и TCP (Transmission Control Protocol - протокол управления передачей, RFC-793). Оно включает ряд других сетевых протоколов и сетевых приложений. Примерами таких сетевых протоколов являются: UDP (User Datagram Protocol - протокол передачи пользовательских дайтаграмм, RFC-), ARP (Address Resolution Protocol - протокол определения адресов), ICMP (Internet Control Message Protocol, RFC-) и другие, о которых будет дана информация ниже. Примеры сетевых приложений: FTP (File Transfer Protocol - протокол передачи файлов), SMTP (Simple Mail Transfer Protocol - "простой" протокол передачи электронной почты), TELNET () и значительное количество других приложений. Поэтому более правильно говорить не о семействе протоколов TCP/IP, а о сетевой технологии, основанной на семействе протоколов TCP/IP, или Internet-технологии, а сети, использующие эту технологию называть internet.

Логическая структура семейства протоколов TCP/IP представлена ниже на рис. 1.

			 @                o
			 |  ------*------ |

			   Рис. 1

Как видно из рисунка, логическая структура семейства протоколов TCP/IP является многоуровневой. Эти протоколы должны 3 быть реализованы в каждой ЭВМ сети internet. Представленная логическая структура протоколов определяет поведение каждого компьютера сети internet. Прямоугольники на рис. 1 представляют модули обработки определенных протокольных блоков данных, а линии между ними - возможные пути прохождения блоков данных в компьютере. Горизонтальная линия в нижней части рисунка представляет кабель локальной сети Ethernet. "o" обозначает трансивер, "*" - IP-адрес, "@" - Ethernet-адрес. Хотя на рисунке представлена среда передачи Ethernet, аналогичная структура имеет место и при использовании ряда других сред передачи.

Определим термины, которые часто будут встречаться ниже. Блок данных, проходящий через элементы сети internet, имеет различные наименования: в Ethernet он имеет название кадр или Ethernet-кадр; если блок данных находится между IP-модулем и драйвером сети Ethernet (ENET), то он называется IP-пакетом; если блок данных находится между UDP и IP-модулями, - UDP-дейтаграммой; если между TCP и IP-модулями, - TCP-сегментом или, более обще, - транспортным сообщением; блоки данных, поступающие от сетевых приложений, называются сообщениями этих приложений. Эти определения не являются общепринятыми и меняются в различных публикациях и руководствах, однако они необходимы для дальнейшего изложения. Более точные определения английских терминов можной найти в RFC-1122. Драйвер - это программа, которая непосредственно управляет сетевым оборудованием (некоторым физическим устройством) и обменивается с ним соответсвующими блоками данных. Модуль - программа, которая взаимодействует с драйвером, сетевыми приложениями или другими модулями.

Протокол IP (Internet Protocol - межсетевой протокол, RFC-791). Рассмотрим прохождение блоков данных по стеку протоколов, показанных на рис. 1. Для приложений, использующих протокол TCP, данные передаются прикладной программой TCP-модулю. Для приложений, использующих протокол UDP, данные передаются прикладной программой UDP-модулю. Далее данные передаются IP-модулю, ENET-драйверу и в среду передачи. Прикладной протокол FTP (проткол передачи файлов) является типичным приложением, использующим проткол TCP, стек протоколов в этом случае выглядит следующим образом FTP/TCP/IP/ENET. SNMP (Simple Network Management Protocol - "простой" проткол управления сетью) является приложением, использующим для обмена данными с SNMP-модулями, расположенными в других узлах сети, протокол UDP. Стэк протоколов в этом случае - SNMP/UDP/IP/ENET.

TCP, UDP, IP-модули и ENEЕ-драйвер являются "мультиплексорами", т.к. подключают много входов к одному выходу. Одновременно они являются и "демультиплексорами". В последнем случае они распределяют данные, поступающие из одного входа на несколько выходов в соответствии с определенным полем в заголовке протокольного блока данных

Когда Ethernet-кадр поступает из сети, из него извлекается пакет, который направляется ARP или IP-модулю в зависимости от значения в поле "тип" в заголовке кадра.

IP-пакет направляется UDP или TCP-модулю в зависимости от значения "протокол" в заголовке IP-пакета.

Направление передачи прикладного сообщения из UDP или TCP-модуля определяется значением номера порта (гнезда - по другой терминологии) в заголовке сообщения.

Мультиплексирование осуществляется без анализа заголовков блоков данных, т.к. выход вниз всегда один. Каждый протокольный модуль добавляет в заголовок блока данных свою информацию, которая необходима для осуществления демультиплексирования в компьютере-получателе данных.

Хотя TCP/IP-технология допускает использование различных сетевых сред, в этом пункте рассматривается в качестве примера Ethernet, как наиболее часто используемая. Адрес интерфейса в сетях Ethernet является уникальным и имеет длину 6 байт.

Компьютер имеет также 4-байтовый сетевой IP-адрес (или несколько сетевых IP-адресов в случае его пдключения к нескольким сетевым средам). Каждый IP-адрес должен быть уникальным в сети internet.

При подключении компьтера к двум различным сетям Ethernet он должен иметь два Ethernet и два IP-адреса (см. рис. 3.2.2.3).

Компьютер, имеющий несколько физических сетевых интерфейсов, выполняет функции маршрутизации и называется IP-маршрутизатором (IP-router). Транзитные IP-пакеты не используют UDP или TCP-модули при их обработке. Некоторые реализации IP-маршрутизаторов не имеют TCP-модулей. IP-модуль является основным в TCP/IP-технологии, т.к. формирует единую логическую TCP/IP-сеть независимо от используемых в ней сред передачи. IP-уровень маскирует от более высоких уровней (транспортного и прикладног) используемые физические средства 3 передачи данных. При появлении новых физических средств передачи они могут быть использованы в internet после создания соответствующих драйверов. Таким образом, сетевые прикладные задачи по-прежнему смогут обмениваться информацией, несмотря на изменение физических средств передачи в сети.

Для передачи IP-пакетов между компьютерами сети используется протокол ARP, который обычно реализуется в одном программном модуле вместе с протоколом IP. Протокол ARP используется для преобразования IP-адресов в Ethernet-адреса для передачи IP-пакетов между компьютерами сети для доставки их от компьютера-отправителя к компьютеру-получателю. Для этих целей в каждом компьютере имеется таблица соответствия IP и Ethernet-адресов.

Типичный сценарий передачи данных между прикладными задачами выглядит следующим образом. В процессе нормального функционирования некоторго приложения, например, TELNET, прикладной процесс посылает сообщение TCP-модулю, а затем IP-модулю. IP-адрес получателя известен и прикладной задаче, и TCP, и IP-модулю. Однако Eternet-адрес первого транзитного узла сети (компьютера) должен быть определен в результате просмотра ARP-таблицы, которая формируется автоматически протоколом ARP. Каждый компьютер сети имеет отдельную ARP-таблицу для каждого физического интерфейса (в контексте данного примера - интерфейса с каждой сетью Ethernet). IP-пакет помещается в Ethernet-кадр и передается следующему компьютеру сети, где он принимается ENET-драйвером и передается IP-модулю.

Как было указано выше, протокол IP является центральным в TCP/IP технологии. Основной функцией этого протокола является маршрутизация IP-пакетов. Для выполнения этой функции используется маршрутная таблица, которая необходима для выполнения действий по направлению пакетов для передачи в тот или иной физический интерфейс. Маршрутные таблицы формируются администратором сети и не должны содержать ошибок, т.к. они могут привести к блокировке работы сети.

Если отправитель и получатель находятся в одной локальной сети, то передача осуществляется непосредственно между ними, в этом случай говорят о "прямой маршрутизации". Если же отправитель и получатель находятся в различных локальных сетях, то IP-пакет должен пройти через ряд транзаитных узлов (компьютеров) сети, прежде чем он достигнет получателя. На рис. 3.2.2.4 предсталена сеть более сложной структуры, которая позволяет проиллюстрировать процедуру передачи IP-пакетов с использованием процедуры маршрутизации в общем случае. Представленная на рис. 3.2.2.4 сеть состоит из трех локальных сетей, соединение которых осуществляется с помощью одного IP-маршрутизатора (компьютер D). Каждый компьютер сети (A, B, ...) за исключением компьютера D имеет уникальный IP и Ethernet-адрес. Стек протоколов этих компьютеров совпадает с приведенным на рис.3.2.2.1 (за исключением, возможно, компьютера D). Компьютер D является IP-маршрутизатором и имеет три IP и три Ethernet-адреса. Компьютер D имеет стек протоколов аналогичный изображенному на рис. 3.2.2.3 за исключением того, что имеет три ARP-модуля и три ENET-драйвера. Заметим, что он имеет только один IP-модуль. Для каждой подсети администратор должен назначить уникальный сетевой IP-адрес или имя.

Если компьютер A посылает IP-пакет компьютеру B, то IP-маршрутизатор (компьютер D) в процессе передачи не используется. Если же IP-пакет направляется из A в E, то IP-модуль компьютера D используется для маршрутизации этого пакета. В 3 заголовке IP-пакета указывается адрес получателя (IP-адрес компьютера E), однако в заголовке кадра при передаче его из компьютера A указывается адрес в сети Ethernet компьютера D, т.к. он является транзитным при передаче пакета из A в E. Далее, при доставке IP-пакета из D в E он помещается в кадр сети Ethernet и передается непосредственно компьютеру E. Все эти процессы протекают незаметно для протоколов транспортного (TCP, UDP) и прикладного уровней.

Процедура или алгоритм функционирования IP-модуля следующая. Для каждого поступающего с верхнего уровня пакета IP-модуль определяет, по какому физическому интерфейсу должен быть передан пакет. Решение принимается на основании маршрутной таблицы данного IP-модуля. Для пакетов, поступающих с нижнего уровня, IP-модуль определяет, достиг ли этот пакет компьютера-получателя, и, если это так, направляет пакет соответствующему модулю транспортного уровня. В противном случае IP-модуль обрабатывает пакет точно так же, как и при поступлении его с верхнего (транспортного) уровня.

Кроме того, одной из важных функций протокола IP является фрагментация пакетов при прохождении их через подсети с небольшим размером пакета и сборка исходных пакетов из фрагментов у получателя информации.

Назначение IP-адресов компьютерам сети internet выполняется администратором в соответствии с адресами подсетей, в которых они находятся. Одна часть 4-байтового IP-адреса является адресом подсети, другая - адресом компьютера в данной подсети. Например, IP-адрес компьютера 223.1.2.1 содержит адрес сети, равный 223.1.2, и адрес компьютера в данной сети - 1.

Часть адреса компьютера, являющаяся адресом сети, определяется первыми битами. Существует три формата адресов, определенных в документе RFC-790, и, соответственно, три класса сетей.

В классе A первый бит адреса равен 0, остальные 7 битов первого октета являются адресом сети, остальные 24 бита дают адрес компьютера в сети. В классе B первые два бита адреса равны 10, следующие 14 битов определяют адрес сети, оставшиеся 16 битов - адрес компьютера в сети. В классе C первые три бита адреса равны 110, следующие 21 бита определяют адрес сети, оставшиеся 8 бит - локальный адрес компьютера в данной сети. Таким образом, в Internet допускается организация 2097152 сетей класса C, каждая из которых может содержать до 254 компьютеров (адрес 255 используется для широковещательной передачи в сети).

Для удобства пользователей в сети допускается использование вместо адресов "имен" для компьютеров. В случае небольших сетей для реализации такой услуги в каждом компьютере должна содержаться 3 таблица соответствия имен и адресов. В больших сетях для этих целей обычно используется специальный компьютер (так называемый Name Server). Таблица также может содержать имена и, соответственно, адреса сетей.

Протокол UDP (User Datagram Protocol - протокол передачи дейтаграмм, RFC-) распологается непосредственно над IP-уровнем. Он предлагает сервис для прикладного уровня, который незначительно отличается от сервиса на уровне IP, и используется для приложений, ориентированных на обмен короткими сообщениями, которые могут поместиться в один IP-пакет. Примерами таких приложений являются SNMP (RFC-) и NFS (Network File System - сетевая файловая система, RFC- ).

UDP предоставляет дейтаграммный сервис без установления соединения, который не гарантирует доставку дейтаграмм. UDP, иначе говоря, не устанавливает и не поддерживает соединение с удаленным UDP-модулем. UDP просто отправляет дейтаграммы в сеть и принимает их из сети. UDP реализует только две дополнительные функции по сравнения с IP: осуществляет мультиплексирование потоков данных, используя номера портов, и контролирует правильность получаемых данных.

Протокол TCP (Transmission Control Protocol - протокол управления передачей, RFC-793) предназначен для реализации ориентированного на соединение сервиса по передаче потоков байтов с гарантированной доставкой информации. TCP используется прикладными программами, требующими гарантированной доставки данных, которая реализуется путем использования механизмов тайм-аута и повторной передачи. Наиболее известными сетевыми приложениями, использующими протокол TCP, являются FTP (File Transfer Protocol, RFC-) и TELNET (RFC-). Другими известными прикладными сетевыми программами являются rcp (удаленное копирование файлов) и другие r-команды. Подобно UDP протокол TCP использует номера портов для взаимодействия с прикладными процессами.

Когда стартует некоторое приложение, использующее протокол TCP, TCP-модуль компьютера-клиета (компьютера, запрашивающего услугу) устанавливает соединение с TCP-модулем компьютера-сервера (предоставляющего сервис). Эти два TCP-модуля создают структуру данных для хранения информации о данном виртуальном соединении, являющемся потребителем ресурсов каждого компьютера. Виртуальное соединение является дуплексным. Приложение передает данные в порт TCP-модуля и получает данные из порта.

Основными функциями протокола TCP являются: пакетизация потока данных, контроль правильности принимаемых данных, управление потоком для согласования скоростей работы передающего и принимающего данные компьютеров и передача подтверждений, повторная передача неподтвержденных данных после истечения тайм-аутов,взаимодействие с прикладными процессами и IP-модулем.

Сетевые прикладные программы. Протоколы UDP и TCP, являясь оба протоколами транспортного уровня, предоставляют различный сервис и используются различными приложениями. Большинство приложений реализованы так, чтобы использовать только один из них. UDP используется, когда требуется обмен короткими сообщениями. Кроме того, этот протокол более эффективен в сетях с большой пропускной способностью и малыми задержками. В сетях с относительно большими задержками, и при передаче больших объемов информации более эффективным оказывается протокол TCP.

Какие сетевые приложения доступны пользователям сетей TCP/IP? Имеется большой список таких приложений, который постоянно растет. Некоторые из них существуют с момента появления технологии 3 internet (TELNET, FTP), другие являются относительно новыми (X-Window, SNMP). Ниже даны краткие описания приложений, упомянутых выше в данном разделе. В следующем пункте дано более широкое и подробное описание конкретных реализаций.

TELNET - обеспечивает доступ к удаленным компьютерам сети. Операции, выполняемые пользователем, подобны набору телефонного номера с компьютера: в командной строке пользователь должен набрать "telnet delta", после чего он получает со своего терминала доступ к удаленному компьютеру с именем "delta" и может начинать работу. TELNET является одним из самых старых протоколов в Internet и реализован для большого числа операционных систем. Например, клиент TELNET может быть реализован в MS/DOS или VAX/VMS, а сервер - на UNIX System V.

FTP (File Transfer Protocol) так же стар, как и TELNET, так же использует транспортный протокол TCP и так же имеет широкое распространение. Доступные в FTP операции выглядят похоже на TELNET. Однако вместо обычных операций-команд пользователь получает возможность использовать специальные команды FTP. Команды эти позволяют управлять директориями и осуществлять копирование файлов.

rsh (remote shell), rcp, rwho и т.д. - команды-аналоги удаленного выполнения операций OS UNIX. r-команды в основном выполняются при доступе к компьютерам с OS UNIX.

NFS (Network File System - сетевая распределенная файловая система, RFC-), разработанная Sun Microsystems Inc, использует протокол транспортного уровня UDP и является средством создания распределенной файловой системы на некотором множестве компьютеров. Бездисковая рабочая станция может в этом случае воспользоваться дисковыми ресурсами удаленного сервера точно так же, как если бы они (ресурсы) были ее собственными. NFS создает значительную нагрузку на сеть и может быть эффективна только в сетях с высокой пропускной способностью и малыми задержками. Однако ее преимущества и перспективы использования очень велики, т.к. клиент NFS получает доступ ко всем приложениям и информации, расположенным на удаленных компьютерах, как если бы они имелись на его собственном локальном диске.

SNMP (Simple Network Management Protocol - "простой" протокол управления сетью, RFC-) использует протокол UDP и создан для централизованного управления TCP/IP-сетью. Все компьютеры сети длжны иметь в составе своего программного обеспечения агентов SNMP. Центральная станция осуществляет диагностику и управление компьютерами сети.


Содержание