Соотношение между TCP/IP и OSI/ISO

В 1984 г. международная организация ISO предложила семиуровневую модель взаимодействия открытых систем OSI (Open System Interconnection).

Распределение протоколов по уровням модели OSI  
Прикладной HTTP, SMTP, SNMP, RTP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
Представительский XDR, ASN.1, AFP, TLS, SSL
Сеансовый ISO 8327 / CCITT X.225, RPC, NetBIOS, ASP
Транспортный TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
Сетевой IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP, ARP, RARP
Канальный Ethernet, Token ring, PPP, HDLC, X.25, Frame relay, ISDN, ATM, MPLS, Wi-Fi
Физический электрические провода, радиосвязь, оптоволокно

Стек протоколов TCP/IP, на базе которого была построена Internet включает в себя протоколы четырёх уровней:

  • прикладного уровня (FTP, DNS, HTTP, HTTPS, IMAP, IRC, POP3, SMTP, Telnet)
  • транспортного уровня ( TCP, UDP)
  • межсетевого (internet) (IP, ICMP)
  • сетевого (network access) (Ethernet, X.25, Token Ring, Wi-Fi).

В стеке TCP/IP верхние 3 уровня модели OSI(прикладной, представительский и сеансовый) объединяют в один — прикладной.

Распределение протоколов по уровням модели TCP/IP
Прикладной HTTP, RTP, FTP, DNS
Транспортный TCP, UDP, SCTP, DCCP
Сетевой это IP и вспомогательные протоколы ICMP и IGMP
Канальный Ethernet, SLIP, Token Ring, ATM и MPLS
Физический физическая среда и принципы кодирования T1, E1

На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных.

На каждом уровне стека протоколов TCP/IP обмен данными ведется блоками данных конечной длины. Названия блоков данных зависят от уровня стека протоколов: прикладной и транспортный – Пакет, межсетевой – Сегмент, сетевой – Кадр.

Межсетевой протокол IP

Протокол реализует обмен информации IP-сегментами размером до 65535 байт. Каждый сегмент содержит заголовок и данные. IP является протоколом взаимодействия без установления логического соединения. Для адресации узлов сети используется IP - адрес длиной 4 байта. Протокол не гарантирует надежность доставки сегментов адресату. IP-сегменты имеют конечное время жизни в сети. В Таблице приведен формат IPv4 заголовка IP-сегмента.

 
Версия IHL Тип обслуживания Длина пакета  
Идентификатор Флаги Смещение фрагмента  
Число переходов (TTL) Протокол Контрольная сумма заголовка  
IP-адрес отправителя (32 бита)  
IP-адрес получателя (32 бита)  
Параметры (до 320 бит) Данные (до 65535 байт минус заголовок)  
                                                               
  • Версия —4-х битовое поле, содержащее версию протокола IP. Для IPv4 это 4.
  • IHL — длина заголовка IP-пакета в 32-битных словах. Минимальное значение равно 5.
  • Тип обслуживания: В большинстве реализаций протокола поле равно 0.
  • Длина сегмента: двухбайтовое поле, содержащее длину IP-сегмента, включая длину заголовка. Максимальная длина сегмента - 65535 байт.
  • Идентификатор — значение, назначаемое отправителем пакета для определения корректной последовательности фрагментов при сборке датаграммы.
  • 3 бита флагов. Первый бит всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и третий бит MF (more fragments) показывает, не является ли этот пакет последним.
  • Смещение фрагмента — поле содержит смещение данных, содержащихся в IP-фрагменте, по отношению к началу данных исходного IP-сегмента.
  • Число переходов — максимальное число маршрутизаторов, которые может пройти пакет.
  • Транспорт: содержит идентификатор протокола транспортного уровня, для которого предназначены данные IP-сегмента. Например: 1 -ICMP, 6 – TCP, 17-UDP.
  • Контрольная сумма заголовка: двухбайтовое поле, содержащее контрольную сумму заголовка IP-сегмента. Для данных IP-сегмента контрольная сумма подсчитывается отдельно в протоколах транспортного уровня.
  • Время жизни(TTL - Time To Live): однобайтовое поле, содержащее количество единиц времени жизни IP-сегмента в сети. Каждый транзитный узел сети, через который проходит IP-сегмент, уменьшает содержимое этого поля, по крайней мере, на 1 и обязан уничтожать IP-сегменты, для которых "время жизни" стало равным нулю. Этим предотвращается появление в сети "блуждающих" сегментов.
  • Адрес источника и адрес приемника: четырехбайтовые IP-адреса узлов сети.
  • Дополнительные параметры: содержит необязательные данные заголовка (управление сетью, секретность и т.п.).

