Компьютерная помощь
Show

Прежде чем данные могут быть отправлены между двумя хостами по протоколу TCP, должно быть установлено соединение. Один хозяин, называется сервер, слушает запросы на подключение. Хост запрашивает соединение и называется клиентом. Для запроса на подключение, клиент отправляет сегмент TCP с указанием своего номера порта и что он хочет подключиться. SYN (синхронизация порядковых номеров), флаг установлен, последовательность исходных данных клиента указывает номер.

Для предоставления связи, сервер отвечает на сегмент, в котором содержится заголовок исходной последовательности данных номера. SYN и ACK флаги установлены. Для подтверждения получения данных клиента порядковый номер в поле подтверждения содержит это значение плюс один.
Для завершения протокола установления соединения, клиент подтверждает номер последовательности данных серверу, отправляя обратно сегмент с установленным флагом ACK и признания поля, содержащего данные сервера и порядковый номер плюс один.
TCP сегменты передаются только между клиентом и сервером, если есть данные в потоке. Происходит опрос состояния. Если линия связи выходит из строя, на конце будут знать об отказе, пока данные не будут отправлены. На практике применение тайм-аута, как правило, разрывает соединение, если определенный промежуток времени прошел без активности . Тем не менее, можно продолжить не удачную сессию, как будто ничего не произошло, если вы можете установить соединение снова. (Заметим, что это верно только если ваш провайдер предоставляет вам фиксированный IP-адрес. Если IP-адрес выделяется динамически при входе в систему, вы не сможете возобновить связь, потому что ваш сокет (который , как мы уже отмечали ранее, состоит из вашего IP-адреса и номера порта) был бы другой.
Передача данных
После того, как соединение было установлено, данные могут быть отправлены. TCP-протокол скользящего окна означает, что нет необходимости ждать когда следует признать один сегмент, прежде чем другой может быть отправлен. Подтвержения  отправляются только в случае необходимости немедленно или через определенный истекший интервал. Это делает TCP эффективным протокол для массовой передачи данных.
Одним из примеров, когда подтверждение отправляется немедленно, когда отправитель заполнит входной буфер приемника. Управление потоком осуществляется с помощью поля размера окна в заголовке TCP. В части, содержащей признание размера окна будет равно нулю. Когда приемник снова может принимать данные, направляется второе подтверждение с указанием новых размеров окна. Такое признание называется окно обновления.
При интерактивной сессии Telnet, один введенный символ на клавиатуре может быть отправлен в своем сегменте TCP. Каждый персонаж может быть признан сегментом вступления в другую сторону. Если вводимые символы нашли свое отражение на удаленном хосте, тогда еще пара отрезков могут быть получены, первый удаленным хостом, а второй, его признания, по Telnet клиента. Таким образом, один типизированный характер может привести к четырём IP-пакетам, каждый из которых содержит 20 байт IP-заголовка, 20 байт заголовка TCP и только один байт данных, передаваемых через Интернет.
TCP имеет некоторые особенности, чтобы попытаться сделать вещи немного более эффективным. Подтверждение задержки до 500 мс может быть указано в надежде, что в течение этого времени некоторые данные могут быть направлены в другую сторону, и признание контрольных данных вместе с ней.
Неэффективность отправки многих очень маленьких сегментов уменьшается на то, что называется Nagle алгоритмом. Это указывает, что сегмент TCP содержащий меньше данных, чем рекламируемый размер окна получателя может быть отправлен только если предыдущая часть была признана. Небольшое количество данных объединяются, пока они либо равны размеру окна, или если получил признание  предыдущий сегмент. Чем медленнее соединение, тем больше будет период, в течение которого данные могут быть объединены, и, следовательно, меньше отдельных сегментов TCP будет отправлено в течение занятой ссылки.
Исправление ошибок
Важным преимуществом TCP на UDP является то, что это надежный транспортный протокол передачи данных. Он может обнаружить данные которые были успешно получены на другом конце, а если не были получены, TCP может предпринять шаги, чтобы исправить ситуацию. Если ничего не помогает, он может сообщить отправкой  проблемы, так что он знает, что передача не удалась.
Самой распространенной проблемой является то, что сегмент TCP потерян или поврежден. TCP занимается этим, отслеживая принятые данные, которые он посылает. Если подтверждение не получено в течение интервала определённого протоколом, данные передаются снова.
Интервал, TCP будет ждать перед повторной передачей данных и зависит от скорости соединения. Протокол контролирует время, которое обычно требуется, чтобы получить признание и использует таймер для расчета периода для ретрансляции. Если подтверждение не будет получено после повторной отправки данных один раз, он отправляется повторно, на всё возрастающих интервалах, пока не будет получен ответ или (обычно) значение применения тайм-аута превышено.
Как уже упоминалось, TCP реализует поток управления с помощью поля размера окна в заголовке. Потенциал тупиковой ситуации возникает, если приемник останавливает поток данных, установив размер окна в ноль, и сегмент окна обновления, который предназначен для запуска потока данных снова теряется. На каждом конце соединения будут остановки, ожидая, пока другие что-то сделают.
Подтверждения  сами по себе  не ACKed, в этом случае стратегия ретрансляции не решит проблемы. Чтобы предотвратить возникновение тупиковой ситуации, TCP посылает зонд сообщения окна через регулярные промежутки времени для запроса о его приемнике размера окна.
Закрытие соединения
Когда приходит время, чтобы закрыть соединение TCP, каждое направление потока данных должно быть закрыто в отдельности. Один конец связи посылает сегмент, в котором установлен флаг FIN (закончил передачу данных). Получение данного сегмента признают, и принимающая сторона уведомляет его применение, чтобы другая сторона закрыла соединение ,потому  что осталась половина соединения.
Приемник может, если пожелает, продолжать передавать данные в другом направлении. Обычно, принимающее приложение будет заставлять TCP закрывать вторую половину соединения, используя такую ​​же процедуру.

P.P.S. Если у Вас есть вопросы, желание прокомментировать или поделиться опытом, напишите, пожалуйста, в комментариях ниже.

Добавить комментарий

 

Войти с помощью:

vkontakte facebook odnoklassniki yandex

Уважаемые читатели! Мы не приемлем в комментариях мат, оскорбления других участников, спам и ссылки на сторонние ресурсы, враждебные заявления в сторону администрации и посетителей ресурса. Комментарии, нарушающие правила сайта, будут удалены.
Обязательные поля отмечены *

 

Читайте ранее:
Протоколы передачи данных TCP и UDP.

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

Закрыть
Adblock
detector