Какая функция обеспечивается протоколом tcp?

Содержание

TCP Протокол

Какая функция обеспечивается протоколом tcp?

На Заглавную>Оглавление>TCP протокол>

Функции протокола TCP

  1. Базовая передача данных
  2. Обеспечение достоверности
  3. Разделение каналов
  4. Управление соединениями
  5. Управление потоком

Функции протокола TCP

Протокол TCP (Transmission Control Protocol, Протокол контроля передачи) обеспечивает сквозную доставку данных между прикладными процессами, запущенными на узлах, взаимодействующих по сети. Стандартное описание TCP содержится в RFC-793.

TCP — надежный байт-ориентированный (byte-stream) протокол с установлением соединения. TCP находится на транспортном уровне стека TCP/IP, между протоколом IP и собственно приложением. Протокол IP занимается пересылкой дейтаграмм по сети, никак не гарантируя доставку, целостность, порядок прибытия информации и готовность получателя к приему данных; все эти задачи возложены на протокол TCP.

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

Ниже основные функции протокола TCP и их реализация рассмотрены более подробно.

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

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

Протокол TCP рассматривает данные клиента как непрерывный неинтерпретируемый поток октетов. TCP разделяет этот поток на части для пересылки на другой узел в TCP-сегментах некоторого размера. Для отправки или получения сегмента модуль TCP вызывает модуль IP.

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

2. Обеспечение достоверности

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

Для выполнения этих задач все октеты в потоке данных сквозным образом пронумерованы в возрастающем порядке. Заголовок каждого сегмента содержит число октетов данных в сегменте и порядковый номер первого октета той части потока данных, которая пересылается в данном сегменте. Например, если в сегменте пересылаются октеты с номерами от 2001 до 3000, то номер первого октета в данном сегменте равен 2001, а число октетов равно 1000.

Номер первого байта в потоке определяется на этапе установления соединения и обозначается ISN+1. Например, ISN+1=1.

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

При удачном приеме октета данных принимающий модуль посылает отправителю подтверждение о приеме — номер удачно принятого октета. Если в течение некоторого времени отправитель не получит подтверждения, считается, что октет не дошел или был поврежден, и он посылается снова. Этот механизм контроля надежности называется PAR (Positive Acknowledgment with Retransmission). В действительности подтверждение посылается не для одного октета, а для некоторого числа последовательных октетов.

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

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

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

Все распространенные сервисы Интернет имеют стандартизованные номера портов. Например, номер порта сервера электронной почты — 25, сервера FTP — 21. Список стандартных номеров портов можно найти в файле /etc/services (Unix).

Совокупность IP-адреса и номера порта называется сокетом. Сокет уникально идентифицирует прикладной процесс в Интернет. Например, сокет сервера электронной почты на хосте 194.84.124.4 обозначается как 194.84.124.25; часто номер порта отделяется двоеточием.

4. Управление соединениями

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

Каждое соединение уникально идентифицируется в Интернет парой сокетов.

Соединение характеризуется для клиента именем, которое является указателем на структуру TCB (Transmission Control Block), содержащую информацию о соединении.

Открытие соединения клиентом осуществляется вызовом функции OPEN, которой передается сокет, с которым требуется установить соединение. Функция возвращает имя соединения. Различают два типа открытия соединения: активное и пассивное.

При активном открытии TCP-модуль начинает процедуру установления соединения с указанным сокетом, при пассивном — ожидает, что удаленный TCP-модуль начнет процедуру установления соединения с указанного сокета. Указание 0.0.0.0:0 в качестве сокета при пассивном открытии означает, что ожидается соединение с любого сокета. Такой способ применяется в демонах — серверах Интернет, которые ждут установления соединения от клиента. Клиент же применяет процедуру активного открытия; сокет при этом формируется из IP-адреса сервера и стандартного номера порта для данного сервиса.

Закрытие соединения клиентом производится с помощью функции CLOSE, которой передается имя соединения.

Процедура установления соединения происходит следующим образом.

Предположим, узел А желает установить соединение с узлом В. Первый отправляемый из А в В TCP-сегмент не содержит полезных данных, а служит для установления соединения. В его заголовке (в поле Flags) установлен бит SYN, означающий запрос связи, и содержится ISN (Initial Sequence Number — начальный номер последовательности) — число, начиная с которого узел А будет нумеровать отправляемые октеты (например, 0).

