TCP/IP

Содержание 1. Введение 2. Основы TCP/IP 2.1. Модуль IP создает единую логическую сеть 2.2. Структура связей протокольных модулей 2.3. Терминология 2.4. Потоки данных 2.5. Работа с несколькими сетевыми интерфейсами 3. Ethernet 3.1. Аналогия с разговором 4. Протокол ARP 4.1. ARP-таблица для преобразования адресов 4.2. Порядок преобразования адресов 4.3. Запросы и ответы протокола ARP 4.4. Продолжение преобразования адресов 5. Межсетевой протокол IP 5.1. Прямая маршрутизация 5.2. Косвенная маршрутизация 5.3. Правила маршрутизации в модуле IP 5.4. IP-адрес 5.5. Выбор адреса 5.6. Подсети 5.7. Как назначать номера сетей и подсетей 5.8. Имена 5.9. IP-таблица маршрутов 5.10. Подробности прямой маршрутизации 5.11. Порядок прямой маршрутизации 5.12. Подробности косвенной маршрутизации 5.13. Порядок косвенной маршрутизации 6. Установка маршрутов 6.1. Фиксированные маршруты 6.2. Перенаправление маршрутов 6.3. Слежение за маршрутизацией 6.4. Протокол ARP с представителем 7. Протокол UDP 7.1. Порты 7.2. Контрольное суммирование 8. Протокол TCP 9. Протоколы прикладного уровня 9.1. Протокол TELNET 9.2. Протокол FTP 9.3. Протокол SMTP 9.4. r-команды 9.5. NFS 9.6. Протокол SNMP 9.7. X-Window 10. Взаимозависимость протоколов семейства TCP/IP Приложение 1. Путеводитель по RFC Приложение 2. Стандарты семейства протоколов TCP/IP

* 1. Введение * Семейство протоколов TCP/IP широко применяется во всем мире дляобъединения компьютеров в сеть Internet. Единая сеть Internet состоит измножества сетей различной физической природы, от локальных сетей типаEthernet и Token Ring, до глобальных сетей типа NSFNET. Основное внима-ние в книге уделяется принципам организации межсетевого взаимодействия.Многие технические детали, исторические вопросы опущены. Более подробнуюинформацию о протоколах TCP/IP можно найти в RFC (Requests For Comments)- специальных документах, выпускаемых Сетевым Информационным Центром(Network Information Center - NIC). Приложение 1 содержит путеводительпо RFC, а приложение 2 отражает положение дел в области стандартизациипротоколов семейства TCP/IP на начало 1991 года. В книге приводятся примеры, основанные на реализации TCP/IP в ОСUNIX. Однако основные положения применимы ко всем реализациям TCP/IP. Надеюсь, что эта книга будет полезна тем, кто профессионально рабо-тает или собирается начать работать в среде TCP/IP: системным администра-торам, системным программистам и менеджерам сети.

* 2. Основы TCP/IP * Термин "TCP/IP" обычно обозначает все, что связано с протоколами TCPи IP. Он охватывает целое семейство протоколов, прикладные программы идаже саму сеть. В состав семейства входят протоколы UDP, ARP, ICMP, TEL-NET, FTP и многие другие. TCP/IP - это технология межсетевого взаимо-действия, технология internet. Сеть, которая использует технологиюinternet, называется "internet". Если речь идет о глобальной сети, объе-диняющей множество сетей с технологией internet, то ее называют Internet.

2.1. Модуль IP создает единую логическую сеть Архитектура протоколов TCP/IP предназначена для объединенной сети,состоящей из соединенных друг с другом шлюзами отдельных разнородныхпакетных подсетей, к которым подключаются разнородные машины. Каждая изподсетей работает в соответствии со своими специфическими требованиями иимеет свою природу средств связи. Однако предполагается, что каждая под-сеть может принять пакет информации (данные с соответствующим сетевымзаголовком) и доставить его по указанному адресу в этой конкретной под- сети. Не требуется, чтобы подсеть гарантировала обязательную доставкупакетов и имела надежный сквозной протокол. Таким образом, две машины,подключенные к одной подсети могут обмениваться пакетами. Когда необходимо передать пакет между машинами, подключенными к раз-ным подсетям, то машина-отправитель посылает пакет в соответствующий шлюз(шлюз подключен к подсети также как обычный узел). Оттуда пакет направ-ляется по определенному маршруту через систему шлюзов и подсетей, пока недостигнет шлюза, подключенного к той же подсети, что и машина-получатель;там пакет направляется к получателю. Объединенная сеть обеспечиваетдатаграммный сервис. Проблема доставки пакетов в такой системе решается путем реализацииво всех узлах и шлюзах межсетевого протокола IP. Межсетевой уровеньявляется по существу базовым элементом во всей архитектуре протоколов,обеспечивая возможность стандартизации протоколов верхних уровней. 2.2. Структура связей протокольных модулей Логическая структура сетевого программного обеспечения, реализующегопротоколы семейства TCP/IP в каждом узле сети internet, изображена нарис.1. Прямоугольники обозначают обработку данных, а линии, соединяющиепрямоугольники, - пути передачи данных. Горизонтальная линия внизурисунка обозначает кабель сети Ethernet, которая используется в качествепримера физической среды; "o" - это трансивер. Знак "*" - обозначает ------------------------------ | прикладные процессы | | . \ | / . \ | / . | | ------- ------- | | | TCP | | UDP | | | ------- ------- | | \ / | | ------ | | ------- | IP | | | | ARP | -*---- | | ------- | | | \ | | | -------- | | | ENET | | | ---@---- | | | | ------------|----------------- | -------------------o-------- кабель Ethernet Рис.1. Структура протокольных модулей в узле сети TCP/IP IP-адрес, а "@" - адрес узла в сети Ethernet (Ethernet-адрес). Пониманиеэтой логической структуры является основой для понимания всей технологииinternet. В дальнейшем мы будем часто ссылаться на эту схему.

