Основы TCP/IP
Основы 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.
[Назад] [Содержание] [Вперед]
|