В ответ на получение такого сегмента узел В откликается посылкой TCP-сегмента, в заголовке которого установлен бит ACK, подтверждающий установление соединения для получения данных от узла А. Так как протокол TCP обеспечивает полнодуплексную передачу данных, то узел В в этом же сегменте устанавливает бит SYN, означающий запрос связи для передачи данных от В к А, и передает свой ISN (например, 0). Полезных данных этот сегмент также не содержит.

Третий TCP-сегмент в сеансе посылается из А в В в ответ на сегмент, полученный из В. Так как соединение А -> В можно считать установленным (получено подтверждение от В), то узел А включает в свой сегмент полезные данные, нумерация которых начинается с номера ISN(A)+1. Данные нумеруются по количеству отправленных октетов.

В заголовке этого же сегмента узел А устанавливает бит ACK, подтверждающий установление связи B -> A, что позволяет хосту В включить в свой следующий сегмент полезные данные для А.

Рис. 3. Установка TCP-соединения

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

Читайте также  Почему плохо загружается компьютер что делать?

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

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

Протокол TCP формирует подтверждения не для каждого конкретного успешно полученного пакета, а для всех данных от начала посылки до некоторого порядкового номера ACK SN (Acknowledge Sequence Number) исключительно. В качестве подтверждения успешного приема, например, первых 2000 байт, высылается ACK SN = 2001: это означает, что все данные в байтовом потоке под номерами от ISN+1=1 до данного ACK SN -1 (2000) успешно получены.

Вместе с посылкой отправителю ACK SN получатель объявляет также “размер окна”, например — 6000. Это значит, что отправитель может посылать данные с порядковыми номерами от текущего ACK SN = 2001 до (ACK SN + размер окна -1) = 8000, не дожидаясь подтверждения со стороны получателя. Допустим, в данный момент отправитель посылает тысячеоктетный сегмент с порядковым номером данных SN=4001.

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

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

Для временной остановки посылки данных достаточно объявить нулевое окно. Но даже и в этом случае через определенные промежутки времени будут отправляться сегменты с одним октетом данных. Это делается для того, чтобы отправитель гарантированно узнал о том, что получатель вновь объявил ненулевое окно, поскольку получатель обязан подтвердить получение “пробных” сегментов, а в этих подтверждениях он укажет также и текущий размер своего окна.

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

Модуль TCP может оптимизировать максимальный размер сегмента исходя из значений MTU на разных участках маршрута и других характеристик соединения.

Модуль TCP может использовать алгоритм «медленного старта», формируя при установлении соединения окно перегрузки, размер которого изначально равен размеру одного сегмента. Это окно показывает, сколько сегментов TCP-модуль, с его собственной точки зрения, может отправить без получения подтверждения.

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

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

В случае, если никакие данные приложениями не передаются, а соединение открыто, модуль TCP может периодически посылать сегменты-зонды для выяснения того, не отключилась ли другая сторона без уведомления партнера (например, в результате обрыва линии или другим некорректным образом). Такое зондирование проводится примерно каждые два часа неактивности.

Источник: http://kunegin.com/ref1/net_prot/tcpprot.htm

Руководство пользователя: Сети и средства связи

Какая функция обеспечивается протоколом tcp?

[ Страница назад | Страница вперед | | Индекс | Библиотека | Юридическая информация | Поиск ]

Терминология, функции и приложения TCP/IP

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

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

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

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

  • Передавать файлы в другую систему
  • Входить в удаленную систему
  • Выполнять команды в удаленной системе
  • Печатать файлы в удаленной системе
  • Отправлять электронные сообщения удаленным пользователям
  • Вести интерактивный диалог с удаленными пользователями
  • Управлять сетью

Примечание: В TCP/IP предусмотрены только основные функцииуправления сетью. По сравнению с TCP/IP, Простой протокол управлениясетью (SNMP) предоставляет более широкий набор команд и функцийуправления.

Для кого предназначен TCP/IP?

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

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

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

Кто создал TCP/IP?

В 1970-х и начале 1980-х годов Управление перспективных исследований иразработок (ARPA) Министерства обороны США финансировало проект по созданиюнабора стандартов связи между компьютерами. Эти стандарты должны былисодержать соглашения о межсетевом взаимодействии, отправке и приемеинформации, а также передаче данных. С тех пор стандарты ARPA сталиприменять многие крупные исследовательские институты, в том числе Национальныйфонд поддержки науки, Министерство энергетики, Агентство по аэронавтике иисследованию космического пространства, а также их клиенты. Этистандарты называются Протокол управления передачей/Протокол Internet.

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

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

