- •А. М. Шабалин
- •Предисловие
- •Введение
- •1 Современные классификации операционных систем
- •1.1 Основные аспекты изучения современных операционных систем
- •1.2 Определение сетевых операционных систем
- •1.3 Характеристика популярных операционных систем по различным классификационным критериям
- •1.3.1 Операционные системы компании Microsoft
- •1.3.2 Альтернативные операционные системы
- •2 Современные сетевые протоколы
- •2.1 Стандартная семиуровневая эталонная модель взаимодействия открытых систем и стек протоколов tcp/ip
- •2.2 Протоколы межсетевого взаимодействия семейства ip
- •2.2.1 Протокол iPv4
- •2.2.2 Протокол iPv6
- •2.3 Основы адресации в ip-сетях
- •2.3.1 Адресация iPv4
- •2.3.2 Адресация iPv6
- •2.4 Проблема установления соответствия между адресами различных типов
- •00-18-F3-4a-a1-55
- •192.168.200.199
- •194.85.135.75 – 008048Ев7е60.
- •2.5 Протоколы транспортного уровня стека tcp/ip
- •2.5.1 Протокол udp
- •2.5.2 Протокол tcp
- •2.6 Протоколы маршрутизации
- •2.6.1 Классификации протоколов маршрутизации
- •2.6.2 Внутренние протоколы маршрутизации rip и ospf
- •2.6.3 Внешний шлюзовый протокол bgp
- •2.6.4 Дополнительные протоколы маршрутизации icmp и igmp
- •Заключение
- •Библиографический список
- •Приложение а
- •Синтаксис:
- •Приложение б Настройка iPv6 в операционной системе ms WindowsXp
- •Приложение в Контрольно-измерительные материалы
- •Словарь терминов и определений
- •Часть ip-адреса, соответствующая сетевой части адреса.
- •Алфавитно-предметный указатель
- •Часть 71
- •Список сокращений
- •Учебное издание
2.5.2 Протокол tcp
Информация, поступающая к протоколу TCP от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байтов. Поступающие данные буферизуются средствами TCP. Для передачи на сетевой уровень из буфера «вырезается» некоторая непрерывная часть данных, которая называется сегментом, и снабжается заголовком.
Заголовок TCP-сегмента содержит значительно больше полей, нежели заголовок UDP (рис. 2.12), что указывает на широту возможности первого протокола [27].
16 бит Порт источника |
16 бит Порт приемника | |||||||||
32 бита Последовательный номер | ||||||||||
32 бита Подтвержденный номер | ||||||||||
4 бита Длина заголовка |
6 бит Резерв |
6 бит Кодовые биты |
16 бит Окно | |||||||
URG |
ACK |
PSH |
RST |
SYN |
F IN | |||||
16 бит Контрольная сумма |
16 бит Указатель срочности | |||||||||
максимум 24 бита Параметры |
Заполнитель |
Рис. 2.12 – Структура TCP-заголовка
Поле Порт источника (Source Port) занимает 2 байта и идентифицирует процесс-отправитель.
Поле Порт приемника (Destination Port) занимает 2 байта и идентифицирует процесс-получатель.
Поле Последовательный номер (Sequence Number) занимает 4 байта и представляет собой число, уникально идентифицирующее TCP-сегмент. Этот порядковый номер дает возможность получателям TCP-пакетов идентифицировать пропущенные части потока информации.
Поле Подтвержденный номер (Acknowledgement Number) занимает 4 байта и содержит максимальный номер байта в полученном сегменте, увеличенный на единицу. Именно это значение используется в качестве квитанции, то есть удостоверения, что сегмент получен. Если установлен контрольный бит АСК, то поле содержит следующий номер очереди, который отправитель данного сегмента желает получить в обратном направлении.
Поле Длина заголовка (Hlen) занимает 4 бита и представляет собой длину заголовка TCP-сегмента, измеренную в 32-х-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле параметров.
Поле Резерв (Reserved) занимает 6 бит.
Поле Кодовые биты (Code Bits) содержит служебную информацию о типе данного сегмента. Положительное значение сигнализируется установкой этих битов в единицу:
1) URG (срочность) – указывает на необходимость проверки значения поля Urgent Pointer (указатель срочности);
2) АСК (подтверждение) – указывает на необходимость проверки значения поля Acknowdgment Number (подтвержденный номер);
3) PSH (проталкивание) – игнорирует буферизацию и передает данные непосредственно прикладному уровню. Эта возможность применяется для приложений, выполняющихся однократно или с ограниченным временным ресурсом;
4) RST (сброс) – завершает соединение. Применяется для полного закрытия соединения, а также для отказа в соединении по любой причине;
5) SYN (синхронизация) – используется для синхронизации счетчиков переданных данных при установлении соединения и обозначает, что отправитель извещает противоположную сторону TCP-соединения о значении в своем поле Sequence Number (порядковый номер);
6) FIN (окончание) – обозначает, что хост завершил соединение, то есть достижение передающей стороной последнего байта в потоке передаваемых данных.
Поле Окно (Window) определяет размер TCP-буфера приема в байтах. Размер окна, приравненный к нулю, означает, что отправитель должен приостановить передачу – TCP-буфер получателя заполнен.
Поле Контрольная сумма (Сhecksum) занимает 2 байта.
Поле Указатель срочности (Urgent pointer) занимает 2 байта. Данное поле значимо только в том случае, если установить флаг URG, и получатель должен просмотреть это поле, чтобы узнать, откуда начинать считывать данные пакета.
Поле Параметры (Options) имеет переменную длину и может вообще отсутствовать. Максимальная величина поля составляет 3 байта; оно используется для решения вспомогательных задач, например для выбора максимального размера сегмента. Поле параметров может располагаться в конце заголовка TCP, а его длина кратна 8 битам.
Поле Заполнитель (padding) может иметь переменную длину. Это фиктивное поле, используемое для доведения размера заголовка до целого числа 32-х-битовых слов.
Основным отличием протокола TCP от UDP является то, что на протокол TCP возложена дополнительная задача – обеспечить надежную доставку сообщений, используя в качестве основы протокол IP.
TCP-протокол решает задачу обеспечения надежного обмена данными путем установления между компьютерами логических соединений, благодаря которым TCP следит, чтобы передаваемые сегменты не были потеряны, не были продублированы и пришли к получателю в том порядке, в котором были отправлены.
При установлении логического соединения модули TCP договариваются между собой о параметрах процедуры обмена данными. В протоколе TCP каждая сторона соединения посылает противоположной стороне следующие параметры:
1) максимальный размер сегмента, который она готова принимать;
2) максимальный объем данных (возможно несколько сегментов), которые она разрешает другой стороне передавать в свою сторону, даже если та еще не получила квитанцию на предыдущую порцию данных;
3) начальный порядковый номер байта, с которого она начинает отсчет потока данных в рамках этого соединения.
В результате переговорного процесса модулей TCP с двух сторон соединения определяются параметры соединения. Одни из них остаются постоянными в течение всего сеанса связи, а другие адаптивно изменяются. В частности, в зависимости от загрузки буфера принимающей стороны, а также от надежности работы сети динамически изменяется размер окна отправителя (размер буфера приема). Создание соединения означает выделение операционной системой на каждой стороне соединения определенных системных ресурсов для организации буферов, таймеров, счетчиков. Эти ресурсы будут закреплены за соединением с момента создания и до момента разрыва. Логическое TCP-соединение однозначно идентифицируется парой TCP-сокетов, каждый из которых одновременно может участвовать в нескольких соединениях.
Таким образом, из всего вышеизложенного о двух протоколах транспортного уровня стека TCP/IP следует, что на один из них – TCP – возложена сложная и очень важная задача обеспечения надежной передачи данных через ненадежную сеть.
С другой стороны, функциональная простота протокола UDP обусловливает простоту алгоритма его работы, компактность и высокую скорость. Поэтому те приложения, в которых реализован собственный, достаточно надежный механизм обмена сообщениями, основанный на установлении соединения, предпочитают использовать для непосредственной передачи данных по сети менее надежные, но более быстрые средства транспортировки, в качестве которых по отношению к протоколу TCP и выступает протокол UDP.
Протокол UDP может быть использован и в том случае, когда хорошее качество линий связи обеспечивает достаточный уровень надежности и без применения дополнительных приемов (например, установление логического соединения и квитирования передаваемых пакетов (подтверждение получения)). Заметим, что, поскольку протокол TCP основан на логических соединениях, он не годится для широковещательной и групповой рассылки, в отличие от протокола UDP.