КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Задачи и область применения протокола TCP. Механизм адаптации скорости передачи данных к возможностям принимающей стороны
TCP предоставляет основанный на соединении надежный сервис потока байтов. Он применяется в тех случаях, когда требуется гарантированная доставка сообщений. Он использует контрольные суммы пакетов для проверки их целостности и освобождает прикладные процессы от необходимости таймаутов и повторных передач для обеспечения надежности. Термин "основанный на соединении" (connection-oriented) означает, что два приложения, использующие TCP (как правило, это клиент и сервер), должны установить TCP соединение друг с другом, после чего у них появляется возможность обмениваться данными. Всегда существуют две конечные точки, которые общаются друг с другом с помощью TCP соединения. TCP не занимается широковещательной и групповой рассылками. Данные, поступающие от приложения, разбиваются на блоки определенного размера, которые будут отправлены. Блок данных, который передается от TCP в IP, называется сегментом (segment). TCP обеспечивает свою надежность благодаря следующим характерным свойствам: Подтверждения: Когда TCP посылает сегмент, он ожидает, что с удаленного конца придет подтверждение на этот сегмент. Если подтверждение не получено по истечении определенного времени, сегмент передается повторно. Для обеспечения этой возможности каждый передаваемый сегмент получает при отправке уникальный номер. Контрольная сумма: Объект TCP осуществляет расчет контрольной суммы для своего заголовка сегмента и данных. Это контрольная сумма используется сторонами для обнаружения изменения данных в процессе передачи. Если сегмент прибывает с неверной контрольной суммой, объект TCP отбрасывает его и подтверждение не генерируется. Упорядочение: Так как TCP сегменты передаются в виде IP датаграмм, а IP датаграммы могут прибывать беспорядочно, также беспорядочно могут прибывать и TCP сегменты. После получения данных объект TCP может по необходимости изменить их последовательность, в результате приложение получает данные в правильном порядке. Отбрасывание дублей: IP датаграмма может быть продублирована и не существует алгоритмов, полностью предотвращающих появление таких дублей. Принимающий объект TCP отбрасывает продублированные данные. Скользящее окно: TCP осуществляет контроль потока данных с использованием алгоритма скользящего окна, который подробнее будет рассмотрен ниже. Необходимость его использования обусловлена тем, что каждая сторона TCP соединения имеет определенное пространство буферной памяти и не может принимать данные в неограниченном объёме. TCP на принимающей стороне позволяет удаленной стороне посылать данные в таком объеме, чтобы получатель мог поместить их в буфер. Это предотвращает переполнение буферов медленных хостов быстрыми хостами. Кроме надежности, для транспортного протокола важным является оптимальное использование ресурсов сети. В TCP используются различные алгоритмы для достижения этой цели. TCP предоставляет для прикладного уровня полнодуплексный сервис. Это означает, что данные могут передаваться в каждом направлении независимо от другого направления. Между двумя приложениями по TCP соединению осуществляется обмен потоком байтов. TCP обеспечивает сервис потока байтов (byte stream service). Если приложение на одном конце записало сначала 10 байт, затем 20 байт и затем еще 50 байт, приложение на другом конце соединения не может сказать какого размера была каждая запись. На другом конце эти 80 байт могут быть считаны, например, за 4 раза по 20 байт за каждый раз. Один конец соединения помещает поток байт в TCP, и точно так же идентичный поток байт появляется на другом конце. TCP не интерпретирует содержимое байтов.
В протоколе TCP принимающей стороне предоставлено право определять и явно декларировать количество данных, которые она согласна принять от отправителя в данный момент времени. Для этого в заголовке сегмента предусмотрено поле Размер окна (window size). В данном поле получатель при подтверждении получения ранее отправленных данных указывает сколько еще байт он готов принять. Это 16-битовое поле ограничивает размер окна в 65535 байт. Значение поля Размер окна может быть равно нулю, что означает, что все байты вплоть до Номер подтверждения - 1 (Номер подтверждения - поле заголовка, используемое для подтверждения принятых данных с точностью до одного байта) получены, но у получателя в данный момент заполнен буфер или какие-то еще проблемы и остальные байты он принять не может. Разрешение на дальнейшую передачу будет передано путем отправки сегмента с таким же значением поля Номер подтверждения и ненулевым значением поля Размер окна. Рассмотрим работу этого механизма на примере, представленном на рисунке ниже. Отправитель передает четыре сегмента данных (4-7), чтобы заполнить окно объявленное получателем. Затем отправитель останавливается и ожидает подтверждения. Получатель отправляет подтверждение (сегмент 8), однако объявляет окно равное 0. Это означает, что получатель получил данные, однако все они находятся в TCP буферах получателя, потому что приложение не имеет возможности считать данные. При нулевом размере окна отправитель не может посылать сегменты, за исключением 1-байтового сегмента с запросом повторить информацию о размере окна и ожидаемом следующем байте. Стандарт TCP явно предусматривает эту возможность для предотвращения тупиковых ситуаций в случае потери объявления о размере окна. Еще один ACK (называемый обновлением окна) посылается через 17,4 миллисекунды и объявляет о том, что получатель теперь может получить следующие 4096 байт. То, что выглядит как подтверждение (ACK), в действительности является обновлением окна, потому что здесь не происходит подтверждения каких-либо вновь полученных данных, а просто объявляется новый размер окна. Отправитель не обязан передавать данные сразу, как только они приходят от приложения. Также не требуется от получателя посылать подтверждения как можно скорее. Эта свобода действий может использоваться для улучшения производительности.
Отправитель передает свои последние четыре сегмента (10-13) и опять заполняет окно принимающего. Обратите внимание, что сегмент 13 содержит два флаговых бита: PUSH и FIN. После этого следуют еще два подтверждения от принимающего. Они подтверждают последние 4096 байт данных (байты от 4097 до 8192) и FIN (который имеет номер 8193).
Дата добавления: 2014-01-07; Просмотров: 1585; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |