Передача данных в TCP.Назначение номера последовательности, окна.

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

передачей. Если они совпадают, то данные помещаются в буфер приёма, а известный № увеличивается на число принятых пакетов. Если № последов-ти < известного №, то пакет отбрасывается, следовательно, это повторно пришедший пакет. Получ-ль при этом может ускорить обработку данных, но не обязан этого делать. Если № последов-ти > известного №, то значит, что это пакет, пришедший раньше того, который был отправлен перед ним. Его получение подтверждается, но известный № не изменяется, а обработка пакета откладывается до получения тех пакетов, которые должны следовать перед ним. В каждом подтверж-ии получ-ль указывает отправителю окно.

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

Установление и разрыв TCP соединения. В соединении участвуют 2 стороны, 1 из них активная (клиент), другая пассивная (сервер). Сервер занимает некоторый порт TCP и ждёт запросов на соединение. Клиент посылает запрос на соединение. Если клиент пытается установить соединение, он генерирует некоторое 32-х битное число, создаёт у себя в памяти блок управления передачей и записывает в него сгенерированное число в кач-ве последов-ного №. После этого он формирует пакет TCP, в котором установлен флаг синхронизации, а поле «номер последов-ти» содержит № последов-ти из блока управления передачей. После отправки пакета клиент увеличивает номер последов-ти в блоке управления передачей на 1. Сервер, получив запрос на устранение соед-ия, создаёт блок управления передачей, извлекает из запроса номер последов-ти и записывает его в блок управления передачей как известный номер, при этом, увеличивая его на 1. После этого генерирует свой № последов-ти и заносит его в блок управления передачей. Затем формируется ответный пакет, в котором установлен флаг подтверждения. Клиент, получив подтверждение, извлекает номер последов-ти сервера и заносит его в свой блок управления передачей как известный №. После этого клиент высылает подтверж-ие, в к-ром установлен флаг подтверж-ия, а поле «известный номе» содержит № последов-ти сервера, клиент увеличивает его на 1. После этого клиент считает соединение установленным. Сервер, получив подтверж-ие, также считает соединение установленным. Смысл процедуры установления соединения заключается в обмене №-ов последов-тей и размерами окон.

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


Просмотров: 262
02 Апр 2016
 

Ваш отзыв