Р.Л. Смелянский - Компьютерные сети. Том 2. Сети в ЭВМ (1130083), страница 29
Текст из файла (страница 29)
Эти ~'..-.",,.':.номера используются как для уведомления, так и в механизме управле;.,-:~1,:,иия окнами. Нетрудно подсчитать, что в сети с пропускной способно- '~!!:-; стью 100 Мбит!с эти номера будут исчерпаны менее чем за 10 мин, а .":::„- в сети с пропускной способностью 1 Гбит!с — менее чем за минуту ТСР-агенты обмениваются сегментами данных 1ТРР1)-сегмен'";-'-",,'-:;:: тами), Каждый сегмент имеет заголовок от 20 байт и более (по вы- , 1~,."-.';:::.бору) и тело переменной длины.
Один сегмент может включать в себя "',",;:;,:;~':байты от разных отправителей или часть данных от одного отправи';;~':;:,,,::'геля, Длину тела сегмента, определяемую ТСР-агентом, ограничива- Ь!,. ют лва фактора. Во-первых, длина сегмента не должна превышать '::.,::-;;*:;"'!::.Максимальную длину 1Р-пакета, т.е. 64 Кбайт. Во-вторых, каждая сеть "„«-'! имеет максимальную единицу передачи — МТН (Мах1ппнп ТгапзГег ",;;..-.',:13шг)„и каждый сегмент должен помешаться в МТ1 1. В противном "~~;"',!',,'случае маршрутизаторам придется применять фрагментацию.
При ':~-",';: этом возрастают накладные расходы на передачу в транспортной .;~~;:;:среде, так как каждый фрагмент оформляется как самостоятельный Основным протоколом, который используется ТСР-агентом, :"-'~„::.~:::„) является протокол скользягцего окна.
Это означает, что каждый по,";-;~,:~деланный сегмент должен быть подтвержден. Одновременно с от'"-',-' Правлением сегмента запускается таймер. Подтверждение придет :;;:"„; либо с очередными данными в попутном направлении, если они ",;-,':::::имеются, либо без данных само по себе и будет иметь порядковый ~~!,:::: номер очередного ожидаемого получателем сегмента. Если таймер сработает прежде, чем придет подтверждение, то сегмент посылается ~'-',".:Повторно Несмотря на кажушуюся простоту, ТСР-протокол достаточно "",;:.',, сложен и должен решать следуюгцис основные проблемы ° восстанавливать порядок сегментов, ° убирать дубликаты сегментов, в каком бы виде они не посту- 1:-::,.'-,'::;.:, пали; 123 ° определять разумную задержку для Гппе-оиу на подтвержление в получении сегмента; ° надежно устанавливать и разрывать соединения; .
управлять потоком; ° управлять перегрузками. 3.3.4. Заголовок сегмента в ТСР Заголовок сегмента ТСР-протокола показан на рис. 3.8. Как уже говорилось, максимальная длина раздела данных составляет 65 495 байт, а заголовок включает в себя следующие поля: Яопгсе рога и 1аеа11па11оп рог1, указывающие сокеты на стороне соответственно отправителя и получателя; Яег1пепсе пшпЬег и Ас1пзову1ег1яешеп1 пшпЬег, содержащие порядковый номер ожидаемого байта. и следующего ожидаемого байта, а не последнего полученного байта; 6-битовое поле флагов, содержащее следующие биты; ПКС, используемый вместе с полем Пгяеп1 ро1п1ег, которое указывает на начало области срочных данных; ° АСК, равный ! если поле Ас1гпозу1ее1яешеп1 пшпЬег используется, а в противном случае равный О; Р8Н, равный 1, если отправитель просит транспортного агента на стороне получателя сразу передать зти данные приложению и не буферизовать их; гав, используемый для переустановки соединения, которое по какой-либо причине стало некорректным.
Получение сегмента с таким флагом означает наличие проблемы, с которой необходимо разбираться; 32 бит Данные Ьфакультативно) Рис. 3.8. Структура заголовка сегмента ТСР-прогокола 124 32 бит '-" ' Рис. 3,9. Структура псевдозаголовка, включаемого в ТСР-сегмента ЯЪ1, равный 1 при запросе на соедине! зывает наличие или отсутствие подтвер и АСК = 0 — запрос на соединение, а п = 1 — подтверждение соединения; Р! 1х1, используемый при запросе на разрь новка этого флага означает, что у отпр данных; ЪУ!пдои а!ке, используемое алгоритмом управ 1:.;";",:";;::-",получатель указывает, сколько байтов может п ';:~"',~;: нзачиная с последнего подтвержденного байта, Ортйппа, используемое для возможностей, н :!;:,", стандартным заголовком. Например, здесь часто ', ~-",;!:Мальный размер поля данных, допустимый по С!тес1гашп, используемое для обнаружения о '«~~:::Оно охватывает заголовок, данные и псевдозаго ';.."~:.~: на рис.
3.9 Псевдозаголовок содержит 32-разрядные 1Р- :. -':~,-'! -'получателя, номера протокола (для ТС Р вЂ” 6) и ,:;,'~~:: Сегменте, включая заголовок Понятно, что для высокоскоростных канал ',::;:;;,".';",'64 Кбайт неэффективен: большую часть времен .: „:;";.;тель будет ожидать подтверждений. Поэтому в :;;". параметр «Масштаб окна«, значение которого оп ,-'',",., вовке соединения.
Этот параметр позволяет у "2. Мер окна» до 14 разрядов влево, увеличивая при ' л!«!' Гбайт контрольную сумм> зие. Флаг АСК укаждения. При Я'1х! = 1 ри Я'М = 1 и АСК = 1в соединения. Устаавителя нет больше ления окном. В нем ослать отправитель, е предусмотренных указывается макси- данному соедине- шибок при передаче. ловок, показанный адреса отправителя и ~исло байтов в ТСР- ов размер сегмента и передачи отправи- КГС 1323 появился ределяется при уставеличить поле «Разэтом размер окна до 3.3.5. управление соединениями в Тср 125 Как уже говорилось, установление ТСР-соединения происходит ~;,.'-~'::;;: по протоколу «троекратного рукопожатия».
Флаги ВУХ и АВК в заго-:,! Ловке сегмента используются для реализации примитивов С01х11х1ЕС- '-':-~. Тг!О!х! КЕО11ЕБТ и СОХ1чЕСТ10~! АССЕРТЕО, а флаг КВТ вЂ” для реализации примитива КЕ!ЕСТ. Это означает, что указанные примитивы вызывают посылку ТСР-сегмента с установленным соответствуюшим флагом. На рис. 3.10, а показана схема установления ТСР-соединения. Когда приходит запрос на соединение по определенному порту, ТСР- агент проверяет, имеется ли процесс, который выполнил примитив ! !ЯТЕ)~ в этом порту. Если такой процесс имеется, то ему передается управление.
Если такого процесса нет, то в ответ идет отказ от установления соединения. На рис. 3.10, б показана ситуация, когда два хоста одновременно пытаются установить соединение между двумя одинаковыми сокетами (коллизия). Поскольку каждое соединение идентифицируется парой сокетов, то установлено будет только одно из соединений. Таймер лля последовательных номеров сегментов тактируется с частотой 4 мкс, максимальное время жизни сегмента — 120 с.
Напомним, что начальный номер сегментов никогда не равен нулю (см. подразд. 3.2.3). Для генерации последовательных номеров сегментов используется механизм логических часов. ТСР-соединение, как уже говорилось, — дуплексное, т.е. в каждом направлении данные передаются независимо и соединение разрывается независимо по каждому направлению, поэтому лучше всего представлять его как два симплексных соединения.
Если в очередном сегменте флаг Р!Я=1, то в этом направлении данных больше не будет. При получении подтверждения для данного сегмента соединение в этом направлении считается разорванным. В другом направлении передача может продолжаться сколь угодно долго. Если подтверждения на первый флаг Р!Х нет в течение двух интервалов жизни сегментов, то соединение считается разорванным по 1цпе-оШ.
Противоположная сторона также по истечении этого периода времени узнает, что никто от нее не ждет ответа. Машина 2 Машина 1 Машина 2 М ашииа 1 Рис. 3.10. Схемы установления ТСР-соелинения в одностороннем (а) и двухстороннем (б) порядке Таблица 3.2 Состояния, используемые в конечном автомате управления ТСР-соедннениями Состояние Описание СЕОБЕР Нет активных или ожидающих соединений ?.1БТЕ1ч 5Ъ !Ч КСЪТ) Сервер ожидает входящего вызова Запрос на соединение доставлен; ожидание подтверж- дения Приложение открывает соединение ЕЗТАЕь1ЯН ЕР Состояние нормальной передачи данных Е1!Ч ЧА!Т 1 Р!1а %А1Т 2 Приложение сообщило об окончании работы Другая сторона согласилась разорвать соединение Т1МЕО 3УА1Т Ожидание, пока все сегменты прекратят свое суще- ствование СЕ051ХО Попытка обеих сторон одновременно закрыть соеди- нение СЕОЗЕ %А1Т Противоположная сторона инициировала разрыв ,1,, В табл.
3.2 указаны состояния, испол те управления ТСР-соединениями На рис. 3.11 представлена процедура :-, 1";.-,единения в виде диаграммы конечного "-;,'. менение состояний клиента и сервера ";,;. пений ф';::;:;,а, Состояния клиента 1. Первоначально соединение наход 2. После выполнения клиентом запр ':::;.~!:,~':-ТСОНМЕСТ) клиент устанавливает флаг '.*~р,"'.ЖЪ! Я Е1Ч Т. аа!ме 3. После получения от сервера флаг ,Ф~!':,"дения клиент переходит в состояние от ;~~,:";.::01ЯНЕР), в котором может передавать 4. После выполнения вызова СЕРБ ".~::;.':аЕ11~ и переходит в состояние Н1ч ЪУА! 5. Из состояния Г1М ЪУА1Т ! клиент ,:,:„;,'. СЕОЫНО по получении флага Е!Х и либо в состояние Р!1ч %А1Т 2 по получе ' =-„",.: в состояние Т! МЕР %А!Т по получени ';,' н после отправки флага АСК ьзуемые в конечном автома- установления и разрыва соавтомата, описывающей из- ТСР в ходе обработки соеди- ится в состоянии СЕРВЕР.
оса на открытие соединения Я г')х! и переходит в состояние а ЪУМч-АСК и его подтвержкрытого соединения (ЕВТАВ- и принимать данные. Е клиент формирует сегмент Т 1. переходит либо в состояние после отправки флага АСК, нии только флага АСК, либо и флага Н)ч+АСК от сервера 127 ГАБТ АСК Ожидание прекращения существования всех сегментов СО)Ч)ЧЕСТ/БУ)Ч СЕОБЕР С1.ОБЕ/— СЕОБЕ/— Ь(БТЕН/— БУ)Ч/БУ)Ч+ АСК Е(БТЕГЧ БЕ1Ч О/БЪЪ ЕБТ/- Бу)ч БЕХР БУ)Ч/БУ)Ч +АСК (Одновременное открытие) Состояние передачи данных) ( АСК/— БУ(Ч е АСК„гАСК (Третий шаг «зроекратного рукопожатияг сьОБе Гпч Р(Ьч/Аск (Акгивное закрытие) (Пасивноегзакрытие) ( СЕОБЕ ) "гУА!Т ( СЬОБЕ/РПЧ 1АБТ АСК (гппе-ога истек) А С К/— СЬОБЕР С1.0БЕ/РПЧ РПЧ/АСК СЬОБ1Г(О РУ)Ч.'- АСК/АСК АСК/— Т1МЕР епч/Аск ЗУА(Т РПЧ ЗУА!Т (АСК/— РПЧ %А1Т ( Возврат к началу) Рис.
3.1!. Диаграмма состояний конечного автомата установления и разрыва ТСР-соелинення 128 6. Из состояния СЬО81ь(Сг клиент переходит в состояние Т1МЕР 'га(А1Т по получении флага АСК. 7. Из состояния Г11ч %А1Т 2 клиент переходит в состояние Т1МЕР 'т)гА1Т по получении флага Г1)х( и после отправки флага АСК. 8.
Из состояния Т1МЕР ЧА1Т клиент переходит в состояние СЬОВЕР по 1(пте-очи (по истечении таймера времени жизни сегмента). 9. Если в состоянии ЕЯТАВЫВНЕР клиент получил флаг Г!)Ч, то он отправляет флаг АСК и переходит в состояние СЬОЯЕ ЪУА)Т. В этом случае инициатором разрыва соединения выступает сервер. ! О. В состоянии СЬОВЕ ~УА1Т клиент выполняет вызов СЬОВЕ и отправляет флаг Р11ч, переходя в состояние 1.АВТ АСК. 11. После получения подтверждения от сервера соединение пере- холит в состояние СЬОВЕР. Состояния сервера: 1. Первоначально сервер находится в состоянии СЬО5ЕР, из которого переходит в состояние ЫЯТЕХ после выполнения вызова ;;.:,, ~а)ВТЕКИ.