Протокол TCP

До тех пор, пока программы протокола TCP продолжают функциони- ровать корректно, а система Internet не развалилась полностью на составные части, ошибки пересылки не будут влиять на правильное получение данных. Протокол TCP защищает от ошибок коммуникационной системы Internet. Управление потоком Протокол TCP дает средства получателю управлять количеством данных, посылаемых ему отправителем. Это достигается возвратом так называемого "окна" (window) вместе с каждым подтверждением, кото- рое указывает диапазон приемлемых номеров, следующих за номером последнего успешно принятого сегмента. Окно определяет количество октетов, которое отправитель может послать до получения дальнейших указаний. Разделение каналов Чтобы позволить на отдельно взятом компьютере многим процессам одновременно использовать коммуникационные возможности уровня TCP, протокол TCP предоставляет на каждом хост-компьютере набор адресов или портов. Вместе с адресами сетей и хост-компьютеров на коммни- кационном уровне Internet они образуют сокет (socket - разъем). Каждое соединение уникальным образом идентифицируется парой соке- тов. Таким образом, любой сокет может одновременно использоваться во многих соединениях. Соотнесение портов и процесов осуществляется каждым хост- компьютером самостоятельно. Однако оказывается полезным связывать часто используемые процессы (такие как "logger" или сервис с раз- делением времени) с фиксированными документированными сокетами. Этот сервис можно впоследствии использовать через известные адре- са. Установка и настройка адресов портов для других процессов мо- жет включать более динамичные механизмы. Работа с соединениями Механизмы управления потоком и обеспечения достоверности, опи- санные выше, требуют, чтобы программы протокола TCP инициализиро- вали и поддерживали определенную информацию о состоянии каждого потока данных. Набор такой информации, включающий сокеты, номера очереди, размеры окон, называется соединением. Каждое соединение уникальным образом идентифицируется парой сокетов на двух концах. Если два процесса желают обмениваться информацией, соответству- ющие программы протокола TCP должны сперва установить соединение (на каждой стороне инициализировать информаицию о статусе). По за- вершении обмена информацией соединение должно быть расторгнуто или закрыто, чтобы освободить ресурсы для предоставления другим поль- зователям. Поскольку соединения должны устанавливаться между ненадежными хост-компьютерами и через ненадежную коммуникационную систему Internet, то во избежание ошибочной инициализации соединений ис- пользуется механизм подтверждения связи с хронометрированными но- мерами очереди. Приоритет и безопасность Пользователи протокола TCP могут затребовать для своего соеди- нения приоритет и безопасность. Предусмотрены принимаемые по умол- чанию характеристики соединений, когда такие параметры не требуют- ся.

2. Идеология протокола
2.1 Элементы системы обединенных сетей
Среда объединенных сетей состоит из хост-компьютеров, включенных в
сети, которые в свою очередь соединятся друг с другом через шлюзы.
Здесь предполагается, что компьютерные сети могут быть либо локальны-
ми (например, ETHERNET), либо большими сетями (например ARPANET), но
в любом случае они основываются на технологии коммутации пакетов. Ре-
альными агентами, создающими и потребляющими сообщения, циркулирующие
в сети, являются процессы. Протоколы различных уровней в сетях, на
шлюзах и на хост-компьютерах поддерживают систему коммуникаций между
процессами, которая обеспечивает двунаправленный поток данных по ло-
гическим соединениям между портами процессов.
Термин пакет используется здесь в общем случае для обозначения
порции данных, участвующей в отдельном элементарном акте взаимодей-
ствия между сетью и соединенным с ней хост-компьютером. В общем слу-
чае нас не будет касаться формат блоков данных, циркулирующих в сети.
С точки зрения коммуникационных сетей, хост-компьютеры - это ком-
пьютеры, связанные с сетью и являющиеся отправителями и получателями
пакетов. Процессы рассматриваются как активные элементы на хост-
компьютерах (согласно наболее общему определению процессов как испол-
няющихся программ). Предполагается, что даже терминалы, файлы и дру-
гие устройства ввода-вывода взаимодействуют друг с другом посредством
процессов. Таким образом, любые коммуникации рассматриваются как ком-
муникации между процессами.
Поскольку процесс может контролировать несколько коммуникационных
потоков, ведущих от него к другому процессу (или другим процессам),
то мы постулируем, что каждый процесс может иметь набор портов, через
которые он общается с портами других процессов.
2.2 Модель действия
Процесс пересылает данные, вызывая программу протокола TCP и пере-
давая ей в качестве аргументов буферы с данными. Протокол TCP пакует
данные из этих буферов в сегменты, а затем вызывает модуль Internet
для передачи каждого сегмента на программу протокола TCP, являющуюся
адресатом. Этот адресат в свою очередь помещает данные из сегмента в
буферы получателя и затем оповещает свего клиента о прибытии предназ-
наченных ему данных. Программы протокола TCP помещают в сегменты кон-
трольную информацию, которая затем используется ими для проверки оче-
редности передачи данных.
Модель Internet коммуникаций состоит в том, что с каждой програм-
мой протокола TCP связан модуль протокола Internet, обеспечивающий ей
интерфейс с локальной сетью. Данный модуль Internet помещает сегменты
TCP в Internet датаграммы, а затем направляет их на другой Internet
модуль или же промежуточный шлюз. Для передачи датаграммы по локаль-
ной сети она в свою очередь помещается в пакет соответствующего типа.
Коммутаторы пакетов могут осуществлять дальнейшую упаковку, фраг-
ментацию или другие операции с тем, чтобы в локальной сети осущест-
вить передачу пакетов по назначению на модуль Internet.
На шлюзах между локальными сетями датаграмма Internet освобождает-
ся от пакета локальной сети и исследуется с тем, чтобы определить, по
какой сети она должна в дальнейшем идти. Затем Internet датаграмма
упаковывается в пакет, соответствующий выбранной локальной сети, и
посылается на следующий шлюз или же прямо к конечному получателю.
Шлюз имеет возможность разбивать Internet датаграмму на более мел-
кие датаграммы-фрагменты, если это необходимо для передачи по очеред-
ной локальной сети. Чтобы осуществить это, шлюз сам создает набор
Internet датаграмм, помещая в каждую по одному фрагменты. В дальней-
шем фрагменты могут быть снова разбиты следующими шлюзами на еще бо-
лее мелкие части. Формат фрагмента Internet датаграммы спроектирован
так, чтобы адресат - модуль Internet смог собрать фрагменты снова в
исходные Internet датаграммы.
Internet модуль, являющийся адресатом, выделяет сегмент из дата-
граммы (после ее сборки в случае необходимости) и затем передает его
по назначению на программу протокола TCP.
Данная простая модель действия протокола зачастую замалчивает мно-
жество деталей. Одной из важных характеристик является тип сервиса.
Этот признак дает указание шлюзу (или модулю Internet) о выборе пара-
метров сервиса, которые должны использоваться при передаче датаграммы
в очередной локальной сети. Приоритет датаграммы указывается среди
информации о типе сервиса. Датаграммы также могут нести информацию о
безопасности с тем, чтобы позволить хост-компьютерам и шлюзам, дей-
ствующим в многоуровневой системе безопасности, подвергать проверке
соотвествующие датаграммы.
2.3 Программное обеспечение хост-компьютера
Предполагается, что программа протокола TCP является модулем опе-
рационной системы. Клиенты обращаются к протоколу TCP в значительной
степени так же, как если бы они обращались к файловой системе. Сам
протокол TCP может обращаться к другим функциям операционной системы,
к примеру, для управления структурами данных. Предполагается, что
собственно интерфейс с локальной сетью осуществляется драйвером
устройства. Протокол TCP не обращается непосредственно к драйверам
сетевых устройств, а вместо этого делает вызов для модуля Internet
протокола, который в свою очередь и обращается к драйверу устройства.
Механизм протокола TCP не исключает его реализации на входном про-
цессоре. Однако, при такой реализации протокол общения между входными
процессорами должен обеспечивать средства для поддержки описанного в
этом документе интерфейса между пользователем и протоколом TCP.
2.4 Интерфейсы
Для запросов со стороны пользователя к протоколу TCP интерфейс
TCP/пользователь обеспечивает открытие и закрытие соединения, посылку
и получение данных или же получение статуса соединения. Эти запросы
похожи на другие запросы программы пользователя к операционной систе-
ме, например, на запросы открытия, чтения и закрытия файла.
Интерфейс между протоколами TCP и Internet поддерживает запросы на
посылку и получение датаграмм, адресованных на модули TCP в хост-
компьютерах в любом месте сети Internet. Рассматриваемые запросы име-
ют аргументы для указания адреса, типа сервиса, приоритета, безопас-
ности, а также передачи другой правляющей информации.
2.5 Связь с другими протоколами
Нижеприведенная диаграмма иллюстрирует место протокола TCP в
иерархии протоколов
+------+ +-----+ +-----+ +-----+
|Telnet| | FTP | |Voice| ... | | Уровень приложений
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | RTP | ... | | Уровень хостов
+-----+ +-----+ +-----+
| | |
+------------------------------+
| Internet протокол и ICMP | Уровень шлюзов
+------------------------------+
|
+------------------------------+
| протокол локальной сети | Сетевой уровень
+------------------------------+
Рис.2 Взаимосвязь протоколов
Предполагается, что протокол TCP будет в состоянии эффективно поддер-
живать протоколы более высокого уровня. Протокол TCP должен легко
взаимодействовать с такими протоколами более высокого уровня, как
ARPANET Telnet или AUDIN II THP to the TCP.
2.6 Надежные коммуникации
Поток данных, посылаемый на TCP соединение, принимается получате-
лем надежно и в соответствующей очередности.
Передача осуществляется надежно благодаря использованию подтвер-
ждений и номеров очереди. Концептуально каждому октету данных присва-
ивается номер очереди. Номер очереди для первого октета данных в сег-
менте передается вместе с этим сегментом и называется номером очереди
для сегмента. Сегменты также несут номер подтверждения, который явля-
ется номером для следующего ожидаемого октета данных, передаваемого в
обратном направлении. Когда протокол TCP передает сегмент с данными,
он помещает его копию в очередь повторной передачи и запускает тай-
мер. Когда приходит подтверждение для этих данных, соответствующий
сегмент удаляется из очереди. Если подтверждение не приходит до исте-
чения срока, то сегмент посылается повторно.
Подтверждение протокола TCP не гарантирует, что данные достигли
конечного получателя, а только то, что программа протокола TCP на
компьютере у получателя берет на себя ответственность за это.
Для направления потока данных между программами протоколов TCP
используется механизм управления потоками. Получающая программа прото-
кола TCP сообщает "окно" посылающей программе. Данное окно указывает
количество октетов (начиная с номера подтверждения), которое принима-
ющая программа TCP готова в настоящий момент принять.
2.7 Установка соединения и его отмена
Чтобы идентифицировать отдельные потоки данных, поддерживаемые
протоколом TCP, последний определяет идентификаторы портов. Поскольку
идентификаторы портов выбираются каждой программой протокола TCP не-
зависимо, то они не будут уникальны. Чтобы обеспечить уникальность
адресов для каждой программы протокола TCP, мы объединяем идентифици-
рующий эту программу Internet адрес и идентификатор порта. В резуль-
тате получаем сокет, который будет уникален во всех локальных сетях,
объединенных в единое целое.
Соединение полностью определяется парой сокетов на своих концах.
Локальный сокет может принимать участие во многих соединениях с раз-
личными чужими сокетами. Соединение можно использовать для передачи
данных в обоих направлениях, иными словами, оно является "полностью
дуплексным".
Протокол TCP волен произвольным образом связывать порты с процес-
сами. Однако при любой реализации протокола необходимо придерживаться
нескольких основополагающих концепций. Должны присутствовать общеиз-
вестные сокеты, которые протокол TCP ассоциирует исключительно с
"соответствующими им" процессами. Мы представляем себе, как будто

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...