В. Столлингс - Современные компьютерные сети (2-е издание, 2003) (1114681), страница 16
Текст из файла (страница 16)
7. На рис. 2А протокольный модуль данных уровня Ж инкапсулирован в протокольный модуль данных уровня (Ж вЂ” 1). Протокольный модуль данных у авиа А» можно также разбить (сегментировать) иа иесколысо протокольуровня ных модулей данных уров»»я (Аг- 1) или сгруппировать (обьедииить) иесколько протокольных модулей данных уровня Агв протокольном модуле данных уровня (г<» — 1). а) в случае сегментации обязательно ли каждый сегмент уровня (Л» — 1) должен содержать копию заголовка уровня»<»7 б) в случае объединения обязательно ли каждый пратакальиый модуль данных уровня А»додже»» сохранять свой заголовок или данные могут быть консолидированы в едином протокольном модуле данных уровня Л» с одним заголовком уровня Х7 3.!. Протокол ТСР 71 Глава 3 Протоколы ТСР и 1Р— Да слушайте же, — страстно продолжал Сейм.
— Всякий раа, когда ноезп приходит к станнпи, я чувствую, что он прорнал «менту, побелил в битве с хаосом. Вм брезгливо сетуете на то, что после Слоуп-Сквер иепремети> будет Виктория. О нет! Может случиться многое другое, и, доехав Ло станови, я чувстну«о, что бмл на волосок от а«без«и. И коглн кондуктор кричкт: «Виктория се, — зто ив пустое слоно.
Для мепи ато крик герольда. возне«ааюшсго победу. Да ато и впрямь викторин, побеле аламовмх синов. С К. Чесжсржом члоеек. которнй бьм чепжерзоя В этой главе более детально рассматриваютсн ключевые протоколы транспортного и межсетевого уровней Интернета. Несомненно, наиболсс важным протоколом транспортного уровня являе«ся ТСР, который мы изучим первым. Затем мы кратко исследуем др)той полезный протокол транспортного уровня — ШЭР. На межсетевом уровне мы обсудим как протокол 1Р« 4, представляющий собой текущую версию межсетевого протокола, применяемую в Интернете и частньсх объединенных сетях. так и протокол 1руб, который должен заменить 1Ру4.
3.1. Протокол ТСР Текущая версия протокола ТСР официально определена в КРС 793'. Впоследствии к этому документу было добавлено множество спецификаций, описывающих усовершенствования и реализацию. Те документы, которые требуются для реализации протокола ТСР, согласующегося с требованиями 1989 г., собраны в КГС 1122'. С тех пор появилось множества других документов, отражающих различные дополнительные изменения. Ссылки на них будут приводиться прн необходимости. Праще всего начать описание протокола ТСР с формата знголовка.
ТСР использует только один тип протокольного модуля данных, который пазьсвается ТСР-сегментом (его заголовок показан на рнс. 2.1 в главе 2). Поскольку один ' ВГС 793, Ггоптпмюп поп«го! рюгосос, гмпябрь !9З! г. -' КВС 1 122. Вгцгвгегпепг«г«1!п«етп«г Воза — Союпппигеиоп бореия октябрь ! 999 г. заголовок еа.
вок реализует все механизмы протокола. он довольно велик (минимальная длина ина 20 байт). Ниже перечислены поля заголовка. + Парт источника (16 бнт). Пользователь ТСР— источник. + Парти приемника (16 бит). Пользователь ТСР— приемник. + Порядковый номер (32 бита). Порядковый номер первого в этом сегменте байта данных, естли не установлен флаг 8УХ. Если же флаг БУХ установлен, это поле содержит началысый порядковый нс>мер (1псг«а! Зе«1««енсе ХпгиЬег, 1ЯХ), а номер первого байта данных равен 1ЯХ + 1.
+ Номер подтверждения (32 бита). Вазвра«цаемое подтверждение. Содержит п ядковый номер следующего байта данных, который ожидает получить порядков ' о ТСР-сущпост«ь + Сл«вс««ет«ие двипых (4 бита). Количество 32-разрядных слов в заголовке, + Резерв (6 бит): Зарезервировано на будущее. + Флаги(ббит): + 13«сΠ— признак поля срочного указателя; + АСК вЂ” признак поля подтверждения; + РБН вЂ” функция продвижения; + КВТ вЂ” сброс соединения; ВУХ вЂ” синхронизировать порядковые номера; + ЬТХ вЂ” признак отсутствия данных от отправителя.
+ Окна (16 бит). Кредит управления потока в байтах. Содержит количество байтов данных, указынасмое в поле подтверждения„которые получатель желает принять. + Контрольная сумма (16 бит). Кад для обнаружения ошибок. + Сра п«ый указатель (16 бит). Идентифицирует последний байт в последовательности срочных данных. Таким образом получатель узнает, сколько срочных данных пришло. + Парил«евры (длина переменная). Описывает дополнительные характеристики. Паля «Порядковый намерз и «Номер подтвержденняа означают аиты, а не целые сегменты. Например, если сегмент содержит порядковый номе! номе з 1001 и вклю'«ает 600 байт данных, та порядковый номер относится к первому байту поля данных.
У следующего сегмента поле порядкового номера будет содержать ч ть число 1601. Таким образом, протокол ТСР ориентирован на поток. Он принимает от пользователя поток байтов, группирует их в сегменты так, как ему удобно, н нумерует каждый байт потока. Флаги Р(1ЯН и 111(ОЕХТ реализуют две службы протокола ТСР. + Придвижение потока данных(«)ага збгеаш ризЬ). Обычно протокол ТСР сам решает, достаточно ли он аккумулировал данных, чтобы с.„о1 р «ми овать сегмент для передачи. Но пользователь ТСР может потребовать, чтобы протокол ТСР передал все не отправленные на данный момент д анные и пометил их флагом РИВН.
На принимающем конце протокол д Р осгавит этн 72 Глава 3. Протоколы ТСР и <Р 3 2 Протокол 00Р 7З данные пользователю. Пользователь может потребовать эта. если он дошел до логическога конца данных. + Сигнализация о срочных данных(игяепг <1ага а<ива)>пя), Средство информирования получателя о том, что важные, или «срочные», данин>е находятся в поступнвп>ем потоке данных. Какое действие следует предпринять, решает получающий пользователь.
Пользователь ТСР (как правило, приложение, например протокол ГТР) генерирует команду ЯЕМз (передать), чтобы направить блок данных п1х>токолу ТСР, который номеп<ает данные в буфер передачи. Если установлен флаг Р(>Я1, то любые неотправленные данные в буфере, включая только что туда помещенные, немедленно посылаются в виде одного нлн нескольких сегментов, причем последний сегмент помечается флагом Р <>ЯН. В противном случае (если флаг РАЕН не установлен) протокол ТСР может накапливать данные в буфере передачи и посылать их в виде одного илн нескольких сегментов в зависимости оттого, как удобнее протоколу.
Например, ТСР может подождать, пока накопится больше данных, чтобы передать их в виде сегментов болыпего размера, таким образом повышая эффективность. Пользователь может при обращении к команде 5Ей<> установить флаг УКСЕХТ (срочный). В атом случае сегмент маркируется флагом ПКСЕ1<1Т. Данные в сегментах, прибывающие и<> соединению к ТСР-сущности, также хранятся в приемном буфере, свяааннам с этим соединением. Если пришедшие данные помечены флагом РПВН, эти данные вместе со всеми данными, находящимися в приемном буфере, немедленно доставляются получателю по команде КЕСЕ1'<гЕ (принять), Если пришедшие данные помечены флагом ПКОЕХТ, пользователь сигнализируется о наличии срочных данных.
Поле «Контрольная сумма» относится ко всему сегменту вместе с псевдозаголовком, предваряющим заголовок. Псевдозаголовок содержит следующие поля из заголовка 1Р: Интернет-адреса отправителя и получателя, используемый протокол, а также длину поля сегмента. Таким образом, протокол ТСР защищается от неверной доставки сегмента протоколом 1Р. То есть если протокол! Р доставит сегмент не тому хосту, то даже при отсутствии повреждений в сегменте получающая ТСР-сущность обнаружит ошибку в доставке. Контрольная сумма ТСР вычисляется как сложение в дополнительном коде всех 16-разрядных слов псевдозаголовка, заголовка ТСР и тела сегмента ТСР.
Перед вычислением само поле контрольной суммы обнуляется. Документом КГС 793 определяется только одно значение для поля «Параметры» — максимальный размер сегмента. Этот 16-разрядный параметр может использоваться только в сегментах запроса начального соединения. Он идентифицирует максимальный размер сегмента в байтах, который будет приниматься соединением. С момента публикации КГС 793 широкое применение получили два других параметра: + Масиппабнь<й множитель окна (гч>п<1ош зса!е (асгог). Обычно иоле «Окно» в заголовке ТСР содержит информацию о кредите в байтах. Когда используется параметр «Маспггабный множитель <и<на», значение в поле «Окна» умножается на 2', где à — значение этого парал<етра.
Максимальное допустимое значение Е принимаемое протоколом ТСР, равно 1<1. Этот параметр используется ж>лько в сегментах запроса начального соединения. + Временнои штамп < < з (Г<шезгап>р). Этот параметр может использоваться в любом сегменте данных. н >х. Он определяет два дополнительных поля.