Основы 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" - это трансивер. Знак "*" -
обозначает
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-сообщения.
Мультиплексирование данных в обратную сторону
осуществляется довольно просто, так как из
каждого модуля существует только один путь вниз.
Каждый протокольный модуль добавляет к пакету
свой заголовок, на основании которого машина,
принявшая пакет, выполняет
демультиплексирование.
Данные от прикладного процесса
проходят через модули 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).
Таким образом, он осуществляет
мультиплексирование входных и выходных данных в
обоих направлениях. Модуль IP в данном случае
сложнее, чем в первом примере, так как может
передавать данные между сетями. Данные могут
поступать через любой сетевой интерфейс и быть
ретранслированы через любой другой сетевой
интерфейс. Процесс передачи пакета в другую сеть
называется ретрансляцией IP-пакета. Машина,
выполняющая ретрансляцию, называется шлюзом. [1]
|