Работа с соединениями

Разделение каналов

Управление потоком

Достоверность

Базовая передача данных

Протокол TCP способен передавать непрерывные потоки байт между своими клиентами в обоих направлениях, пакуя некое количество байт в сегменты для передачи через IP-модули. В общем случае протокол TCP решает по своему усмотрению, когда производить блокировку и передачу данных. Иногда пользователям бывает необходимо убедиться в том, что все данные, переданные ими протоколу TCP, уже отправлены. Для этой цели определена функция проталкивания (push). Проталкивание приводит к тому, что программы протокола TCP сразу осуществляют отправление и, соответственно, получение остающихся данных. Правильно осуществленное проталкивание может быть невидимо для получателя, а сама функция проталкивания может не иметь маркера границы записи.

Протокол TCP должен иметь защиту от разрушения данных, потери, дублирования и нарушения очередности получения, вызываемых коммуникационной IP-системой. Это достигается присвоением очередного номера каждому передаваемому сегменту, а также требованием подтверждения (ACK) от модуля TCP, принимающей данные. Если подтверждения не получено в течении контрольного интервала времени, то данные посылаются повторно. Со стороны получателя номера очереди используются для восстановления очередности сегментов, которые могут быть получены в неправильном порядке, а также для ограничения возможности появления дубликатов. Повреждения фиксируются посредством добавления к каждому передаваемому сегменту контрольной суммы, проверки ее при получении и последующей ликвидации дефектных сегментов.

Протокол TCP дает средства получателю управлять количеством данных, посылаемых ему отправителем. Это достигается возвратом так называемого "окна" (window) вместе с каждым подтверждением, которое указывает диапазон приемлемых номеров, следующих за номером последнего успешно принятого сегмента. Окно определяет количество байт, которое отправитель может послать до получения дальнейших указаний.

Чтобы позволить на отдельно взятом компьютере многим процессам одновременно использовать коммуникационные возможности уровня TCP, протокол TCP предоставляет на каждом хост-компьютере набор адресов или портов. Вместе с адресами сетей и хост-компьютеров на они образуют сокет (socket - разъем). Соотнесение портов и процессов осуществляется каждым хостом самостоятельно. Однако оказывается полезным связывать часто используемые процессы (такие как telnet или www) с фиксированными документированными сокетами.

Механизмы управления потоком и обеспечения достоверности, описанные выше, требуют, чтобы программы протокола TCP инициализировали и поддерживали определенную информацию о состоянии каждого потока данных. Набор такой информации, включающий сокеты, номера очереди, размеры окон, называется соединением. Каждое соединение уникальным образом идентифицируется парой сокетов. Если два процесса желают обмениваться информацией, соответствующие программы протокола TCP должны сперва установить соединение (на каждой стороне инициализировать информацию о статусе). По завершении обмена информацией соединение должно быть расторгнуто или закрыто, чтобы освободить ресурсы для предоставления другим пользователям. Поскольку соединения должны устанавливаться между ненадежными хостами и через ненадежную коммуникационную IP-систему, то во избежание ошибочной инициализации соединений используется механизм подтверждения связи с хронометрированными номерами очереди.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: