Галкин В.А., Григорьев Ю.А. - Телекоммуникации и сети (1053870), страница 95
Текст из файла (страница 95)
Подробно информащ1Я содержится в поле данных ТСР-пакета, определенного как «Важные данные».4005.6. Протоколы IIуровня стека TCP/IPФлаг АСК - бит, единичное значение которого означает, что ТСР-пакет содержит в поле «номер подтверждения» верные данные.Флаг PSH - бит, единичное значение которого означает, что данные, содержащиеся в ТСР-пакете, должны быть немедленно переданы прикладной программе, для которой они адресованы. Подтверждение для ТСР-пакета, содер« жащего единичное значение во флаге PSH, означает, что и все предьщущиеТСР-пакеты достигли адресата.Флаг RST - бит, устанавливается в единицу в ТСР-пакете, отправляемом вответ на получение неверного ТСР-пакета.
Также может означать запрос напереустановление логического соединения.Флаг SYN - бит, единичное значение которого означает, что ТСР-пакетпредставляет собой запрос на установление логического соединения. Получение пакета с установленным флагом SYN должно бьггь подтверждено принимающей стороной.Флаг FIN - бит, единичное значение которого означает, что ТСР-пакет представляет собой запрос на закрытие логического соединения и является признаком конца потока данных, передаваемых в этом направлении. Получение пакета с установленным флагом FIN должно бьггь подтверждено принимающейстороной.Размер окна - 16-битовое поле, содержащее количество байт информации,которое может принять в свои внутренние буфера ТСР-модуль, отправляющийпартнеру данный ТСР-пакет. Данное поле используется принимающим потокданных ТСР-модулем для управления интенсивностью этого потока, так, установив нулевым значение этого поля, можно полностью остановить передачуданных, которая будет возобновлена только, когда размер окна примет достаточно большое значение.
Максимальный размер окна зависит от реализации, внекоторых реализациях максимальный размер устанавливается системным администратором (типичное значение максимального размера окна - 4096 байт).Определение оптимального размера окна - одна из наиболее сложных задачреализации протокола TCP.Контрольная сумма - 16-битовое поле, содержащее контрольную сумму,подсчитанную для ТСР-заголовка, данных пакета и ряда полей IP-заголовка.Указатель - 16-битовое поле, содержащее указатель (в виде смещеьшя) напервый байт в теле ТСР-пакета, начинающий последовательность важных(urgent) данных.Дополнительные данные заголовка ~ последовательность полей произвольной длины, описывающих необязательные данные заголовка.
Протокол TCPопределяет только три типа дополнительных: данных заголовка:• конец списка полей дополнительных данных;• пусто (No Operation);• максимальный размер пакета.4015. Сетевые протоколыДополнительные данные последнего типа посылаются в ТСР-заголовке вмомент установления логического соединения для выражения готовности ТСРмодулем принимать пакеты длиннее 536 байт. В UNIX-реализациях длина пакета обычно определяется максимальной длиной 1Р-сегмента для сети.Номера портов играют роль адресов транспортного уровня, идентифшщруяна конкретных узлах сети, по сути дела, потребителей транспортных услуг, предоставляемых как протоколом TCP, так и протоколом UDP. При этом протоколы TCP и UDP имеют свои собственные адресные пространства: например,порт номер 513 для TCP не идентичен порту номер 513 для UDP.Примечание, Своя собственная адресащм на транспортном уровне стека протоколовсетевого взаимодействия необходима для обеспечения возможности функционирования на узле сети одновременно многих сетевых приложений.
Наличие в ТСР-заголовкеномера порта позволяет ТСР-модулю, получающему последовательности ТСР-пакетов,формировать раздельные потоки данных к прикладным программам.Взаимодействие прикладных программ, использующих транспортные услуги протокола TCP (или UDP), строится согласно модели «клиент-сервер», которая подразумевает, что одна программа (сервер) всегда пассивно ожидаетобращения к ней другой программы (клиента). Связь программы-клиента исервера идентифшщруется пятеркой:1.
Используемый транспортный протокол (TCP или UDP);2. IP-адрес сервера;3. Номер порта сервера;4. IP-адрес клиента;5. Номер порта клиента.Для того, чтобы клиент мог обращаться к необходимому ему серверу, ондолжен знать номер порта, по которому сервер ожидает обращения к нему(«слушает сеть»). Локальное присвоение номера порта заключается в том, чторазработчик некоторого приложения просто связывает с ним любой доступный, произвольно выбранный числовой идентификатор, обращая внимание нато, чтобы он не входил в число зарезервированных номеров портов. В дальнейшем все удаленные запросы к данному приложению от других приложений должны адресоваться с указанием назначенного ему номера порта.Как должны назначаться номера протокольных портов? Эта проблема важна, так как два компьютера должны договариваться о номерах портов, преждечем они смогут взаимодействовать.
Например, когда компьютер А хочет получить файл от компьютера В, он должен знать, какой порт в компьютере Виспользует программа передачи файла. Существуют два фундаментальных подхода к назначению портов.Первый подход использует централизованное управление назначением. Вседоговариваются позволить центральному органу назначать номера всем необходимым портам и затем опубликовать список назначений.Тогда все программы создаются в соответствии с этим списком. Этот подход иногда называют«универсальным назначением». Такие назначения портов становятся широкоизвестными назначениями, а номера портов фиксированы и носят название <осо4025.6. Протоколы IIуровня стека TCP/IPшо известных номеров портов» (well-known port numbers).
Централизованноеприсвоение сервисам номеров портов выполняется организацией InternetAssigned Numbers Authority.Второй подход использует динамическое назначение. При этом подходе номера портов неизвестны всем. Вместо этого само сетевое обеспечение назначает порт, когда программа в этом нуждается. Чтобы узнать о текущем назначении портов на другом компьютере, нужно послать запрос, в котором заданпримерно такой вопрос: «как мне вызвать службу передачи файлов?».Компьютер-получатель ответит, какой порт необходимо использовать.Разработчики TCP/IP приняли смешанный подход, при котором группапортов назначается априорно, но большинство из них можно свободно использовать для любых целей прикладными программами в локальной сети.
Централизованно назначаемые номера портов начинаются с маленьких значений изатем увеличиваются, а порты с большими значениями используются для динамического назначения.На рис. 5.49 приведены примеры номеров портов для некоторых служб.В протоколе TCP использован принцип «скользящего окна», который обеспечивает «опережающую» посьшку данных с «отложенным» их подтверждением. Следует отметить недостаток этого механизма: если в течение некоторого времени не будет получено «отсроченное» подтверждение ранееотправленного пакета, то отправляющий ТСР-модуль будет вынужден повторить посылку всех ТСР-пакетов, начиная с неНомерподтвержденного.
Размер окна, как правило, опСлужбаПротоколпортаределяется объемом свободного места в1 ftp-data20TCPбуферах принимающего ТСР-модуля.ftp21TCPПротокол TCP предусматривает возмож 1 telnet23TCPность информирования принимающей стороны 1 smtp25TCPвзаимодействия отправляющей стороной о на 1 time37TCPличии в ТСР-пакете важных данных (urgent 1 time37UDPdata), требующих особого внимания согласно 1 finger79TCPлогике прикладной задачи. Отличие важных 1 portmap 111TCPданных от данных основного потока заключа 1 portmap 111UDPется в том, что принимающая сторона должна,exec512TCPкак правило, обработать их прежде ранее полуlogin513TCPvAio513UDPченных, но еще не обработанных данных потока.shell514TCPДля индикации наличия в ТСР-пакете важtalk517UDPных данных используется флаг URG ТСР-загоroute520UDPловка, местоположение важньпс данных в телеXserver6000TCP 1ТСР-пакета определяется полем «Указатель»ТСР-заголовка - оно задает смещение первого Рис.
5.49. Номера портов длянекоторых служббайта важньпс данных в теле ТСР-пакета.4035. Сетевые протоколыНомер вНомерФлагипоследовательности подтвержденияTCPА<=1Длинаданных11000130001001SYN, АСК0110013001АСК1 0 1SYNTCPВ0 1^Рис. 5.50. Установление логического соединенияПротокол TCP предусматривает передачу важных (urgent) данных в рамках общего потока данных («in-band»). Существуют протоколы (например ISO),поддерживающие режим передачи важных (expedited) данных вне общего потока данных («out-band»), что в общем случае быстрее.Этапы ТСР-взаимодействия.
Взаимодействие партнеров с использованием протокола TCP строится в три этапа:• установление логического соединения;• обмен данными;• закрьггие соединения.Рис. 5.50-5.52 иллюстрируют последовательность обмена ТСР-пакетамидвумя ТСР-модулями: А и В. ТСР-пакеты представлены тремя полями ТСРзаголовка («Номер в последовательности», «Номер подтверждения», «Флаги»)и числом, характеризующим длину данных из которых тело ТСР-пакета (заметим, что реально поля «Длина данных» в ТСР-заголовке нет). Стрелками показаны направления пересылки пакетов.Рис. 5.50 демонстрирует этап установления соединения, реализуемый как«трехшаговое рукопожатие» (three-way handshake). На первом шаге ТСР-модуль А, играя роль клиента, посылает ТСР-модулю В пакет с установленнымфлагом SYN и начальным значением номера в последовательности, равным1000.
ТСР-модуль В, будучи готов со своей стороны установить соединение,отвечает ТСР-пакетом, подтверждающим правильный прием запроса (поле«Номер подтверждения» на 1 больше начального номера в последовательности для ТСР-модуля А и среди флагов есть установленный в 1 флаг АСК) иинформирующим о готовности установить соединение (установлен флаг SYNи установлено значение 3000 начального номера последовательности). На третьем шаге ТСР-модуль А подтверждает правильность приема ТСР-пакета от В.На рис. 5.51 показан этап двустороннего обмена данными между ТСР-модулями А и В. ТСР-модуль, принимающий адресованные ему данные, всегдаподтверждает их прием, вьгчисляя значение поля «Номер подтверждения» взаголовке ответного ТСР-пакета как сумму пришедшего «Номера в последовательности» и длины правильно принятых данных. Посьшка данных к партнеру и подтверждение принятьЕс от него данных реализуются в рамках одногоТСР-пакета.4045.6.