Создатели TCP/IP стремились заполнить пробелы, оставленные предшествующимипротоколами. В дальнейшем набор протоколов TCP/IP будет дополняться иизменяться вместе с изменением требований, предъявляемых к сетям.

Читайте также  Что делать если часто вылетает синий экран?

Терминология TCP/IP

Перед тем, как продолжить изучение TCP/IP, ознакомьтесь с основнымипонятиями Internet, которые часто встречаются в этой книге:

клиент Компьютер или процесс, который получает через сеть доступ к данным,службам или ресурсам другого компьютера или процесса.
хост Компьютер, который подключен к сети Internet и может взаимодействовать сдругими хостами Internet. Локальный хост конкретногопользователя — это тот компьютер, на котором работает данныйпользователь. Внешний хост — это любой другой хостсети. С точки зрения сетевого взаимодействия, хосты — это отправители иполучатели пакетов данных. Любой хост может быть клиентом, сервером,или и тем, и другим одновременно. В сети Internet хост идентифицируетсяпо своему имени и IP-адресу.
сеть Как минимум два хоста, соединенных между собой с помощью линиисвязи. Физическая сеть — это аппаратное обеспечение,формирующее сеть. Логическая сеть — это абстрактноеобъединение, которое может соответствовать одной или нескольким физическимсетям, либо их части. Примером логической сети может служить сетьInternet. Преобразование операций, выполняемых в логической сети, воперации физической сети осуществляется с помощью специальныхинтерфейсов.
пакет Блок управляющей информации и данных, передаваемый за один раз из хоста всеть или обратно. Пакеты представляют собой носитель данных,применяется в Internet для обмена информацией между процессами. Пакетыотправляются от отправителя к получателю.
порт Логическая точка подключения для процесса. Процессы обмениваютсяданными через порты (или сокеты). У каждого порта естьочередь данных для отправки и очередь полученных данных. В сети, гдеприменяются интерфейсы, с каждым портом, в зависимости от его назначения,связывается номер порта Internet. Отдельный портидентифицируется по адресу сокета Internet, который представляетсобой пару, состоящую из IP-адреса хоста и номера порта.
процесс Выполняющаяся программа. Процесс — это активный объект всистеме. Терминалы, файлы и устройства ввода/вывода обмениваются друг сдругом данными через процессы. Таким образом, сетевое взаимодействие -это взаимодействие между процессами.
протокол Набор правил, определяющих способы управления соединениями на физическоми логическом уровнях. Для выполнения своих функций одни протоколы частоиспользуют другие протоколы. Например, для передачи пакетов, которыеобеспечивают установление соединения между двумя хостами, протокол уровнясоединения применяет транспортный протокол.
сервер Компьютер или процесс, который предоставляет другим компьютерам илипроцессам сети доступ к данным, службам или ресурсам.

Протоколы

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

Комплект протоколов TCP/IP разделен на следующие группы:

  • Протоколы Internet прикладного уровня
  • Протоколы Internet транспортного уровня

Пакеты и дейтаграммы

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

Адреса

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

Имени

У каждого компьютера (или хоста) сети Internet есть по крайней мере одноимя хоста Internet. Кроме того, у хоста может быть несколькопсевдонимов. В TCP/IP имена преобразуются в адреса Internet с помощьюфайла /etc/hosts или удаленного сервера имен.

Маршрутизация

С помощью маршрутизации информация передается от хоста-отправителя кхосту-получателю. В TCP/IP применяется два типа маршрутизации:статическая и динамическая. На хостах Internetможно определить статические маршруты до основных хостов-получателей.Если маршрут к хосту-получателю не задан в таблицах маршрутизации, то егоможно определить динамически с помощью демоновмаршрутизации.

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

Доставка сообщений TCP/IP

Для команд, служб и приложений в TCP/IP предусмотрено два типа доставкисообщений: доставка сообщений без установления соединения и болеенадежная доставка в режиме потока. Эти две транспортных службысоставляют основу Internet и TCP/IP.

Протокол пользовательских дейтаграмм (UDP) в TCP/IP предназначен длядоставки пакетов без установления соединения. Сразу же послеотправки пакета данных по сети UDP считает этот пакет доставленнымполучателю. Такой тип доставки считается ненадежным, так как адрес имаршрут для каждого пакета задаются независимо.

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

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

