Транспортный протокол tcp обеспечивает

Протокол TCP

Транспортный протокол tcp обеспечивает
Подробности 01 Ноябрь 2014 30247

1 1 1 1 1 1 1 1 1 1 4.19 [8 Голоса (ов)]

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

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

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

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

Transmission Control Protocol

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

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

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

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

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

Заголовок TCP

  • Порядковый номер выполняет две задачи:
    • Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1.
    • В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.
  • Номер подтверждения — если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз.

    Помечает этот сегмент как подтверждение получения.

  • Длина заголовка — задается словами по 32бита.
  • Размер окна — количество байт, которые готов принять получатель без подтверждения.
  • Контрольная сумма — включает псевдо заголовок, заголовок и данные.

  • Указатель срочности — указывает последний байт срочных данных, на которые надо немедленно реагировать.
  • URG — флаг срочности, включает поле «Указатель срочности», если =0 то поле игнорируется.
  • ACK — флаг подтверждение, включает поле «Номер подтверждения, если =0 то поле игнорируется.
  • PSH — флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
  • RST — флаг прерывания соединения, используется для отказа в соединении
  • SYN — флаг синхронизация порядковых номеров, используется при установлении соединения.
  • FIN — флаг окончание передачи со стороны отправителя

 Рассмотрим структуру  заголовка TCP с помощью сетевого анализатора Wireshark:

TCP порты

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

Номер порта — это условное 16-битное число от 1 до 65535, указывающее, какой программе предназначается пакет.

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

 В то время как порт UDP работает как одиночная очередь сообщений и как точка входа для UDP-соединения, окончательной точкой входа для всех соединений TCP является уникальное соединение.

Каждое соединение TCP однозначно идентифицируется двумя точками входа.

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

Все номера портов TCP, которые меньше чем 1024 — зарезервированы и зарегистрированы в Internet Assigned Numbers Authority (IANA).

Номера портов UDP и TCP не пересекаются.

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

Установление соединения TCP

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

Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).

  • Запрашивающая сторона (которая, как правило, называется клиент) отправляет SYN сегмент, указывая номер порта сервера, к которому клиент хочет подсоединиться, и исходный номер последовательности клиента (ISN).
  • Сервер отвечает своим сегментом SYN, содержащим исходный номер последовательности сервера. Сервер также подтверждает приход SYN клиента с использованием ACK (ISN + 1). На SYN используется один номер последовательности.
  • Клиент должен подтвердить приход SYN от сервера своим сегментов SYN, содержащий исходный номер последовательности клиента (ISN+1) и с использованием ACK (ISN+1). Бит SYN установлен в 0, так как соединение установлено.

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

Вас также могут заинтересовать:

Источник: http://just-networks.ru/seti-tcp-ip/protokol-tcp

Чем отличается протокол TCP от UDP, простым языком

Транспортный протокол tcp обеспечивает

Чем отличается протокол TCP от UDP

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

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

На этом уровне два основных протокола – TCP и UDP.

Что означают TCP и UDP

TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.

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

Напоминаю, что оба протокола работают на транспортном уровне модели OSI или TCP/IP, и понимание того чем они отличаются очень важно.

Разница между протоколами TCP и UDP

Разница между протоколами TCP и UDP – в так называемой “гарантии доставки”. TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм.

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

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

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

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

Tcp Udp отличия

Давайте рассмотрим основные отличия tcp от udp.

  1. TCP гарантирует доставку пакетов данных в неизменных виде, последовательности и без потерь, UDP ничего не гарантирует.
  2. TCP нумерует пакеты при передаче, а UDP нет
  3. TCP работает в дуплексном режиме, в одном пакете можно отправлять информацию и подтверждать получение предыдущего пакета.
  4. TCP требует заранее установленного соединения, UDP соединения не требует, у него это просто поток данных.
  5. UDP обеспечивает более высокую скорость передачи данных.
  6. TCP надежнее и осуществляет контроль над процессом обмена данными.
  7. UDP предпочтительнее для программ, воспроизводящих потоковое видео, видеофонии и телефонии, сетевых игр.
  8. UPD не содержит функций восстановления данных

Примерами UDP приложений, например можно привести, передачу DNS зон, в Active Directory, там не требуется надежность. Очень часто такие вопросы любят спрашивать на собеседованиях, так, что очень важно знать tcp и udp отличия.

Заголовки TCP и UDP

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

Заголовок UDP

  • 16 битный порт источника > Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
  • 16 битный порт назначения > Номер порта назначения
  • 16 битная длина UDP > Длина сообщения, включая заголовок и данные.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных для проверки

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

Транспортный протокол tcp обеспечивает

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

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

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

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

  • UDP User Datagram Protocol
  • TCP Transmission Control Protocol

Идентификация процессов на транспортном уровне

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

  • Синхронизация процесса
  • Буферизация поступающих данных

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

 Перечень номеров назначенных портов приведен в документе IETF STD 2

Транспортный протокол UDP

Описание принципов построения протокола UDP  приведено в RFC 768. Для передачи сообщений UDP используются пакеты IP. Сообщения UDP в данном случае размещаются в поле данных переносящего их пакета.

Формат сообщения UDP

Дейтаграммы UDP имеют переменную длину и состоят из заголовка сообщения UDP header и собственно сообщения UDP Data. На рисунке приведена структура заголовка сообщения UDP.

Поле UDP DESTINATION PORT

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

Поле UDP SOURCE PORT

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

Поле UDP MRSSAGE LENGTH

В  поле UDP MRSSAGE LENGTH размещается выраженная в байтах длина сообщения UDP. Сообщение минимальной длины – 8 байт состоит из одного заголовка.

UDP SOURCE PORTUDP DESTINATION PORT
UDP MRSSAGE LENGTHUDP CHECKSUM
DATA

Поле UDP CHECKSUM

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

Использование  протокола UDP

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

Транспортный протокол TCP

Протокол TCP используется для обеспечения надежного информационного обмена на транспортном уровне в сетях Internet. Первое описание протокола приведено в RFC 793.

Особенности реализации информационного обмена TCP

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

Надежный информационный обмен предполагает следующие возможности:

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

Потоковый обмен

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

Использование виртуальных соединений

Надежный информационный обмен на транспортном уровне   может быть интерпретирован виртуальным логическим соединением.

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

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

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

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

Для обеспечения требования доставки трафика, который чувствителен к временным задержкам, в дополнение к буферу  может быть использован дополнительный механизм «push» — поршень. Использование данного механизма обеспечивает форсирование передачи содержимого буфера в тот момент, когда в него попадают  данные, которые чувствительны к временным задержкам.  

Методы обеспечения надежного  информационного взаимодействия в TCP

Для обеспечения гарантированной доставки сообщений протокол TCP использует аппарат  позитивного квитирования с повторной передачей (positive acknowledgement with retransmission).

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

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

Простая процедура квитирования

Передающая сторона приостанавливает передачу очередного сегмента до получения подтверждения о приеме предыдущего сегмента. Интервал ожидания устанавливается равным значению задержки повторной передачи – retransmit timer. Если в течение этого интервала времени не будет получено подтверждение о приеме переданного сегмента, передача данного сегмента выполняется повторно.

Квитирование с использованием скользящего окна

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

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

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

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

Процедуры управления потоком TCP

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

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

  • Управление скоростью  передачи данных
  • Обеспечение надежной доставки передаваемых данных

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

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

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

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

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

Для обеспечения управления потоком в протоколе TCP предусмотрена возможность  изменения размера окна. Каждое сообщение подтверждения содержит в себе значение  представляемого размера окна —  (window advertisement) которое в общем случае определяет размер буфера, который может быть использован в текущий момент для приема информации. 

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

Особенности практической реализации протокола TCP

Синдром неоптимального окна

При использовании протокола TCP на линиях, пропускная способность которых была различной в различных направлениях, пользователи могли наблюдать возникновение ситуации, которая получила название синдром неоптимального окна – silly window syndrome — SWS.

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

Если изначально сторона «В» установила размер своего окна равным величине своего буфера, вполне может получиться так, что сторона «А» заполнит весь буфер до того, как получит первое уведомление об изменении размера окна.  Исчерпав лимит байтов, установленный для передачи, сторона «А» перейдет в режим ожидания подтверждения.

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

   Наиболее неприятным следствием возникновения такой ситуации  будет то, что канал передачи данных в направлении от «А» к «В» будет использоваться крайне неэффективно, поскольку сегменты TCP будут использоваться для переноса небольших объемов данных (до 1 байта). Соотношение долей полезной нагрузки и служебной информации в данном случае будет крайне неудачным. Для того, чтобы избежать возникновения SWS в практической реализации протокола TCP используются несколько различных способов.

Способы предотвращение появления SWS на приемной стороне

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

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

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

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

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

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

Способы предотвращение появления SWS на передающей стороне

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

Ссылки по теме:

Добавить в:

Источник: http://lectures.net.ru/tcpip/10/

Адвокат Ганасьян
Добавить комментарий