Для протокола версии IPv6 значение поля версия должно быть равно 6. Заголовок сегмента также отличается от версии 4.

Дополнительные данные IP-заголовка: Предписываемый маршрут, пройденный маршрут, временные метки, флаг окончания

Транспортный протокол TCP

Протокол TCP (Transmission Control Protocol) является протоколом транспортного уровня, обеспечивающим надежную передачу данных в сети. Его транспортный адрес в заголовке IP-сегмента равен 6. Обмен данными осуществляется посредством "TCP-пакетов". В Таблице приведен формат заголовка TCP-пакета.

Формат сегмента TCP
Бит 0 — 3 4 — 9 10 — 15 16 — 31
Порт источника Порт назначения
Номер последовательности
Номер подтверждения
Смещение данных Зарезервировано Флаги Окно
Контрольная сумма Указатель важности
Опции (необязательное, но используется практически всегда)
160/192+ Данные

Порт источника и порт приемника: 16-битовые поля, содержащие номера портов. Существует набор служб, использующих TCP, за которыми закреплены определенные порты: 20/21 — FTP; 22 — SSH; 23 — Telnet; 25 — SMTP; 80,8080 — HTTP, альтернативный порт HTTP; 110 — POP3; 194 — IRC (Internet Relay Chat); 443 — HTTPS (Secure HTTP); 8080 — альтернативный порт HTTP

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

1. Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности равный ISN + 1.

2. В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.

Номер подтверждения: 32-битовое поле содержит количество принятых данных из входящего потока к TCP-модулю, формирующему TCP-пакет. Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.

Смещение данных: содержит длину заголовка TCP-пакета в 32-битовых словах и используется для определения начала расположения данных в TCP-пакете. Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены:

· CWR (Congestion Window Reduced) — Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтоб указать, что получен пакет с установленным флагом ECE (RFC 3168)

· ECE (ECN-Echo) — Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

Флаги (управляющие биты) Это поле содержит 6 битовых флагов:

  • URG: бит= 1 означает, что пакет содержит важные (urgent) данные
  • ACK=1 означает, что пакет содержит в поле "номер подтверждения" верные данные.
  • PSH=1 инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя
  • RST=1 Оборвать соединения, сбросить буфер (очистка буфера)
  • SYN= 1 означает, что TCP-пакет представляет собой запрос на установление логического соединения.
  • FIN= 1 означает, что TCP-пакет представляет запрос на закрытие соединения.

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

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

Указательважности: 16-битовое поле, содержащее указатель на первый байт в теле TCP-пакета, начинающий последовательность важных (urgent) данных.

Дополнительные данные заголовка: Протокол TCP определяет три типа дополнительных данных заголовка: конец списка полей дополнительных данных; пусто (No Operation); максимальный размер пакета.

В отличие от протокола UDP, который может сразу же начать передачу пакетов, TCP перед передачей данных устанавливает соединения:

  • Установка соединения
  • Передача данных
  • Завершение соединения

При обмене данными приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности, до которой он успешно получил данные, включая его в поле «номер подтверждения». Если впоследствии будет принят сегмент, относящийся к ожидаемому номеру последовательности, то порядок данных будет автоматически восстановлен исходя из номеров последовательностей в сегментах.

Для того, чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. Для этого используется поле «окно». В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, пока приемник не сообщит о большем размере окна.

Последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.

Завершение соединения можно рассмотреть в три этапа:

  1. Посылка серверу от клиента флагов FIN и ACK на завершение соединения.
  2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.
  3. После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.

Протоколы транспортного уровня, обеспечивающие надежную передачу данных, предполагают подтверждение принимающей стороной правильности полученных данных. Для этого используется принцип "скользящего окна" (sliding window), который заключается в том, что каждая сторона может отправлять партнеру максимум столько байт, сколько партнер указал в поле "размер окна" заголовка TCP-пакета, подтверждающего получение предыдущих данных. Принцип "скользящего окна" обеспечивает опережающую посылку данных с отложенным их подтверждением. Если в течение некоторого времени не будет получено отложенное подтверждение отправленного пакета, то отправляющий TCP-модуль будет вынужден повторить посылку всех TCP-пакетов, начиная с неподтвержденного пакета.

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

Протокол дэйтаграмм UDP

