Реферат: Протоколы транспортного уровня
Таблица.2. Назначение полей заголовка TCP
Поле заголовка |
Назначение |
Порт-передатчик |
Обозначает порт протокола приложения-источника
данных. |
Порт-приемник |
Обозначает порт протокола приложения-получателя
данных. |
Номер последовательности |
Определяет первый байт данных в области данных
сегмента TCP. |
Номер подтверждения |
Определяет следующий байт данных, который приемник
рассчитывает получить из входного потока. |
Длина заголовка |
Длина TCP-заголовка, измеренная в 32-разрядных
словах. |
Флаг URG |
Если установлен, извещает принимающий модуль TCP о том, что в сегменте находятся
данные для неотложной обработки. |
Флаг АСК |
Указание принимающему модулю TCP на то, что поле номер
подтверждения содержит соответствующие данные. |
Флаг PSH |
Требование принимающему модулю TCP передать данные
приложению-получателю немедленно. |
Флаг RST |
Запрос принимающему модулю TCP сбросить соединение. |
Флаг SYN |
Запрос принимающему модулю TCP синхронизировать номера последовательности. |
Флаг FIN |
Сообщение принимающему модулю TCP об окончании передачи. |
Размер окна |
Сообщение принимающему модулю TCP о количестве байтов, которое
способен принять модуль-передатчик. |
Контрольная сумма TCP |
Служит для обнаружения поврежденных при передаче
данных. |
Указатель на неотложные данные |
Указывает на последний байт данных, требующих
неотложной обработки, находящихся в области данных сегмента TCP. |
Опции |
Обычно используются совместно с опцией максимальная
длина сегмента (MSS). |
Установление
TCP-соединения
Чтобы обеспечить надежную передачу
данных, а также правильный порядок следования сегментов, TCP использует сообщения-подтверждения о
доставке. Для выполнения этих задач требуется какой-либо способ
идентифицировать передаваемые данные. Также сеть должна уметь синхронизировать
передаваемые между обоими сторонами данные. Другими словами, каждая сторона
должна знать, когда можно начинать передачу. Сторонам также следует иметь
представление, как обозначить тот или иной сегмент. Предположим, что модуль TCP принял поврежденный пакет. Он должен
иметь возможность известить модуль-передатчик о том, какой именно пакет данных
нужно повторить. Перед установлением соединения обе стороны должны договориться
о таком, понятном им обеим, способе отметить каждый пакет.
Определенная система обмена
сообщениями-подтверждениями соединения TCP является частью более общего процесса синхронизации
обмена данными. Не будет системы — соединение может не состояться. В следующих
абзацах описываются поля TCP-заголовка, служащие для обмена подтверждениями.
Для установления и прекращения соединения, а также для отправки и получения
подтверждений TCP заголовок имеет поля «номер
последовательности», «номер подтверждения» и поля флагов. Каждый раз, желая
что-нибудь передать по протоколу TCP, программа-приложение
запрашивает модуль TCP установить
соединение. Модуль TCP в свою очередь
шлет сообщение TCP с
установленным флагом SYN
(синхронизации) удаленному порту, с которым программа-клиент хочет установить
соединение.
Флаг синхронизации указывает
принимающей стороне (серверу, например), что программа-клиент желает установить
соединение. Вместе с флагом SYN, сообщение TCP несет в себе 32-битный номер последовательности,
размещенный модулем TCP в поле «номер
последовательности». TCP-модуль сервера отвечает сегментом TCP с установленными флагом
подтверждения (АСК) и номером подтверждения. Для того чтобы разобраться
в процедуре установления соединения TCP, необходимо понимать смысл номеров последовательности и подтверждения.
В следующем разделе процедура установления соединения и смысл соответствующих
номеров изучаются более подробно.
Что
такое начальный номер последовательности?
Мы уже отмечали выше, что обе стороны
соединения TCP должны идентифицировать информацию
в потоке данных для того, чтобы корректно слать и принимать подтверждения о
доставке. Номер последовательности — это то, как TCP обозначает данные. Сетевые компьютеры пользуются
разнообразными методами для выбора начального номера последовательности (для
наших целей, однако, эти методы несущественны). Вы можете рассматривать
начальный номер последовательности как случайное число. Значение начального
номера последовательности не играет никакой роли.
Начальный номер последовательности
представляет собой число, пересылаемое модулем-передатчиком TCP модулю-приемнику TCP. Передавая начальный номер,
TCP-модуль как бы сообщает корреспонденту: «Эй, я хочу установить с тобой
соединение. Нумерация данных в потоке от меня начинается с этого числа».
Сервер-приемник сообщения, получив
запрос на установление соединения, тоже не сидит сложа руки. Он посылает
обратно сообщение, содержащее его собственный начальный номер. Модуль TCP генерирует какое-либо число,
совершенно не зависящее от числа, посланного TCP-клиентом. Другими словами,
сервер как бы сообщает: «Привет! Я получил твой запрос на TCP-соединение и высылаю
номер, с которого начнется нумерация моих собственных данных».
Все TCP соединения являются дуплексными. Данные следуют в
обоих направлениях одновременно. Поток данных в одном направлении совершенно
не зависит от потока данных в противоположном. В силу дуплексной природы
соединения оба модуля TCP
должны учитывать и нумеровать данные в каждом направлении по-разному, а значит,
обрабатывать два начальных номера последовательности.
Подтверждение
доставки данных
В TCP-заголовке самого первого,
начального, сообщения-ответа сервера модуль TCP устанавливает два флага: синхронизации (SYN), чтобы известить модуль TCP клиента о том, что в сообщении
содержится начальный номер последовательности сервера, и подтверждения (АСК),
чтобы заставить клиента изучить содержимое поля «подтверждение».
TCP-модуль сервера использует номер
последовательности, принятый от клиента, чтобы сконструировать на его основе
собственный номер подтверждения. Номер подтверждения всегда указывает на
номер сообщения, которое сервер рассчитывает получить следующим. Таким образом,
в начальном сообщении-ответе сервера содержится номер последовательности
клиента, увеличенный на единицу.
Страницы: 1, 2, 3, 4, 5, 6 |