Интерфейс прикладных программ

Интерфейс прикладных программ (API) для сокетов предназначен для разработкипрограмм с помощью компонентов TCP/IP. API для сокетов поддерживают триспособа доставки сообщений: надежная доставка в режиме потока, доставкадейтаграмм без установления соединения и доставка с помощью сокетов.

Библиотечные процедуры протоколов (например, tcpm,tcp и udp), которые поддерживались в предыдущих выпускахоперационной системы, в данном выпуске не поддерживаются. Всеприложения TCP/IP должны создаваться с помощью API для сокетов.

Примечание: API для сокетов выполняет функции интерфейсаприкладных программ TCP/IP.

Пользовательская команда mail, пользовательские командыобработки сообщений (MH) и команда сервера sendmail могут применятьTCP/IP для передачи сообщений между системами, а основные сетевые утилиты(BNU) могут применять TCP/IP для передачи файлов и команд междусистемами.

[ Страница назад | Страница вперед | | Индекс | Библиотека | Юридическая информация | Поиск ]

Источник: http://www.regatta.cs.msu.su/doc/usr/share/man/info/ru_RU/a_doc_lib/aixuser/usrcomm/tcp_intro.htm

Какая функция обеспечивается протоколом TCP

Какая функция обеспечивается протоколом tcp?

Транспортный уровень. Протоколы TCP, UDP

1.     Функции и услуги транспортного уровня.

2.     Концепция портов. Мультиплексирование и демультиплексирование.

3.     Протокол TCP

3.1.      Формат TCP-пакета.

3.2.      Сессии TCP (алгоритм установления связи).

3.3.      Передача пакетов TCP, параметры передачи, MTU (Maximum Transmission Unit). Надёжная доставка. Алгоритм скользящего окна. Процедура «медленный старт».

4.     Протокол UDP;

4.1.      Формат UDP-пакета.

4.2.      Псевдозаголовок, используемый при расчете контрольной суммы.

1.    Функции и услуги транспортного уровня.

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

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

Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.

Транспортным уровнем предоставляются следующие виды услуг:

  • установление транспортного соединения;
  • передача данных;
  • разрыв транспортного соединения.

Функции, выполняемые транспортным уровнем:

  • преобразование транспортного адреса в сетевой;
  • межоконечное мультиплексирование транспортных соединений в сетевые;
  • установление и разрыв транспортных соединений;
  • межоконечное упорядочивание блоков данных по отдельным соединениям;
  • межоконечное обнаружение ошибок и необходимый контроль за качеством услуг;
  • межоконечное восстановление после ошибок;
  • межоконечное сегментирование, объединение и сцепление;
  • межоконечное управление потоком данных по отдельным соединениям;
  • супервизорные функции;
  • передача срочных транспортных блоков данных.
Читайте также  Падение плагина Adobe flash что делать?

3.    Протокол TCP

Каждый байт в ТСР соединении имеет 32 разрядный номер. Поэтому даже в сети на 10Мб/сек потребуется не менее часа, чтобы исчерпать все номера. Этиномера используются для всех пакетов на соединении: уведомления, данные, управление окнами.

ТСР агенты обмениваются сегментами данных. Каждый сегмент имеет заголовок от 20 байтов и более ( по выбору) и тело произвольной длины. ТСР агент решает какой длины может быть тело. Два фактора ограничивают длину сегмента.

Первый — длина сегмента не должна превышать максимальную длину IP пакета — 65К байт. Второй — каждая сеть имеет максимальную единицу передачи MTU и каждый сегмент должен помещаться в MTU.

В противном случае маршрутизаторам придется применять фрагментацию.

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

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

Если таймер исчерпается прежде чем придет подтверждение, то сегмент посылается повторно.

Несмотря на кажущуюся простоту, ТСР протокол достаточно сложен и должен решать следующие основные проблемы:

  • восстанавливать порядок сегментов;
  • убирать дубликаты сегментов, в каком бы виде (фрагментация) они не поступали;
  • определять разумную задержку для time out для подтверждений в получении сегмента;
  • устанавливать и разрывать соединения надежно;
  • управлять потоком;
  • управлять перегрузками.

3.1. Формат TCP-пакета