Протокол дэйтаграмм пользователя UDPявляется протоколом транспортного уровня и базируется на возможностях, предоставляемых межсетевым протоколом IP. Его транспортный адрес в заголовке IP-сегмента равен 17. Заголовок UDP-пакета содержит двухбайтовые поля - порт источника и порт приемника. Поле длина содержит длину всего UDP-пакета. Основная задача UDP - обеспечение "быстрой" передачи данных в сети. Основные характеристики протокола UDP: реализует взаимодействие в режиме без установления логического соединения; не имеет средств уведомления источника UDP-пакета о правильности/ошибочности в его приеме адресатом и не гарантирует надежной передачи данных; имеется поле, содержащее контрольную сумму, подсчитанную для заголовка, данных и псевдозаголовка.

Наиболее распространенные протоколы маршрутизации, входящие в состав стека протоколов TCP/IP:

Address Resolution Protocol, ARP. Протокол разрешения адресов, сопоставляет IP-адрес с адресом физического оборудования MAC-адресом. Посмотреть соответствие адресов из ARP-таблицы можно набрав в командной строке arp и указав IP-адрес. *Routing Information Protocol, RIP. Протокол маршрутной информации, который используется для обратной совместимости с существующими RIP-сетями. *Open Shortest Path First, OSPF. Протокол выбора кратчайшего маршрута.

IP-маршрутизация

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

Маршрутизация осуществляется на узле-отправителе в момент отправки IP-пакета, а затем на IP-маршрутизаторах.

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

Протоколы ARP и RARP

Основным функциональным достоинством IP-адресации является полная логическая независимость IP-адресов от физических адресов. Однако чтобы средства канального уровня могли осуществить доставку данных, необходимо знание физического адреса получателя. Механизм определения по IP-адресу физического адреса узла-получателя обеспечивает протокол ARP (Address Resolution Protocol, Протокол Разрешения Адреса).

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

Наличие на каждом узле ARP-таблицы позволяет снизить объем широковещательной рассылки, поскольку запрос направляется в сеть только в случае, если нужное соответствие не найдено в ARP-таблице.

В ряде случаев может оказаться необходимым определить IP-адрес по MAC-адресу. Для этого используется протокол RARP (Reverse Address Resolution Protocol). Функционально RARP схож с протоколом ARP.

Протоколы динамической маршрутизации

Протоколы динамической маршрутизации предназначены для автоматизации процесса построения маршрутных таблиц маршрутизаторов. Принцип их использования достаточно прост: маршрутизаторы с помощью устанавливаемого протоколом порядка рассылают определенную информацию из своей таблицы маршрутизации другим и корректируют свою таблицу на основе полученных от других данных.

Такой метод построения и поддержки маршрутных таблиц существенно упрощает задачу администрирования сетей, в которых могут происходить изменения (например, расширение) или в ситуациях, когда какие-либо маршрутизаторы и/или подсети выходят из строя.

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

Протоколы сетевого уровня

Протокол Ethernetбыл разработан в начале 1970-х годов. Обмен данными по протоколу Ethernet реализуется программно-аппаратно с помощью сетевого контроллера, и драйвера сетевого контроллера.

Формат кадра данных Ethernet состоит из следующих полей:

Преамбула: 64-битовое поле, содержащее фиксированную последовательность битов, используемую для синхронизации схем приема сигналов на узле-адресате.

Адрес приемника и адрес источника: 48-битовые поля, содержащие Ethernet-адреса принимающего и передающего кадр узлов сети.

Тип кадра: 16-битовое поле, содержащее идентификатор протокола более высокого уровня, использующего данный Ethernet-кадр. Примером значений данного поля является 0x0800 - протокол IP.

Тело кадра: содержит данные, передаваемые в кадре протоколом вышележащего уровня, например это IP-сегмент. Максимальная длина тела кадра протокола сетевого уровня для Ethernet составляет 1500 байтов. Минимальная длина Ethernet-кадра составляет 64 байта (512 бит).

Контрольная сумма: 32-битовое поле, содержащее контрольную сумму, подсчитанную для всего кадра.

Протокол SLIP (Serial Line Internet Protocol) обеспечивает соединение двух компьютеров через последовательный интерфейс. SLIP — это сетевой протокол, позволяющий использовать для прямого выхода в Интернет телефонную линию и модем. В этом простом протоколе все SLIP-кадры начинаются со служебного символа 0xEB(ESC), а заканчиваются служебным символом 0xC0(END). Между этими символами располагаются передаваемые данные.

Протокол PPP (Point-to-Point Protocol) также используется для соединения двух компьютеров по последовательному интерфейсу. Протокол PPP разработан позднее протокола SLIP, поэтому в нем ликвидированы некоторые недостатки протокола SLIP, в частности: поддерживаются различные протоколы вышележащего уровня (а не только IP); используются контрольные суммы.

Наши рекомендации