Олифер В.Г., Олифер Н.А. - Компьютерные сети. Принципы, технологии, протоколы (4-ое изд.) - 2010 - обработка (953099), страница 139
Текст из файла (страница 139)
В шестнадцатеричном формате это значение равно стандартному номеру порта 0Х5-сервера — 53. Судя по простоте заголовка, протокол 1Л)Р не сложен. Действительно, его функции сводятся к простой передаче данных между прикладным и сетевым уровнями, а также примитивному контролю искажений в передаваемых данных. При контроле искажений протокол 1Л1 Р только диагносшируетл, но нв иснравллвтл огаибку. Если контрольная сумма показывает, что в поле данных () 0Р-дейтаграммы произошла ошибка, протокол () 0Р просто отбрасывает поврежденную дейтаграмму.
Работая на хосте-получателе, протокол Шур принимает от протокола 1Р извлеченные из пакетов 00Р-дейтаграммы. Полученные из 1Р-заголовка 1Р-адрес назначения и иэ 1Л)Р-заголовка номер порта используются для формирования 00р-сокета, однозначно идентифицирующего приложение, которому направлены данные. Протокол ()0Р осво. бождает дейтаграмму от () 0Р-заголовка. Полученное в результате сообщение он передает приложению на соответствующий () 0Р-сонет. Таким образом, протокол 00Р выполняет даиультинлвксированив на основе сокетов. Протокол ТСР и ТСР-сегменты При работе на хосте-отправителе протокол ТСР рассматривает информацию, поступающую к нему от прикладных процессов, как нвплруюлурированный нолюк байаов (рис. 17.4), Поступающие данные буферизуются средствами ТСР. Для передачи на сетевой уровень ю буфера ввырезается» некоторая непрерывная часть данных, которая называется еегмевтои' и снабжается заголовком.
' Заметим, что сегментом называют как единицу передаваемых данных в целом (поле данных э и. 559 Протоколы транапортного уровня ТСР н 00Р Рис. 17.Я. Формирование ТСР-сегментов нз потока байтов ПРИМЕЧАНИЕ Вотличие ат протокола тЛ)Р который создает свои дейтаграммы на основе логически обособленных тыиии данных — сообщений, генерируемых приложениями, протокол ТСР делит поток данных на итнеитм без учета нх смысла нлн внутренней структуры.
Заголовок ТСР-сегмента содержит значительно больше полей, чем заголовок УРР что атрижает более развитые возможности протокола ТСР (рис. 17.5). Краткие описания большинства полей помещены на рисунке, а более подробно мы их рассмотрим, когда будем юучать функции протокола ТСР Коротко поясним значение однобитных полей, называемых флагами, или кодовыми йпами (соде Ь1тз1. Они расположены сразу за резервным полем и содержат служебную информацию о типе данного сегмента.
Положительное значение сигнализируется устаиавкай этих битов в единицу: 0 УЕ6 — срочное сообщение; 0 АСК вЂ” квитанция на принятый сегмент; 0 РЯН вЂ” запрос на отправку сообщения без ожидания заполнения буфера; 'и' йоТ вЂ” запрос на восстановление соединения; П аИт1 — сообщение, используемое для синхронизации счетчиков переданных данных при установлении соединения; 0 НХ вЂ” признак достижения передающей стороной последнего байта в потоке пере- лииаемых данных. вво Глава 17. Базовые протоколы ТСР/!Р 2 байта Порт источника (воша ртл) Порт приемнике (Иеэйпабоп рол) Последовательный номер (эецовпсе попгьег)- номер первою байта данных в сепквнте, определяет смещение сегмента относительно потока отправляемых данных Подтвврждвнныйномер(асапо ~йе мип 6 )- максимальный номер байта в патученном сегменте, увеличенный на единицу Окно (тйпсош) - количество байтов данных, ожидаемых отправителем данного сегмента, начиная с байта, номер которого указан в поле подтвержденного номера минна Р (геэепгес) Х сг г ю Ю указатель срочности (огдегй ро)пгег)- указывает на конец данных, которве нвОбксдимс срочно приннть, несмотря на переполнение буфера.
Контрольная сумма (свес)мого) Параметры (ор(юпз)- зто поле имеет переменную длину н может вообще отсугств;мать, используется для решения вспомогательных задач, например, для согласования максимального размера сегмента Запогпвииль ((игИИ)пй)- сто )ргжтивное попе моэат иметь переменную дгг(гну. нспсльэувтсл дпя доведения размера заголовков до целого числа 32-битовых слов Рис. т 7.6. Формат заголовка ТСР-сегмента Логические соединения — основа надежности ТСР Основным отличием тср от 00Р является то, что на протокол тсР возложена дополннтвльнзя задача — обеспечить надежную доставку сообщений, используя в качестве основы нвнвдваний, дейтагРаммный протокол ГР. Для решения атой задачи протокол ТСР использует метод продвижения данных с установлением логического соединения.
Как было сказано ранее, логическое соединение дает возможность участникам обмена следить за тем, чтобы данные не были потеряны, искажены или продублированы, а также чтобы они пришли к получателю в том порядке, в которси были отправлены. Протокол ТСР устанавливает логические соединения между прихладньсни лроцессалк, причем в каждом соединении участвуют только деа процесса.
ТСР-соединение является дугыексным, то есть каждый из участников этого соединения может одновременно получать и отправлятьданные. На рис. 17.6 показаны сети, соединенные маршрутизаторами, на которых установлен про. токол (Р. Установленные на конечных узлах протокольные модули ТСР решают задачу ВВ1 Протоколы транспортного уровня ТСР и 00Р обеспечения надежного обмена данными путем установления между собой логических соединений.
Рис. 17.6. ТСР-соединение создает надежный логический канал между конечными узлами При установлении логического соединения модули ТСР договариваются между собой с параметрах процедуры обмена данными. В протоколе ТСР каждая сторона соединения посылает противоположной стороне следующие параметры: 0 максимальный размер сегмента, который она готова принимать; 0 максимальный объем данных (возможно несколько сегментов), которые она разрешает другой стороне передавать в свою сторону, даже если та еще не получила квитанцию на предыдушую порцию данных (размер окна); 0 начальный порядковый номер байта, с которого она начинает отсчет потока данных в рамках данного соединения.
В результате переговорного процесса модулей ТСР с двух сторон соединения определяются параметры соединения. Одни из них остаются постоянными в течение всего сеанса сэязн,а другие адаптивно изменяются. В частности, в зависимости от загрузки буфера прннимаюшей стороны, а также надежности работы сети динамически изменяется размер окна отправителя. Соединение устанавливается по инициативе клиентской части приложения. Прн необходимости выполнить обмен данными с серверной частью приложение-клиент обращается к внжележашему протоколу ТСР который в ответ на это обращение посылает сегментзэврос на установление соединения протоколу ТСР, работаюшему на стороне сервера (рис.
17.7, а). В числе прочего в запросе содержится флаг ЯУ)ч', установленный в 1. Получив запрос, модуль ТСР на стороне сервера пытается создать «инфраструктуру» для обслуживания нового клиента. Он обращается к операционной системе с просьбой о выделении определенных системных ресурсов для организации буферов, таймеров, счетчиков. Зтв ресурсы закрепляются за соединением с момента создания и до момента разрыва. Если на стороне сервера все необходимые ресурсы были получены и все необходимые действия выполнены, то модуль ТСР посылает клиенту сегмент с флагами АСК н Буй(. Глава 17, Базовые протоколы ТСР/1Р ТСР на стороне ТСР на стороне клиента сервере ТСР на стороне ТСР на стороне клиента се1зввра Запрос соединения Под ютоека Закрыли соединения соединен прошла успешно Закрыть соединение Соспенне ЕЗТАБЬ18НЕР Состояние ЕЗТАВЬ18НЕС Тайм-аут 1 Соединение звщзыто Рис.
17.7. Процедура установления и рвзрьеа логического соединения при нормальном течении процесса В ответ клиент посылает сегмент с флагом АСК и переходит в состояние установленного логического соединения (состояние ЕВТАВ1.18НЕ1Э). Когда сервер получает флаг АСК, он также переходит в состояние ЕВТАВ1.18НЕ0. На этом процедура установления соединения заканчивается, и стороны могут переходить к обмену данными. Соединение может быть разорвано в любой момент по инициативе любой стороны. Для этого клиент и сервер должны обменяться сегментами Е1Х и АСК, в последовательности, показанной на рис. 17.7, б (здесь инициатором является клиент). Соединение считается закрытым по прошествии некоторого времени, в течение которого сторона-инициатор убеждается, что ее завершающий сигнал АСК дошел нормально и не вызвал никаких «аварийных» сообщений со стороны сервера. ПРИМЕЧАНИЕ Мы описали здесь процедуры установления и закрытия соединения очень схематично.
Реальные протокольные модули работают в соответствии с гораздо более сложными алгоритмами, учитывающими всевозможные «нештатные» ситуации, такие, например, как задержки и потери сегментов, недостаточность ресурсов или неготовность сервера к установлению соединения. Кроме того, мы проигнорировали тот факт, что еще на этапе установления соединения стороны договариваются о некоторых параметрах своего взаимодействия, например о начальных номерах посылаемых ими байтов. Однако мы скоро вернемся к этим важным деталям работы протокола ТСР 4$6М18йютюВДм~~ф1ййййый )81$ ' ЕвФ9йв1юФ ТСР«хнгднидинй Сокет одновременно может участвовать в нескольких соединениях.