2.3. Терминология Введем ряд базовых терминов, которые мы будем использовать в даль-нейшем. Драйвер - это программа, непосредственно взаимодействующая с сетевымадаптером. Модуль - это программа, взаимодействующая с драйвером, сете-выми прикладными программами или другими модулями. Драйвер сетевогоадаптера и, возможно, другие модули, специфичные для физической сетипередачи данных, предоставляют сетевой интерфейс для протокольных модулейсемейства TCP/IP. Название блока данных, передаваемого по сети, зависит от того, накаком уровне стека протоколов он находится. Блок данных, с которым имеетдело сетевой интерфейс, называется кадром; если блок данных находитсямежду сетевым интерфейсом и модулем IP, то он называется IP-пакетом; еслион - между модулем IP и модулем UDP, то - UDP-датаграммой; если междумодулем IP и модулем TCP, то - TCP-сегментом (или транспортным сообще-нием); наконец, если блок данных находится на уровне сетевых прикладныхпроцессов, то он называется прикладным сообщением. Эти определения, конечно, несовершенны и неполны. К тому же онименяются от публикации к публикации. Более подробные определенияможно найти в RFC-1122, раздел 1.3.3.

2.4. Потоки данных Рассмотрим потоки данных, проходящие через стек протоколов, изобра-женный на рис.1. В случае использования протокола TCP (Transmission Con-trol Protocol - протокол управления передачей), данные передаются междуприкладным процессом и модулем TCP. Типичным прикладным процессом,использующим протокол TCP, является модуль FTP (File Transfer Protocol -протокол передачи файлов). Стек протоколов в этом случае будетFTP/TCP/IP/ENET. При использовании протокола UDP (User Datagram Protocol- протокол пользовательских датаграмм), данные передаются между приклад-ным процессом и модулем UDP. Например, SNMP (Simple Network ManagementProtocol - простой протокол управления сетью) пользуется транспортнымиуслугами 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-сообщения. Мультиплексирование данных в обратную сторону осуществляетсядовольно просто, так как из каждого модуля существует только один путьвниз. Каждый протокольный модуль добавляет к пакету свой заголовок, наосновании которого машина, принявшая пакет, выполняет демультиплексирова-ние. 1 2 3 n | 1 2 3 n ^ \ | | / | \ | | / | ----------------- поток ------------------- поток | мультиплексор | данных | демультиплексор | данных ----------------- | ------------------- | | | ^ | v V | | 1 1 Рис.2. Мультиплексор n x 1 и демультиплексор 1 x n Данные от прикладного процесса проходят через модули TCP или UDP,после чего попадают в модуль IP и оттуда - на уровень сетевого интер-фейса. Хотя технология internet поддерживает много различных сред передачиданных, здесь мы будем предполагать использование Ethernet, так какименно эта среда чаще всего служит физической основой для IP-сети.Машина на рис.1 имеет одну точку соединения с Ethernet. ШестибайтныйEthernet-адрес является уникальным для каждого сетевого адаптера и рас-познается драйвером. Машина имеет также четырехбайтный IP-адрес. Этот адрес обозначаетточку доступа к сети на интерфейсе модуля IP с драйвером. IP-адрес дол-жен быть уникальным в пределах всей сети Internet. Работающая машина всегда знает свой IP-адрес и Ethernet-адрес. 2.5. Работа с несколькими сетевыми интерфейсами Машина может быть подключена одновременно к нескольким средам пере-дачи данных. На рис.3 показана машина с двумя сетевыми интерфейсами Eth-ernet. Заметим, что она имеет 2 Ethernet-адреса и 2 IP-адреса. Из представленной схемы видно, что для машин с несколькими сетевымиинтерфейсами модуль IP выполняет функции мультиплексора n x m и демуль-типлексора m x n (рис.4). --------------------------------- | прикладные процессы | | . \ | / \ | / . | | ------- ------- | | | TCP | | UDP | | | ------- ------- | | \ / | | ------ | | ------- | IP | ------- | | | ARP | -*--*- | ARP | | | ------- | | ------- | | \ | | / | | -------- -------- | | | ENET | | ENET | | | ---@---- ---@---- | | | | | ----------|---------|------------ | | | ---o--------------- --------------o---- Ethernet 2 Ethernet 1 Рис.3. Узел сети TCP/IP с двумя сетевыми интерфейсами 1 2 3 n | 1 2 3 n ^ \ | | / | \ | | / | ----------------- поток ------------------- поток | мультиплексор | данных | демультиплексор | данных ----------------- | ------------------- | / | | . \ V / | | . \ | 1 2 3 m 1 2 3 m Рис.4. Мультиплексор n x m и демультиплексор m x n Таким образом, он осуществляет мультиплексирование входных и выходныхданных в обоих направлениях. Модуль IP в данном случае сложнее, чем впервом примере, так как может передавать данные между сетями. Данныемогут поступать через любой сетевой интерфейс и быть ретранслированычерез любой другой сетевой интерфейс. Процесс передачи пакета в другуюсеть называется ретрансляцией IP-пакета. Машина, выполняющая ретрансля-цию, называется шлюзом. [1] Как показано на рис.5, ретранслируемый пакет не передается модулямTCP или UDP. Некоторые шлюзы вообще могут не иметь модулей TCP и UDP.


Страница: