Вычислительные сети, системы и телекоммуникации

Содержание скрыть

Компьютерные системы связи играют все более важную роль в военных, правительственных и гражданских приложениях. Этот документ в основном охватывает требования к компьютерной связи в военной области, в частности, к стабильности в условиях недостаточной надежности связи и возможности перегрузок. Однако многие из этих проблем также возникают в гражданском и государственном секторах.

В среде, где появляются и исчезают стратегические и тактические компьютерные сети связи, важно предоставить средства для их соединения, а также стандартные протоколы межпроцессного взаимодействия, которые поддерживают широкий спектр прикладных программ. Предвидя потребность в таких стандартах, Представительство Секретариата Обороны по научно-исследовательским и опытно- конструкторским работам предъявило протокол управления передачей (Transmission Control Protocol — TCP), описанный здесь, на основе стандартизации DoD протокола коммуникаций между про цессами.

TCP — это протокол обеспечения надежности прямых соединений, созданный для многоуровневой иерархии протоколов, поддерживающих межсетевые приложения. Протокол TCP обеспечивает надежность связи между парами процессов на главных компьютерах, включенных в различные компьютерные сети связи, которые объединены в единую систему.

Были сделаны очень скромные заявления о надежности протоколов ниже TCP. TCP предполагает, что он может получить простой, потенциально ненадежный сервис для своих датаграмм со стороны протоколов нижнего уровня. В принципе, TCP должен работать с широким спектром систем связи, от кабельных соединений до коммутации пакетов или каналов.

Протокол TCP основывается на концепциях, впервые описанных авторами Cerf и Kahn. TCP занимает в многоуровневой архитектуре протоколов нишу непосредственно над протоколом Internet, который позволяет протоколу TCP отправлять и получать сегменты информации переменной длины, заключенные в оболочку Internet датаграмм. Internet датаграмма предоставляет средства для адресации отправителя и получателя сегментов TCP в различных сетях. Интернет-протокол также обрабатывает любую фрагментацию и повторную сборку сегментов TCP, необходимых для передачи и доставки через несколько промежуточных сетей и шлюзов. Интернет-протокол также управляет информацией о приоритетах, классификацией безопасности и разграничивает сегменты TCP. Таким образом, эта информация может передаваться напрямую по многим сетям.

12 стр., 5955 слов

Компьютерные сети и технологии

... любую компьютерную сеть как совокупность абонентских систем и коммуникационной сети. Обобщенная структура компьютерной сети приведена на рис. 4. ОБОБЩЕННАЯ СТРУКТУРА КОМПЬЮТЕРНОЙ СЕТИ Рис. 4 1.3. Классификация вычислительных сетей В зависимости от территориального расположения абонентских систем вычислительные сети можно разделить на ...

Большая часть этого документа написана в отношении реализаций протокола TCP, которые, наряду с протоколами более высокого уровня, присутствуют на главном компьютере. Некоторые компьютерные системы будут подключаться к сетям через главные компьютеры, содержащие протоколы TCP и уровня Интернета, а также специальное сетевое программное обеспечение.

Спецификация TCP описывает его интерфейс с протоколами более высокого уровня, которые оказались возможными даже в случае главного компьютера, если соответствующий протокол связи реализован между главным компьютером и главным компьютером.

  1. Протокол управления передачей (TCP)

Протокол управления передачей (TCP) предназначен для использования в качестве надежного протокола общения между хост-компьютерами в коммуникационных компьютерных сетях с коммутацией пакетов, а также в системах, объединяющих такие сети.

TCP требуется для обеспечения надежного обслуживания межпроцессного взаимодействия в многосетевой системе. TCP должен быть общим протоколом для связи между хост-компьютерами в нескольких сетях.

1.1 Цель

TCP требуется для обеспечения надежного обслуживания межпроцессного взаимодействия в многосетевой системе. TCP должен быть общим протоколом для связи между хост-компьютерами в нескольких сетях.

1.2 Интерфейсы

TCP взаимодействует, с одной стороны, с пользователем или прикладной программой, а с другой стороны, с протоколом более низкого уровня, таким как Интернет-протокол.

Мы разумно объясняем интерфейс между прикладным процессом и протоколом TCP. Этот интерфейс состоит из набора вызовов, аналогичных вызовам операционной системы, предъявляемым к процессу приложения для управления файлами. Например, в этом случае есть вызовы для открытия и закрытия соединений, для отправки и получения данных об установленных соединениях. Также предполагается, что TCP сможет асинхронно взаимодействовать с приложениями. Хотя разработчикам TCP протокола и предоставлена значительная свобода в создании интерфейсов, которые соответствуют свойствам конкретной операционной системы, все же от любой приемлемой реализации требуются некие обязательные минимальные функции интерфейса между протоколом TCP и пользователем.

Интерфейс между TCP и протоколами нижнего уровня определяется в гораздо меньшей степени, за исключением того, что должен быть механизм, с помощью которого два уровня могут обмениваться информацией друг с другом асинхронно. Обычно полагают, что протокол нижнего уровня задает данный интерфейс. TCP предназначен для работы с широким спектром взаимосвязанных компьютерных сетевых сред. Предполагается, что протокол более низкого уровня — это Internet [2].

1.3 Действие

Основная цель TCP — предоставить надежный и безопасный сервис для логических схем или соединений между парами процессов. Чтобы обеспечить такой сервис, основываясь на менее надежных коммуникациях Internet, система должна иметь возможности для работы в следующих областях:

базовая передача данных;

  • достоверность;
  • управление потоком;
  • разделение каналов;
  • работа с соединениями;
  • приоритет и безопасность.

Базовая передача данных

TCP может передавать непрерывные потоки октетов между своими клиентами в обоих направлениях, упаковывая некоторое количество октетов в сегменты для передачи через Интернет. Как правило, протоколы TCP по своему усмотрению решают, когда блокировать и передавать данные.

11 стр., 5132 слов

Дипломная работа проверка датчика уровня ультразвуковой дуу2м

... По назначению ДАТЧИКИ УРОВНЯ УЛЬТРАЗВУКОВЫЕ ДУУ2 Датчики уровня ультразвуковые ДУУ2 (далее "датчики") предназначены для измерения уровня различных жидких ... датчиков. Технические данные. Датчики ДУУ2, в зависимости от номера разработки, предназначены для измерения уровня различных жидких продуктов, уровня ... Масса датчика не более 13,5 кг. Общее устройство и принцип работы датчиков Измерение уровня ...

Иногда пользователям необходимо убедиться, что все данные, которые они отправляют в TCP, уже отправлены. Для этой цели определена функция проталкивания. Чтобы гарантировать, что данные, отправленные в TCP, действительно передаются, отправитель указывает, что они должны быть отправлены получателю.

Нажатие заставляет программы TCP немедленно отправлять и получать оставшиеся данные. Успешная отправка может быть не видна получателю, а сама функция отправки может не иметь индикатора ограничения записи.

Достоверность

Протокол TCP должен быть защищен от повреждения, потери, дублирования и неправильного порядка данных, вызванных системой связи через Интернет. Это достигается присвоением очередного номера каждому передаваемому октету, а также требованием подтверждения (ACK) от программы TCP, принимающей данные. Если подтверждение не получено в течение интервала времени проверки, данные отправляются снова. На стороне получателя порядковые номера используются для изменения порядка сегментов, которые могли быть получены в неправильном порядке, и для ограничения возможности дублирования.

Повреждения устраняются путем добавления контрольной суммы к каждому переданному сегменту, проверки ее при получении и последующего удаления дефектных сегментов.

Пока программы TCP продолжают работать правильно и Интернет-система не разрушена полностью, ошибки пересылки не повлияют на правильный прием данных. Протокол TCP защищает от ошибок коммуникационной системы Internet.

Управление потоком

TCP предоставляет получателю средства для управления объемом данных, отправляемых ему отправителем. Это достигается путем возврата так называемого «окна» вместе с каждым подтверждением, которое указывает диапазон допустимых номеров после последнего успешно принятого сегмента. В этом окне определяется количество октетов, которое отправитель может отправить до получения дальнейших инструкций.

Разделение каналов

Чтобы позволить нескольким процессам на одном компьютере одновременно использовать возможности связи на уровне TCP, TCP предоставляет набор адресов или портов на каждом главном компьютере. Вместе с адресами сетей и хост-компьютеров на коммуникационном уровне Internet они образуют сокет (socket — разъем).

Каждое соединение однозначно идентифицируется парой сокетов. Таким образом, любой сокет можно использовать в нескольких соединениях одновременно.

Отображение портов и процессов обрабатывается каждым хост-компьютером независимо. Однако оказывается полезным связывать часто используемые процессы (такие как «logger» или сервис с разделением времени) с фиксированными документированными сокетами.

6 стр., 2841 слов

Сетевые технологии и Internet

... сетевой инфраструктуры. Интеграция корпоративной сети Intranet и глобальной сети основывается на использовании однотипных методов хранения и представления информации. Файловая система компьютера иерархическому принципу, предусматривающую древовидную данных. Web серверы Internet ... аудиотехнологий в Internet. Значение Интернет. Стало привычным, что в сфере информационных технологий инновационный ...

Этот сервис можно впоследствии использовать через известные адреса. Установка и настройка адресов портов для других процессов может включать более динамические механизмы.

Работа с соединениями

Описанные выше механизмы управления потоком и проверки требуют, чтобы программы TCP инициализировали и поддерживали определенную информацию о состоянии для каждого потока данных. Сбор этой информации, включая сокеты, порядковые номера, размеры окон, называется соединением. Каждое соединение однозначно идентифицируется парой сокетов на двух концах.

Если два процесса желают обмениваться информацией, соответствующие программы протокола TCP должны сперва установить соединение (на каждой стороне инициализировать информацию о статусе).

В конце коммуникации соединение должно быть разорвано или закрыто, чтобы освободить ресурсы, которые будут предоставлены другим пользователям.

Поскольку соединения должны устанавливаться между ненадежными хостами и через ненадежную систему Интернет-связи, для предотвращения неправильной инициализации соединений используется квитирование с заданными номерами очередей.

Приоритет и безопасность

Пользователи TCP могут требовать приоритета и безопасности для своего соединения. Если эти параметры не требуются, предоставляются характеристики подключения по умолчанию.

  1. Идеология протокола

2.1 Элементы системы объединенных сетей

Межсетевое окружение состоит из хост-компьютеров, подключенных к сети, которые, в свою очередь, обмениваются данными друг с другом через шлюзы.

Здесь предполагается, что компьютерные сети могут быть либо локальными (например, ETHERNET), либо большими сетями (например, ARPANET), но в любом случае они основываются на технологии коммутации пакетов. Реальные агенты, которые создают и потребляют сообщения, циркулирующие в сети, — это процессы. Многоуровневые протоколы в сетях, шлюзах и хост-компьютерах поддерживают систему межпроцессного взаимодействия, которая обеспечивает двунаправленный поток данных через логические соединения между портами процессов.

Термин пакет здесь обычно используется для обозначения данных, которые участвуют в одном элементарном акте взаимодействия между сетью и подключенным к ней главным компьютером. В общем, нас не волнует формат блоков данных, циркулирующих в сети.

С точки зрения сетей связи, главные компьютеры — это компьютеры, подключенные к сети, которые являются отправителями и получателями пакетов. Процессы рассматриваются как активные элементы на хост- компьютерах (согласно наиболее общему определению процессов как исполняющихся программ).

Предполагается, что терминалы, файлы и другие устройства ввода-вывода также взаимодействуют друг с другом через процессы. Следовательно, любое общение рассматривается как общение между процессами.

Поскольку процесс может контролировать несколько коммуникационных потоков, ведущих от него к другому процессу (или другим процессам), то мы постулируем, что каждый процесс может иметь набор портов, через которые он общается с портами других процессов.

2.2 Модель действия

Процесс отправляет данные, вызывая программу TCP и передавая буферы данных в качестве аргументов. TCP сжимает данные из этих буферов в сегменты, а затем вызывает Интернет-модуль для отправки каждого сегмента целевой программе TCP. Это место назначения, в свою очередь, помещает данные сегмента в буферы получателя, а затем уведомляет своего клиента о прибытии данных, предназначенных для него. Программы TCP вводят управляющую информацию в сегменты, которую они затем используют для управления последовательностью передачи данных.

8 стр., 3937 слов

Стандартизация в области компьютерных сетей

... известными протоколами и технологиями в области передачи данных по сети. Целью компьютерной сети является соединение различного оборудования, таким образом, проблемы совместимости здесь наиболее остры. Для создания и развития ... механические и физические средства установки поддержки физической связи между различными устройствами сети. Основные принципы выделения уровней в OSI (7 уровней, в основке ...

Модель связи через Интернет требует, чтобы каждая программа TCP была связана с модулем Интернет-протокола, который предоставляет ей интерфейс с локальной сетью. Этот Интернет-модуль вставляет TCP-сегменты в Интернет-дейтаграммы и затем направляет их в другой Интернет-модуль или на промежуточный шлюз. Чтобы передать дейтаграмму по локальной сети, она, в свою очередь, помещается в пакет соответствующего типа.

Коммутаторы пакетов могут выполнять дополнительную упаковку, фрагментацию или другие операции для передачи пакетов в локальной сети к месту назначения в интернет-модуле.

На шлюзах между локальными сетями из дейтаграммы Интернета удаляется пакет локальной сети и проверяется, по какой сети она должна следовать. Затем дейтаграмма Интернета упаковывается в пакет, соответствующий выбранной локальной сети, и отправляется на следующий шлюз или непосредственно конечному получателю.

Шлюз имеет возможность разбивать дейтаграмму Интернета на более мелкие фрагменты, если это необходимо для передачи по следующей локальной сети. Для этого шлюз сам создает серию Интернет-дейтаграмм, вставляя в каждую по фрагменту. В дальнейшем фрагменты могут быть снова разбиты следующими шлюзами на еще более мелкие части. Формат фрагмента Internet датаграммы спроектирован так, чтобы адресат — модуль Internet смог собрать фрагменты снова в исходные Internet датаграммы

Internet модуль, являющийся адресатом, выделяет сегмент из датаграммы (после ее сборки в случае необходимости) и затем передает его по назначению на программу протокола TCP.

Данная простая модель действия протокола зачастую замалчивает множество деталей. Одной из важных характеристик является тип сервиса. Этот признак дает указание шлюзу (или модулю Internet) о выборе параметров сервиса, которые должны использоваться при передаче датаграммы в очередной локальной сети. Приоритет датаграммы указывается среди информации о типе сервиса. Датаграммы также могут нести информацию о безопасности с тем, чтобы позволить хост-компьютерам и шлюзам, действующим в многоуровневой системе безопасности, подвергать проверке соответствующие датаграммы.

2.3 Программное обеспечение хост-компьютера

Предполагается, что программа протокола TCP является модулем операционной системы. Клиенты обращаются к протоколу TCP в значительной степени так же, как если бы они обращались к файловой системе. Сам протокол TCP может обращаться к другим функциям операционной системы, к примеру, для управления структурами данных. Предполагается, что собственно интерфейс с локальной сетью осуществляется драйвером устройства. Протокол TCP не обращается непосредственно к драйверам сетевых устройств, а вместо этого делает вызов для модуля Internet протокола, который в свою очередь и обращается к драйверу устройства.

4 стр., 1845 слов

Робота в комп ютерній мережі INTERNET

... формату, їх доставки до адресата певними маршрутами й об'єднання пакетів в єдине ціле, IP (Internet Protocol) - протокол міжмережевої взаємодії. Він дає можливість коректно пересилати інформацію між ... InterNIC (Network Information Center). Коли кількість комп'ютерів досягла певної критичної межі, робота з такими файлами ускладнилася. Тому Інтернет вирішили умовно поділити на зони. Кожному ...

Механизм протокола TCP не исключает его реализации на входном процессоре. Однако, при такой реализации протокол общения между входными процессорами должен обеспечивать средства для поддержки описанного в этом документе интерфейса между пользователем и протоколом TCP.

2.4 Интерфейсы

Для запросов со стороны пользователя к протоколу TCP интерфейс TCP/пользователь обеспечивает открытие и закрытие соединения, посылку и получение данных или же получение статуса соединения. Эти запросы похожи на другие запросы программы пользователя к операционной системе, например, на запросы открытия, чтения и закрытия файла.

Интерфейс между протоколами TCP и Internet поддерживает запросы на посылку и получение датаграмм, адресованных на модули TCP в хост- компьютерах в любом месте сети Internet. Рассматриваемые запросы имеют аргументы для указания адреса, типа сервиса, приоритета, безопасности, а также передачи другой управляющей информации.

2.5 Связь с другими протоколами, Диаграмма на рис. 1 иллюстрирует место протокола TCP в иерархии протоколов.

 связь с другими протоколами 1

Рисунок 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 адрес и идентификатор порта. В результате получаем сокет, который будет уникален во всех локальных сетях, объединенных в единое целое.

16 стр., 7700 слов

Технологический процесс газовой сварки стыковых соединений труб с поворотом на

... правила контроля сварных соединений трубопроводов, условия их выбраковки и ремонта. Цель письменной экзаменационной работы: изучить и описать технологический процесс газовой сварки стыковых соединений труб с поворотом ... его потребления. На корпусе генератора прикрепляется табличка со следующими данными: марка, заводской номер и год выпуска генератора; производительность, м3/ч; рабочее давление, ...

Соединение полностью определяется парой сокетов на своих концах. Локальный сокет может принимать участие во многих соединениях с различными чужими сокетами. Соединение можно использовать для передачи данных в обоих направлениях, иными словами, оно является «полностью дуплексным».

Протокол TCP волен произвольным образом связывать порты с процессами. Однако при любой реализации протокола необходимо придерживаться нескольких основополагающих концепций. Должны присутствовать общеизвестные сокеты, которые протокол TCP ассоциирует исключительно с «соответствующими им» процессами. Мы представляем себе, как будто процессы могут «владеть» портами и что процессы могут инициировать соединения только с тех портов, которыми они владеют. (С точки зрения реализации протокола «владение» ограничивается хост-компьютером, однако мы можем представить себе команду пользователя по запросу порта (Request Port) или же метод выделения группы уникальных портов данному процессу, например посредством ассоциирования старших байтов в имени порта с данным процессом).

Соединение задается командой OPEN (открыть), сделанной с локального порта и имеющей аргументом чужой сокет. В ответ на такой запрос программа протокола TCP предоставляет имя локального (короткого) со единения. По этому имени пользователь адресуется к данному соединению при последующих вызовах. О соединениях следует помнить кое-какие вещи.

Мы предполагаем, что имеется некая структура данных, называемая блоком управления передачей (Transmission Control Block -TCB), предназначенная для сохранения описанной выше информации. Можно было бы реализовать протокол таким образом, чтобы локальное имя для соединения было бы указателем на структуру TCB последнего. Запрос OPEN указывает также, осуществляется ли соединение активным образом, или же происходит пассивное ожидание соединения извне.

Запрос на пассивное открытие соединения означает, что процесс ждет получения извне запросов на соединение, вместо того, чтобы пытаться самому установить его. Часто процесс, сделавший запрос на пассивное открытие, будет принимать запросы на соединение от любого другого процесса. В этом случае чужой сокет указывается как состоящий целиком из нулей, что означает неопределенность. Неопределенные чужие сокеты могут присутствовать лишь в командах пассивного открытия.

Сервисный процесс, желающий обслужить другие, неизвестные ему процессы, мог бы осуществить запрос на пассивное открытие с указанием неопределенного сокета. В этом случае соединение может быть установлено с любым процессом, запросившим соединения с этим локальным сокетом. Такая процедура будет полезна, если известно, что выбранный локальный сокет ассоциирован с определенным сервисом.

7 стр., 3317 слов

Резьба и резьбовые соединения

... напряжений в местах резкого изменения поперечного сечения и низкий КПД подвижных резьбовых соединений. Резьбы изготовляют либо пластической деформацией (накатка на резьбонакатных станках, выдавливание на ... резьба метрическая коническая, резьба метрическая на деталях из пластмасс (не указанные номера стандартов и срок их действия легко установить по "Указателю стандартов", переиздаваемому ...

Общеизвестные сокеты представляют собой удобный механизм априорного привязывания адреса сокета с каким-либо стандартным сервисом. Например, процесс «сервер для программы Telnet» жестко связан с конкретным сокетом. Другие сокеты могут быть зарезервированы за передатчиком файлов, Remote Job Entry, текстовым генератором, эхо-сервером, а также Sink-процессами (последние три пункта связаны с обработкой текстов).

Адрес сокета может быть зарезервирован для доступа к процедуре «просмотра», которая могла бы указывать сокет, через который можно было бы получить новообразованные услуги. Концепция общеизвестного сокета является частью TCP спецификации, однако собственно асоциирование сокетов с услугами выходит за рамки данного описания протокола [4].

Процессы могут осуществлять пассивные открытия соединений и ждать, пока от других процессов придут соответствующие запросы на активное открытие, а протокол TCP проинформирует их об установлении соединения. Два процесса, сделавшие друг другу одновременно запросы на активное открытие, получат корректное соединение. Гибкость такого подхода становится критичной при поддержке распределенных вычислений, когда компоненты системы взаимодействуют друг с другом асинхронным образом.

Когда осуществляется подбор сокетов для локального запроса пассивного открытия и чужого запроса на активное открытие, то принципиальное значение имеют два случая. В первом случае местное пассивное открытие полностью определяет чужой сокет. При этом подбор должен осуществляться очень аккуратно. Во втором случае во время местного пассивного открытия чужой сокет не указывается. Тогда в принципе может быть установлено соединение с любых чужих сокетов. Во всех остальных случаях подбор сокетов имеет частичные ограничения

Если на один и тот же местный сокет осуществлено несколько ждущих пассивных запросов на открытие (записанных в блоки TCB), и осуществляется извне активный запрос на открытие, то чужой активный сокет будет связываться с тем блоком TCB, где было указание именно на этот запросивший соединения сокет. И только если такого блока TCB не существует, выбор партнера осуществляется среди блоков TCB с неопределенным чужим сокетом.

Процедура установки соединения использует флаг управления синхронизацией (SYN) и трижды обменивается сообщениями. Такой обмен называется трехвариантным подтверждением [3].

Соединение инициируется при встрече пришедшего сегмента, несущего флаг синхронизации (SYN), и ждущей его записи в блоке TCB. И сегмент и запись создаются пришедшими от пользователей запросами на открытие. Соответствие местного и чужого сокетов устанавливается при инициализации соединения. Соединение признается установленным, когда номера очередей синхронизированы в обоих направлениях между сокетами.

Отмена соединения также включает обмен сегментами, несущими на этот раз управляющий флаг FIN.

2.8 Коммуникация данных

Набор данных, передаваемых по соединению, можно рассматривать как поток октетов. Пользователь, отправляющий данные, указывает при запросе по посылку, следует ли данные, отправляемые при этом запросе, немедленно проталкивать через сеть к получателю. Указание осуществляется установкой флага PUSH (проталкивание).

3 стр., 1269 слов

Архитектура, протоколы и стандарты компьютерных сетей

... при объединении нескольких сетевых сегментов с различными протоколами и архитектурами. Это коммуникационное оборудование определяет не только адрес каждого сегмента, но и наилучший маршрут для передачи данных; 5) шлюз — ... что они допускают использование в сети различных протоколов (например, мост позволяет транслировать пакеты Ethernet в пакеты Token Ring). Для соединения двух ЛВС, расположенных на ...

Программа протокола TCP может собирать данные, принимаемые от пользователя, а затем передавать их в сеть по своему усмотрению в виде сегментов. Если же выставлен запрос на проталкивание, то протокол должен передать все не отправленные ранее данные. Когда программа протокола TCP, принимающая данные, сталкивается с флагом проталкивания, ей не следует ожидать получения новых данных по сети до тех пор, пока уже имеющиеся данные не будут переданы ждущему их местному процессу.

Нет нужды привязывать функции проталкивания к границам сегмента. Данные, содержащиеся в каком-либо сегменте, могут быть результатом одного или нескольких запросов на посылку. Или же один запрос может породить несколько сегментов.

Целью функции проталкивания и флага PUSH является проталкивание данных через сеть от отправителя к получателю. Функция не осуществляет обработки самих данных.

Существует связь между функцией проталкивания и использованием буферов данных в интерфейсе между пользователем и протоколом TCP. Каждый раз, когда в буфер получателя приходят данные с флагом PUSH, содержимое этого буфера передается пользователю на обработку, даже если буфер и не был заполнен. Если приходящие данные заполняют буфер пользователя до того, как получена команда проталкивания, пользователю отправляется блок данных, соответствующий размеру буфера. Протокол TCP имеет также средства для сообщения получателю, что с некоторого момента он имеет дело со срочными данными. Протокол TCP не пытается определить, что именно пользователь делает со ждущими обработки срочными данными. Однако обычно предполагается, что получающий данные процесс будет предпринимать усилия для быстрой обработки срочных данных [5].

2.9 Приоритет и безопасность

Протокол TCP использует тип сервиса и опцию безопасности протокола Internet с тем, чтобы пользователям протокола TCP обеспечить приоритет и безопасность на каждом соединении. Не все модули протокола TCP обязательно будут действовать в многоуровневой системе обеспечения безопасности. Некоторые модули ограничиваются только обычными, неспецифическими соединениями, другие ограничиваются лишь первым уровнем безопасности и закрытости. Следовательно, некоторые реализации протокола TCP и услуг для пользователей могут использовать лишь часть многоуровневой системы безопасности.

Модули TCP, действующие в многоуровневой системе безопасности, должны адекватным образом выставлять в отсылаемых сегментах флаги безопасности и приоритета. Такие модули TCP должны также позволять своим клиентам или вышестоящим протоколам, таким как Telnet и THP, указывать требуемый уровень безопасности, закрытости и приоритета для устанавливаемых соединений.

2.10 Принцип устойчивости

Все реализации протокола TCP будут следовать общему принципу устойчивости: быть консервативным в своих действиях и предоставлять свободу для других

  1. Спецификация для функций протокола

3.1 Формат заголовка

Передача TCP сегментов осуществляется в виде Internet датаграмм. Заголовок датаграммы в Internet протоколе имеет несколько информационных полей, включая адреса отправляющего и принимающего хост- компьютеров [2].

Заголовок TCP следует за Internet заголовком и дополняет его информацией, специфической для TCP протокола (рисунок 2).

Такое деление допускает использование на уровне хост-компьютеров протоколов, иных нежели TCP.

 формат заголовка 1

Рис. 2 Формат, Отметим, что каждая метка указывает здесь место для соответствующего бита.

Source Port (порт отправителя) 16 бит – номер порта отправителя.

Destination Port (порт получателя) 16 бит – номер порта получателя.

Sequence Number (номер очереди) 32 бита – номер очереди для первого октета данных в данном сегменте (за исключением тех случаев, когда присутствует флаг синхронизации SYN).

Если же флаг SYN присутствует, то номер очереди является инициализационным (ISN), а номер первого октета данных — ISN+1.

Acknowledgment Number (номер подтверждения) 32 бита – если установлен контрольный бит ACK, то это поле содержит следующий номер очереди, который отправитель данной датаграммы желает получить в обратном направлении. Номера подтверждения посылаются постоянно, как только соединение будет установлено.

Data Offset (смещение данных) 4 бита – количество 32-битных слов в TCP заголовке. Указывает на начало поля данных. TCP заголовок всегда кончается на 32-битной границе слова, даже если он содержит опции.

Reserved 6 бит – это резервное поле, должно быть заполнено нулями.

Control Bits (контрольные биты) 6 бит – биты этого поля слева направо (рисунок 3).

Рис формат 1

Рисунок 3 – Контрольные биты

Window (окно) 16 бит – количество октетов данных, начиная с октета, чей номер указан в поле подтверждения. Количество октетов, получения которых ждет отправитель настоящего сегмента.

Checksum (контрольная сумма) 16 бит – поле контрольной суммы — это 16-битное дополнение суммы всех 16-битных слов заголовка и текста. Если сегмент содержит в заголовке и тексте нечетное количество октетов, подлежащих учету в контрольной сумме, последний октет будет дополнен нулями справа с тем, чтобы образовать для предоставления контрольной сумме 16-битное слово. Возникший при таком выравнивании октет не передается вместе с сегментом по сети. Перед вычислением контрольной суммы поле этой суммы заполняется нулями.

Контрольная сумма, помимо всего прочего, учитывает 96 бит псевдозаголовка, который для внутреннего употребления ставится перед TCP заголовком. Этот псевдозаголовок содержит адрес отправителя, адрес получателя, протокол и длину TCP сегмента. Такой подход обеспечивает защиту протокола TCP от ошибшихся в маршруте сегментов. Эту информацию обрабатывает Internet протокол. Она передается через интерфейс протокол TCP/локальная сеть в качестве аргументов или результатов запросов от протокола TCP к протоколу IP.

Длина TCP сегмента — это длина TCP заголовка и поля данных, измеренная в октетах. Это не является точным указанием количества передаваемых по сети октетов, она не учитывает 12 октетов псевдозаголовка, но тем не менее расчет этого параметра все же производится.

Urgent Pointer (срочный указатель) 16 бит – это поле сообщает текущее значение срочного указателя. Последний является положительной величиной — смещением относительно номера очереди данного сегмента. Срочный указатель сообщает номер очереди для октета, следующего за срочными данными. Это поле интерпретируется только в том случае, когда в сегменте выставлен контрольный бит URG.

Options (опции) длина переменная – опции могут располагаться в конце TCP заголовка, а их длина кратна 8 бит. Все опции учитываются при расчете контрольной суммы.

Опции могут начинаться с любого октета. Они могут иметь два формата:

однооктетный тип опций;

  • октет типа опции, октет длины опции и октеты данных рассматриваемой опции.

В октете длины опции учитываются октет типа опции, сам октет длины, а также все октеты с данными.

Заметим, что список опций может оказаться короче, чем можно указать в поле Data Offset. Место в заголовке, остающееся за опцией «End-of-Option», должно быть заполнено нулями. Протокол TCP должен быть готов обрабатывать все опции.

В настоящее время определены следующие опции на рисунке 4., Рисунок 4 – Опции, Определения указанных опций

Конец списка опций – 00000000 тип 0. Этот код опции определяет конец списка опций. Конец списка может не совпадать с концом TCP заголовка, указанным в поле Data Offset. Эта опция используется после всех опций, но не после каждой из них. Опцию необходимо использовать только в том случае, если иначе не будет совпадения с концом TCP заголовка.

Нет операций – 00000001 тип 1. Опции этого типа могут ставиться между опциями. Целью при этом может служить выравнивание очередной опции по границе слова. Нет гарантии, что отправители будут использовать данную опцию. Поэтому получатели должны быть готовы обрабатывать опции, даже если они не будут начинаться на границе слова.

Максимальный размер сегмента – 00000010 тип 2, 00000100 длина 4. Поле данных опции — 16 бит. Если опция присутствует в списке, то она указывает для программы протокола TCP максимальный размер получаемого сегмента, отправившей сегмент с этой опцией. Эту опцию следует посылать лишь при первоначальном запросе на установление соединения (т.е. в сегментах с установленным контрольным битом SYN).

Если данная опция не была использована, ограничения на размер отсутствуют. Padding (выравнивание) длина переменная Выравнивание TCP заголовка осуществляется с тем, чтобы убедиться в том, что TCP заголовок заканчивается, а поле данных сегмента начинается на 32-битной границе. Выравнивание выполняется нулями.

3.2 Терминология

Для поддержания TCP соединения необходимо иметь несколько переменных. Эти переменные будут помещены в соответствующую запись – блок управления передачей (Transmission Control Block – TCB).

Среди переменных блока TCB имеются номера местного и чужого сокетов, флаги безопасности и приоритета для данного соединения, указатели буферов посылки и получения, указатели текущего сегмента и очереди повторной посылки. Кроме всего этого в TCB имеются несколько переменных, имеющих отношение к номерам очередей отправителя и получателя.

Отправление

SND.UNA – посылка неподтверждена.

SND.NXT – послать следующий сегмент.

SND.WND – отправить окно.

SND.UP – отправить срочный указатель.

SND.WL1номер очереди сегмента, использованный для обновления последнего окна.

SND.WL2 – номер подтверждения в сегменте, используемый для обновления последнего окна.

ISSпервоначальный номер очереди отправления.

Получение

RCV.NXT — получить следующий сегмент.

RCV.WND — получить окно.

RCV.UP — получить срочный указатель.

IRS — первоначальный номер очереди получения.

Нижеприведенные диаграммы могут помочь связать некоторые из этих переменных с местом в очереди. Окно отправления — это участок очереди, отмеченный меткой 3 на рисунке 4.

Очередь отправления

Получение 1

Рис. 4 Очередь отправления

старые номера очереди, которые получили подтверждение;

  • номера очереди для данных, не получивших подтверждения;
  • номера очереди, допущенные к новой передаче;
  • следующие номера очереди, чья передача еще не разрешена.

Окно получения — это участок очереди, отмеченный меткой 2 на рисунке 5.

Очередь получения

Окно получения это участок очереди 1

Рис. 5 Очередь получения

старые номера очереди, которые получили подтверждение;

  • номера очереди, допущенные к очередному этапу получения;
  • следующие номера очереди, еще не получившие разрешения.

В обсуждении также часто используются некоторые переменные, берущие свое значение из полей очередного сегмента.

Переменные для очередного сегмента:

SEG.SEQ – номер очереди для сегмента;

  • SEG.ACK – номер подтверждения для сегмента;
  • SEG.LEN – длина сегмента;
  • SEG.WND – окно для сегмента;

SEG.UPсрочный указатель для сегмента;

SEG.PRC – приоритет для сегмента.

Соединение во время функционирования проходит через серии промежуточных состояний. Это, На рисунке 6 приведены состояния TCP соединения и их описание.

Соединение во время функционирования проходит через серии промежуточных состояний это 1

Рисунок 6 – Состояния TCP соединения и их описание

Соединение TCP переходит с одного состояния на другое в ответ на события. Событие — это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, и особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени.

Диаграмма состояний на рисунке 7 иллюстрирует лишь смену состояний, а также вызвавшие это события, производимые действия, но не адреса, условия ошибок, не действия, не связанные прямо с изменением состояния.

Замечание. Данная диаграмма является лишь сводной, но не должна восприниматься как полная спецификация.

Рисунок состояния соединения и их описание 1

Рисунок 6 – Диаграмма состояний

3.3 Номер очереди

Основополагающей идеей в проектировании протокола является то, что каждый октет данных, посылаемый на TCP соединение, имеет номер очереди. Поскольку каждый октет пронумерован, то каждый из них может быть опознан. Приемлемый механизм опознания является накопительным, так что опознание номера X означает, что все октеты с предыдущими номерами уже получены. Этот механизм позволяет регистрировать появление дубликатов в условиях повторной передачи. Нумерация октетов в пределах сегмента осуществляется так, чтобы первый октет данных сразу вслед за заголовком имел наименьший номер, а следующие за ним октеты имели номера по возрастающей.

Протокол TCP должен осуществлять следующие типы сравнения для номеров очереди:

является ли номер в подтверждении номером очереди для октетов, уже отправленных, но еще не получивших подтверждения;

получили ли все октеты в сегменте подтверждение своих номеров (т.е. следует ли удалить данный сегмент из очереди на повторную посылку);

содержит ли пришедший сегмент ожидаемые нами номера (т.е. «перекрывает» ли этот сегмент окно получателя).

Выбор первоначального номера для очереди

Во время установления или инициализации какого-либо соединения обе программы протокола TCP должны синхронизировать друг с другом первоначальные номера очередей. Это осуществляется посредством обмена сегментами, устанавливающими соединения, несущими контрольный бит SYN (for synchronize — для синхронизации), несущими исходные номера для очередей. Для краткости, сегменты, несущие бит SYN, также называются SYN сегментами. Следовательно, решение проблемы требует приемлемого механизма для подбора первоначального номера очереди и немногочисленных сигналов подтверждения при обмене номерами ISN.

Синхронизация требует, чтобы каждая сторона, участвующая в соединении, посылала свой собственный первоначальный номер очереди, а также получала подтверждение на это от напарника. Каждая сторона должна также получить первоначальный номер очереди от напарника и послать подтверждение.

сигнал SYN от A к B: мой номер очереди X

сигнал ACK от B к A: ваш номер очереди X

сигнал SYN от B к A: мой номер очереди Y

сигнал ACK от A к B: ваш номер очереди Y

Поскольку шаги 2 и 3 можно объединить в одно сообщение, такая процедура называется трехвариантным подтверждением [5].

3.4 Установка соединения

Для установки соединения используется процедура трехвариантного подтверждения, описанная выше. Эта процедура обычно инициируется программой протокола TCP в ответ на запрос другой программы TCP. Данная процедура также работает, если две программы TCP инициируют ее одновременно. Когда попытка инициализации осуществляется с обоих концов одновременно, каждая программа протокола TCP получает SYN-сегмент, который не несет подтверждения для уже отправленного ею SYN. Конечно, прибытие старых дубликатов SYN-сегмента может произвести создать у получателя ложное впечатление, будто осуществляется одновременное открытие соединения. Корректно обрабатывать такие ситуации помогает импользование RST-сегментов.

На рисунке 8 приведен пример простейшей процедуры трехвариантного подтверждения. Процедура именно такого вида в подавляющем большинстве случаев используется на практике.

 установка соединения 1

Рисунок 8 – Пример простейшей процедуры трехвариантного подтверждения

В приведенном примере на строке 2 программа сторона A начинает с посылки сигнала SYN, показывая тем самым, что она будет использовать номера очереди, начиная с номера 100. На строке 3 сторона B посылает сигнал SYN, а также подтверждение о том, что сигнал SYN от стороны A получен. Поле подтверждения информирует о том, что сторона B в данный момент ожидает получение номера 101.

На строке 4 для отправленного стороной B в строке 3 сигнала SYN сторона A дает ответ с помощью пустого сегмента, содержащего сигнал ACK. В строке 5 сторона A передает по сети уже некую порцию данных. Заметим, что сегмент в строке 5 имеет тот же номер очереди, что был у сегмента в строке 4, поскольку сигнал ACK в очереди места не занимает, если бы это было не так, необходимо бы было подтверждение ACK для самого подтверждения.

В тех случаях, когда при установке соединения некорректная передача сегментов по сети приводит к получению одной из сторон сегмента с флагом, не соответствующим ее текущему состоянию, эта сторона посытает RST-сегмент, что приводит к переходу второй стороны в состояние LISTEN или CLOSED.

3.5 Закрытие соединения

Состояние CLOSED означает «я не имею данных для передачи». Конечно, закрытие полнодуплексного соединения является предметом множества интерпретаций, поскольку не очевидно, как интерпретировать в соединении сторону, получающую информацию. В случае же TCP клиент, находящийся в состоянии CLOSED, еще может получать информацию до тех пор, пока другая сторона также не сообщит, что переходит в состояние CLOSED. Каждая сторона гарантированно получит все буферы с информацией, отправленные до того, как соединение было закрыто. Поэтому клиенту, не ждущему информации с соединения, следует лишь ждать сообщения об успешном закрытии этого соединения, что означает, что все данные получены стороной, принимающей информацию. Клиенты должны сохранять уже закрытые ими для чтения информации соединения до тех пор, пока программа протокола TCP не сообщит им, что такой информации больше нет.

Существет три основных сценария закрытия соединения:, Местный клиент инициирует закрытие соединения.

В этом случае создается FIN-сегмент и помещается в очередь сегментов, ждущих отправления. После этого программа TCP уже не будет принимать от этого клиента каких-либо команд на отправку данных по закрытому соединению, а сама переходит в состояние FIN-WAIT-1. Тем не менее, в этом состоянии еще возможно получение клиентом данных с этого соединения. Все сегменты, стоящие в очереди, и сам сегмент с сигналом FIN будут в случае необходимости посылаться другой стороне вновь и вновь, пока не получат своего подтверждения.

Когда программа TCP партнера подтвердит получение сигнала FIN, и сама отправит в ответ свой сигнал FIN, местная программа может подтвердить получение последнего. Программа TCP, получающая сигнал FIN, будет подтверждать его, но не будет посылать своего собственного сигнала FIN до тех пор, пока ее клиент тоже не закроет соединения.

От удаленной стороны приходит FIN-сегмент.

Когда от удаленной стороны приходит FIN-сегмент, принимающая его программа TCP может подтвердить получение такого сигнала и оповестить своего клиента о том, что соединение закрыто. Клиент ответит командой CLOSE, по факту которой программа TCP может после пересылки оставшихся данных послать удаленной стороне свой FIN-сегмент. После этого программа TCP ждет, пока не придет подтверждение на отправленный ею сигнал FIN, после чего она ликвидирует соединение. Если подтверждения не было по истечении отведенного времени, то соединение ликвидируется в принудительном порядке, о чем сообщается клиенту.

Обе стороны закрывают соединение одновременно.

Одновременное закрытие соединения клиентами на обоих концах приводит к обмену FIN-сегментами. Когда все сегменты, стоящие в очереди перед сегментом с FIN, будут переданы и получат подтверждение, каждая сторона может послать подтверждение на полученный ею сигнал FIN. Обе программы по получении этих подтверждений ликвидируют соединение [6] .

3.6 Передача данных

После того, как соединение было установлено, передача данных осуществляется с помощью обмена сегментами. Так как сегменты могут быть потеряны в результате ошибок или перегрузки сети, стороны использует механизм повторной посылки по истечении определенного времени с тем, чтобы убедиться в получении каждого сегмента.

Отправитель данных отслеживает следующий номер в очереди, подлежащий отправке. Получатель данных отслеживает следующий номер, прибытие которого он ожидает, а так же значение самого старого номера, который был отправлен, но еще не получил подтверждения. Когда поток данных иссякает, а все отправленные данные получают подтверждение, эти переменные имеют одинаковое значение.

Поскольку соединения находятся в состоянии ESTABLISHED, все сегменты, в дополнение к данным, несут информацию о подтверждении ранее отправленных сегментов.

Передача срочной информации

Механизм срочной передачи протокола TCP предназначен для того, чтобы клиент, отправляющий данные, мог побудить получателя принять некую срочную информацию, а также позволить программе TCP, принимающей данные, информировать своего клиента, когда вся имеющаяся на настоящий момент информация будет получена.

Данный механизм позволяет помечать некую точку в потоке данных как конец блока срочной информации. Когда в программе TCP, принимающей данные, данная точка окажется впереди индикатора номера в очереди получения, эта программа TCP должна дать команду своему клиенту перейти в «срочный режим». Когда номер в очереди получения догонит срочный указатель в потоке данных, программа TCP должна дать команду клиенту прийти в «нормальный режим». Если срочный указатель сменит свое положение, когда клиент находится в «срочном режиме», последний не узнает об этом.

Данный метод использует поле флага срочности, который присутствует во всех передаваемых сегментах. Единица в поле контрольного флага URG означает, что задействовано поле срочности. Чтобы получить указатель этого поля в потоке данных, необходимо дополнить его номером рассматриваемого сегмента в очереди. Отсутствие флага URG означает отсутствие у отправителя не посланных срочных данных.

При указании срочности клиент должен также послать по крайней мере один октет данных. Если клиент, помещающий данные, дополнительно закажет функцию проталкивания (флаг PSH), то передача срочной информации ждущему ее процессу многократно ускорится.

Управление окном

Окно, посылаемое с каждым сегментом, указывает диапазон номеров очереди, которые отправитель окна, он же получатель данных, готов принять в настоящее время. Предполагается, что такой механизм связан с наличием в данный момент места в буфере данных.

Указание окна большого размера стимулирует передачу. Но если пришло большее количество данных, чем может быть принято программой TCP, данные будут отброшены. Это приведет к излишним пересылкам информации и ненужному увеличению нагрузки на сеть. Указание окна малого размера может ограничить передачу данных скоростью, которая определяется временем путешествия по сети после каждого посылаемого сегмента [7].

Заключение

Основная задача TCP – обеспечение надежной передачи данных в сети. Его основными характеристиками являются:

реализует взаимодействие в режиме с установлением логического (виртуального) соединения;

  • обеспечивает двунаправленную дуплексную связь;
  • организует потоковый (с точки зрения пользователя) тип передачи данных;
  • дает возможность пересылки части данных, как «экстренных»;

для идентификации партнеров по взаимодействию на транспортном уровне использует 16-битовые «номера портов»;

реализует принцип «скользящего окна» для повышения скорости передачи;

  • поддерживает ряд механизмов для обеспечения надежной передачи данных.

Несмотря на то, что для пользователя передача данных с использованием протокола TCP выглядит как потоковая, на самом же деле обмен между партнерами осуществляется посредством пакетов данных.

Список литературы

[Электронный ресурс]//URL: https://drprom.ru/kursovaya/vyichislitelnyie-sistemyi-seti-i-telekommunikatsii-temyi-dlyaov/

Cerf, V., and R. Kahn, «A Protocol for Packet Network Intercommunication»

Postel, J, (ed.) «Internet Protocol DARPA Internet Program Protocol Specification

Dalal, Y. and C.Sunshine, «Connection Management in Transport Protocols»

Posterl, J, «Assigned Numbers»

Электронный ресурс:, Федорук В.Г. «Протоколы сетевого взаимодействия TCP/IP», Т. Паркер, К., «TCP / IP . Для профессионалов. 3-е издание»