Основы TCP/IP
Термин "TCP/IP" обычно обозначает все, что связано с протоколами TCP
и IP. Он охватывает целое семейство протоколов, прикладные программы и
даже саму сеть. В состав семейства входят протоколы UDP, ARP, ICMP,
TELNET, FTP и многие другие. TCP/IP - это технология межсетевого
взаимодействия, технология internet. Сеть, которая использует
технологию
internet, называется "internet". Если речь идет о глобальной сети,
объединяющей множество сетей с технологией internet, то ее называют Internet.
Архитектура протоколов TCP/IP предназначена для объединенной сети,
состоящей из соединенных друг с другом шлюзами отдельных разнородных
пакетных подсетей, к которым подключаются разнородные машины. Каждая из
подсетей работает в соответствии со своими специфическими требованиями и
имеет свою природу средств связи. Однако предполагается, что каждая
подсеть может принять пакет информации (данные с соответствующим сетевым
заголовком) и доставить его по указанному адресу в этой конкретной
подсети. Не требуется, чтобы подсеть гарантировала обязательную доставку
пакетов и имела надежный сквозной протокол. Таким образом, две машины,
подключенные к одной подсети могут обмениваться пакетами.
Когда необходимо передать пакет между машинами, подключенными к разным
подсетям, то машина-отправитель посылает пакет в соответствующий шлюз
(шлюз подключен к подсети также как обычный узел). Оттуда пакет
направляется по определенному маршруту через систему шлюзов и подсетей,
пока не
достигнет шлюза, подключенного к той же подсети, что и машина-получатель;
там пакет направляется к получателю. Объединенная сеть обеспечивает
датаграммный сервис.
Проблема доставки пакетов в такой системе решается путем реализации
во всех узлах и шлюзах межсетевого протокола IP. Межсетевой уровень
является по существу базовым элементом во всей архитектуре протоколов,
обеспечивая возможность стандартизации протоколов верхних уровней.
Логическая структура сетевого программного обеспечения, реализующего
протоколы семейства TCP/IP в каждом узле сети internet, изображена на
рисунке. Прямоугольники обозначают обработку данных, а линии, соединяющие
прямоугольники, - пути передачи данных. Горизонтальная линия внизу
рисунка обозначает кабель сети Ethernet, которая используется в качестве
примера физической среды; "o" - это трансивер. Знак "*" - обозначает
Рис.1. Структура протокольных модулей в узле сети TCP/IP
IP-адрес, а "@" - адрес узла в сети Ethernet (Ethernet-адрес). Понимание
этой логической структуры является основой для понимания всей технологии
internet. В дальнейшем мы будем часто ссылаться на эту схему.
Введем ряд базовых терминов, которые мы будем использовать в
дальнейшем.
Драйвер - это программа, непосредственно взаимодействующая с сетевым
адаптером. Модуль - это программа, взаимодействующая с драйвером, сетевыми
прикладными программами или другими модулями. Драйвер сетевого
адаптера и, возможно, другие модули, специфичные для физической сети
передачи данных, предоставляют сетевой интерфейс для протокольных модулей
семейства TCP/IP.
Название блока данных, передаваемого по сети, зависит от того, на
каком уровне стека протоколов он находится. Блок данных, с которым имеет
дело сетевой интерфейс, называется кадром; если блок данных находится
между сетевым интерфейсом и модулем IP, то он называется IP-пакетом; если
он - между модулем IP и модулем UDP, то - UDP-датаграммой; если между
модулем IP и модулем TCP, то - TCP-сегментом (или транспортным сообщением);
наконец, если блок данных находится на уровне сетевых прикладных
процессов, то он называется прикладным сообщением.
Эти определения, конечно, несовершенны и неполны. К тому же они
меняются от публикации к публикации. Более подробные определения
можно найти в RFC-1122, раздел 1.3.3.
Рассмотрим потоки данных, проходящие через стек протоколов,
изображенный на
рис.1.
В случае использования протокола TCP (Transmission
Control Protocol - протокол управления передачей), данные передаются между
прикладным процессом и модулем TCP. Типичным прикладным процессом,
использующим протокол TCP, является модуль FTP (File Transfer Protocol
протокол передачи файлов). Стек протоколов в этом случае будет
FTP/TCP/IP/ENET. При использовании протокола UDP (User Datagram Protocol
- протокол пользовательских датаграмм), данные передаются между прикладным
процессом и модулем UDP. Например, SNMP (Simple Network Management
Protocol - простой протокол управления сетью) пользуется транспортными
услугами UDP. Его стек протоколов выглядит так: SNMP/UDP/IP/ENET.
Модули TCP, UDP и драйвер Ethernet являются мультиплексорами n x 1.
Действуя как мультиплексоры, они переключают несколько входов на один
выход. Они также являются демультиплексорами 1 x n. Как демультиплексоры,
они переключают один вход на один из многих выходов в соответствии
с полем типа в заголовке протокольного блока данных (рис.2).
Когда Ethernet-кадр попадает в драйвер сетевого интерфейса Ethernet,
он может быть направлен либо в модуль ARP (Address Resolution Protocol
адресный протокол), либо в модуль IP (Internet Protocol - межсетевой
протокол). На то, куда должен быть направлен Ethernet-кадр, указывает
значение поля типа в заголовке кадра.
Если IP-пакет попадает в модуль IP, то содержащиеся в нем данные
могут быть переданы либо модулю TCP, либо UDP, что определяется полем
"протокол" в заголовке IP-пакета.
Если UDP-датаграмма попадает в модуль UDP, то на основании значения
поля "порт" в заголовке датаграммы определяется прикладная программа,
которой должно быть передано прикладное сообщение. Если TCP-сообщение
попадает в модуль TCP, то выбор прикладной программы, которой должно быть
передано сообщение, осуществляется на основе значения поля "порт" в заголовке
TCP-сообщения.
Мультиплексирование данных в обратную сторону осуществляется
довольно просто, так как из каждого модуля существует только один путь
вниз. Каждый протокольный модуль добавляет к пакету свой заголовок, на
основании которого машина, принявшая пакет, выполняет демультиплексирование.
Рис.2. Мультиплексор n x 1 и демультиплексор 1 x n.
Данные от прикладного процесса проходят через модули TCP или UDP,
после чего попадают в модуль IP и оттуда - на уровень сетевого интерфейса.
Хотя технология internet поддерживает много различных сред передачи
данных, здесь мы будем предполагать использование Ethernet, так как
именно эта среда чаще всего служит физической основой для IP-сети.
Машина на рис.1
имеет одну точку соединения с Ethernet. Шестибайтный
Ethernet-адрес является уникальным для каждого сетевого адаптера и
распознается драйвером.
Машина имеет также четырехбайтный IP-адрес. Этот адрес обозначает
точку доступа к сети на интерфейсе модуля IP с драйвером. IP-адрес должен
быть уникальным в пределах всей сети Internet.
Работающая машина всегда знает свой IP-адрес и Ethernet-адрес.
Машина может быть подключена одновременно к нескольким средам передачи
данных. На рис.3 показана машина с двумя сетевыми интерфейсами Ethernet.
Заметим, что она имеет 2 Ethernet-адреса и 2 IP-адреса.
Из представленной схемы видно, что для машин с несколькими сетевыми
интерфейсами модуль IP выполняет функции мультиплексора n x m и
демультиплексора m x n (рис.4).
Рис.3. Узел сети TCP/IP с двумя сетевыми интерфейсами.
Рис.4. Мультиплексор n x m и демультиплексор m x n .
Таким образом, он осуществляет мультиплексирование входных и выходных
данных в обоих направлениях. Модуль IP в данном случае сложнее, чем в
первом примере, так как может передавать данные между сетями. Данные
могут поступать через любой сетевой интерфейс и быть ретранслированы
через любой другой сетевой интерфейс. Процесс передачи пакета в другую
сеть называется ретрансляцией IP-пакета. Машина, выполняющая ретрансляцию,
называется шлюзом. [1]
Как показано на рис.5, ретранслируемый пакет не
передается модулям
TCP или UDP. Некоторые шлюзы вообще могут не иметь модулей TCP и UDP.
[Назад]
[Содержание]
[Вперед]