Читайте также:
|
|
Поток данных, посылаемый на TCP соединение, принимается получателем надежно и в соответствующей очередности.
Передача осуществляется надежно благодаря использованию подтверждений и номеров очереди.
Концептуально каждому октету данных присваивается номер очереди.
Номер очереди для первого октета данных в сегменте передается вместе с этим сегментом и называется номером очереди для сегмента.
Сегменты также несут номер подтверждения, который является номером для следующего ожидаемого октета данных, передаваемого в обратном направлении.
Когда протокол TCP передает сегмент с данными, он помещает его копию в очередь повторной передачи и запускает таймер. Когда приходит подтверждение для этих данных, соответствующий сегмент удаляется из очереди. Если подтверждение не приходит до истечения срока, то сегмент посылается повторно.
Подтверждение протокола TCP не гарантирует, что данные достигли конечного получателя, а только то, что программа протокола TCP на компьютере у получателя берет на себя ответственность за это.
Для направления потока данных между программами протоколов TCP используется механизм управления потоками. Получающая программа протокола TCP сообщает "окно" посылающей программе. Данное окно указывает количество октетов (начиная с номера подтверждения), которое принимающая программа TCP готова в настоящий момент принять.
Установка соединения и его отмена.
Чтобы идентифицировать отдельные потоки данных, поддерживаемые протоколом TCP, последний определяет идентификаторы портов.
Поскольку идентификаторы портов выбираются каждой программой протокола TCP независимо, то они не будут уникальны.
Чтобы обеспечить уникальность адресов для каждой программы протокола TCP, мы объединяем идентифицирующий эту программу IР адрес и идентификатор порта. В результате получаем сокет, который будет уникален во всех подсетях, объединенных в единое целое.
Соединение полностью определяется парой сокетов на своих концах. Локальный сокет может принимать участие во многих соединениях с различными чужими сокетами. Соединение можно использовать для передачи данных в обоих направлениях, иными словами, оно является "полностью дуплексным".
Протокол TCP волен произвольным образом связывать порты с процессами.
Однако при любой реализации протокола необходимо придерживаться нескольких основополагающих концепций.
Должны присутствовать сокеты, которые протокол TCP ассоциирует с "соответствующими им" процессами. Процессы могут "владеть" портами и могут инициировать соединения только с тех портов, которыми они владеют.
Соединение задается командой OPEN (открыть), сделанной с локального порта и имеющей аргументом чужой сокет.
В ответ на такой запрос программа протокола TCP предоставляет имя локального (короткого) соединения. По этому имени пользователь адресуется к данному соединению при последующих вызовах.
Процедура установки соединения использует флаг управления синхронизацией (SYN) и трижды обменивается сообщениями. Такой обмен называется трехвариантным подтверждением.
Соединение инициируется при встрече пришедшего сегмента, несущего флаг синхронизации (SYN).
И сегмент и запись создаются пришедшими от пользователей запросами на открытие.
Соответствие местного и чужого сокетов устанавливается при инициализации соединения.
Соединение признается установленным, когда номера очередей синхронизированы в обоих направлениях между сокетами.
Отмена соединения также включает обмен сегментами, несущими на этот раз управляющий флаг FIN.
Дата добавления: 2015-04-26; просмотров: 15 | Поможем написать вашу работу | Нарушение авторских прав |