Протокол ТСР предоставляет надежную, ориентированную на соединение службу доставки.
Данные протокола ТСР передаются сегментами, и соединение должно быть установлено до того, как узлы начнут обмениваться данными. ТСР использует потоки, в которых данные представлены в виде последовательности байт.
ТСР обеспечивает надежность, присваивая номера последовательности (sequence number) каждому передаваемому сегменту. Если сегмент разбивается на мелкие пакеты, то узел-получатель сможет узнать, все ли части получены. Для этого используются подтверждения. Для каждого отправленного сегмента узел-получатель должен вернуть отправителю подтверждение (acknowledgement, AСК) в течение определенного времени (рис. 40).
Если отправитель не получил АСК, то данные передаются повторно. Если сегмент поврежден, то узел-получатель отвергает его. Поскольку АСК в этом случае не посылается, отправитель передает сегмент еще раз.
Порты. Приложения, использующие сокеты, идентифицируют себя Не компьютере посредством номера порта протокола (protocol port number). Например, FТР-сервер использует определенный ТСР-порт, поэтому другие приложения могут связаться с ним.
Порты могут иметь любой номер от 0 до 65536. Номера портов дл приложений клиентов динамически назначаются операционной системой при обработке запроса и обслуживания.
Сокеты. Сокет (socket) обеспечивает конечную точку сетевого соединения. Приложение, создавая сокет, указывает три параметра: IP-адреc узла, тип обслуживания (протокол ТСР для ориентированного на соединение обслуживания и UDP для не ориентированного) и порт, используемый приложением.
Порты протокола ТСР. Порт протокола ТСР указывает место доставки сообщений. Номера портов, меньшие 256, определены как широко используемые.
Номер порта | Описание |
FTP | |
Telnet | |
Доменная система имен (DNS) | |
Сервер NetBIOS |
Установка связи по протоколу ТСР. Инициализация ТСР-соединения происходит в три этапа. Делается это для синхронизации отправки и по лучения сегментов, извещения другого узла о количестве данных, которые можно послать за один раз, и установки виртуального соединения. Вот из каких операций состоит этот процесс (рис. 41)
1. Узел-отправитель запрашивает соединение, посылая сегмент с установленным флагом синхронизации (SYN).
2. Узел-адресат подтверждает получение запроса, отправляя обрати; сегмент с:
- установленным флагом синхронизации;
- порядковым номером начального байта сегмента, который о] может послать, или номером последовательности (sequence number);
- подтверждением, включающим порядковый номер следующей сегмента, который он ожидает получить.
-
|
Рис. 41 Работа протокола ТСР
3. Запрашивающий узел посылает обратно сегмент с подтверждение] номера последовательности и номером своего подтверждения (acknowledgement number).
Для завершения соединения ТСР действует аналогично. Это гарантирует, что оба узла закончат передачу и примут все данные.
Скользящие окна протокола ТСР. Протокол ТСР буферизует данные дл передачи между двумя узлами, используя скользящие окна (sliding windows). Каждый ТСР/ IP-узел поддерживает два скользящих окна: одно для приема данных, а другое для отправки. Размер окна определяет объем данных, которые могут быть буферизованы на компьютере.
Структура ТСР-пакета. Все пакеты протокола ТСР имеют две части -на данные и заголовок. В таблице приведены поля заголовка ТСР-пакета.
Поле | Описание |
Sourse Port (Порт отправителя) | ТСР порт узла-отправителя |
Destination Port (Порт получателя) | ТСР порт узла-получателя. Определяет конечную точку соединения |
Sequence Number (Порядковый номер) | Номер последовательности пакета. Используется для проверки получения всех байт соединения |
Acknowledgement Number (Номер подтверждения) | Порядковый номер байта, который локальный узел планирует получить следующим |
Data Length (Длина данных) | Длина ТСР-пакета |
Reseved (Зарезервировано) | Зарезервировано для будущего использования |
Flags (Флаги) | Это поле описывает содержимое сегмента |
Windows (Окно) | Показывает, сколько места доступно в настоящий момент в окне протокола ТСР |
Checksum (Контрольная сумма) | Проверяет, поврежден ли заголовок |
Urgent Pointer (Указатель срочности) | Когда отправляются срочные данные (указано в поле Flags), в этом поле задается конечная граница области срочных данных в пакете |