Протокол управления передачей TCP (Transmission Control Protocol) является обязательным стандартом TCP/IP, который описан в документе RFC 793 «Transmission Control Protocol (TCP)» и предоставляет надежную службу доставки пакетов, ориентированную на установление соединения. Протокол TCP:

гарантирует доставку IP-датаграмм;
выполняет разбиение на сегменты и сборку больших блоков данных, отправляемых программами;
обеспечивает доставку сегментов данных в нужном порядке;
выполняет проверку целостности переданных данных с помощью контрольной суммы;
посылает положительные подтверждения, если данные получены успешно. Используя избирательные подтверждения, можно также посылать отрицательные подтверждения для данных, которые не были получены;
предлагает предпочтительный транспорт для программ, которым требуется надежная передача данных с установлением сеанса связи, например для баз данных «клиент-сервер» и программ электронной почты.

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

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

Сеанс TCP инициализируется с помощью процесса, называемого трехэтапным установлением связи.

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

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

TCP-сегменты инкапсулируются и передаются в IP-датаграммах, как показано на следующем рисунке.

Формат TCP-пакета

Формат TCP-пакета
Бит 0 — 3 4 — 9 10 — 15 16 — 31
Порт источника Порт назначения
32 Номер последовательности
64 Номер подтверждения
96 Смещение данных Зарезервировано Флаги Окно
128 Контрольная сумма Указатель важности
160 Опции (необязательное)
160/192+   Данные

Порт источника

Порт источника идентифицирует порт, с которого отправлен пакет.

Порт назначения

Порт назначения идентифицирует порт, на который отправлен пакет

Номер последовательности

Номер последовательности выполняет две задачи:

  1. Если установлен флаг SYN, то это начальное значение номера последовательности и первый байт данных — это номер последовательности плюс 1.
  2. В противном случае, если SYN не установлен, первый байт данных — номер последовательности

Номер подтверждения

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

Смещение данных

Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

Зарезервировано

6 бит зарезервированы для будущего использования и должны устанавливаться в ноль.

Флаги (управляющие биты)

Это поле содержит 6 битовых флагов:

  • URG — Поле Указатель важности значимо (англ. Urgent pointer field is significant)
  • ACK — Поле Номер подтверждения значимо (англ. Acknowledgement field is significant)
  • PSH — (англ. Push function)
  • RST — Обрыв соединения (англ. Reset the connection)
  • SYN — Синхронизация номеров последовательности (англ. Synchronize sequence numbers)
  • FIN (англ. final, бит) — флаг, будучи установлен, указывает на завершение соединения (англ. FIN bit used for connection termination).

Контрольная сумма

Поле контрольной суммы — это 16-битное дополненение суммы всех 16-битных слов заголовка и текста.

Если сегмент содержит нечетное число октетов в заголовке /или тексте, последние октеты дополняются справа 8 нулями для выравнивания по 16-битовой границе.

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

Указатель важности

Указатель важности

16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета, с которого начинаются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом U.

3.2. Сессии TCP (алгоритм установления связи)

Установление ТСР соединения происходит по протоколу трехкратного рукопожатия. Флаги SYN и ASK в заголовке сегмента используются для обозначения CONNECTION REQUEST и CONNECTION ACCEPED. Флаг RST используется для обозначения REJECT.

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

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

ТСР соединение как уже говорилось дуплексное, т.е. в каждом направлении данные передаются независимо и соединение разрывается независимо.

Если в очередном сегменте флаг FIN = 1, то в этом направлении данных больше не будет При получении подтверждения для этого сегмента соединение в этом направлении считается разорванным. В другом направлении передача может продолжаться сколь угодно долго.

Если подтверждения на первый FIN нет, то попытки продолжаются до трех раз, после чего соединение считается разорванным.

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

3.3. Передача пакетов TCP, параметры передачи, MTU (Maximum Transmission Unit). Надёжная доставка. Алгоритм скользящего окна. Процедура «медленный старт»

Управление окнами в ТСР не связано прямо с поступлением подтверждений. На риунке показан случай взаимодействия для буфера в 4096 байт.

Когда поле WIN=0 отправитель может послать сегмент в двух случаях. Первый — если это URGENT данные. Второй, однобайтовый сегмент, чтобы заставить получателя показать текущее состояние буфера. Это очень важно так, как позволяет обойти тупик.

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

Источник: https://ichudoru.com/kakaya-funktsiya-obespechivaetsya-protokolom-tcp/