Протоколы tcp и udp: в чем разница

UDP — User Datagram Protocol

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

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

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

Однонаправленное (unicast) сообщение отправляется из одного узла только в один другой узел. Это также называется связью «точка-точка». Протокол TCP поддерживает лишь однонаправленную связь. Если серверу нужно с помощью TCP взаимодействовать с несколькими клиентами, каждый клиент должен установить соединение, поскольку сообщения могут отправляться только одиночным узлам.

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

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

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

Заголовок UDP гораздо короче и проще заголовка TCP:

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

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

Формат заголовка IP-пакета

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

Номер версии

Первое поле номер версии. Сейчас используется две версии протокола IP 4 и 6. Большая часть компьютеров использует IPv4. Длина  адреса в этой версии 4 байта. Формат адреса IP версии 4 мы рассматривали подробно. Проблема в том, что адресов IPv4, четыре с небольшим миллиарда, что уже сейчас не хватает для всех устройств в сети, а в будущем точно не хватит. Поэтому была предложена новая версия IPv6 в которой длина IP адреса составляет 16 байт. Сейчас эта версия вводится в эксплуатацию, но процесс занимает очень долгое время.

Длина заголовка

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

Тип сервиса

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

Общая длина

Следующее поле общая длина. Общая длина содержит длину всего IP пакета, включая заголовок и данные. Максимальная длина пакета 65 535 байт, но на практике такие большие пакеты не используются, а максимальный размер ограничен размером кадра канального уровня, а для Ethernet это 1 500 байт. В противном случае для передачи одного IP пакета необходимо было бы несколько кадров канального уровня что неудобно.

Время жизни

Дальше идет поле время жизни. Время жизни Time To Live или TTL — это максимальное время в течение которого пакет может перемещаться по сети. Оно введено для того чтобы пакеты не гуляли по сети бесконечно, если в конфигурации сети возникла какая-то ошибка. Например, в результате неправильной настройке маршрутизаторов в сети, может образоваться петля. Раньше, время жизни измерялось в секундах, но сейчас маршрутизаторы обрабатывают пакет значительно быстрее чем за секунду, поэтому время жизни уменьшается на единицу на каждом маршрутизаторе, и оно измеряется в количествах прохождения через маршрутизаторы по-английски (hop) от слова прыжок. Таким образом название время жизни сейчас стало уже некорректным.

Тип протокола

После времени жизни, указывается тип протокола следующего уровня. Это поле необходимо для реализации функции мультиплексирования и демультиплексирования, то есть передачи с помощью протокола IP данных от разных протоколов следующего уровня. В этом поле указывается код протокола следующего уровня, некоторые примеры кодов для TCP код 6, UDP — 17 и ICMP — 1.

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

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

IP адрес получателя и отправителя

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

Опции

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

И опция — временные метки, при установке которой, каждый маршрутизатор записывает время прохождения пакеты.

Также опции позволяют отказаться от автоматической маршрутизации, и задать маршрут отправитель:

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

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

В статье был рассмотрен протокол IP (Internet Protocol) — протокол межсетевого взаимодействия. Протокол IP является основой интернета. В OSI находится на сетевом уровне.

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

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

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

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

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

История

Стек протоколов TCP/IP был создан на основе NCP (Network Control Protocol) группой разработчиков под руководством Винтона Серфа в 1972 году. В июле 1976 года Винт Серф и Боб Кан впервые продемонстрировали передачу данных с использованием TCP по трём различным сетям. Пакет прошел по следующему маршруту: Сан-Франциско — Лондон — Университет Южной Калифорнии. К концу своего путешествия пакет проделал 150 тысяч км, не потеряв ни одного бита. В 1978 году Серф, Джон Постел и Дэнни Кохэн решили выделить в TCP две отдельные функции: TCP и IP (англ. Internet Protocol, межсетевой протокол). TCP был ответственен за разбивку сообщения на датаграммы (англ. datagram) и соединение их в конечном пункте отправки. IP отвечал за передачу (с контролем получения) отдельных датаграмм. Вот так родился современный протокол Интернета. А с 1 января 1983 года ARPANET перешла на новый протокол. Этот день принято считать официальной датой рождения Интернета.

Формальная спецификация и стандарты

Технические стандарты, лежащие в основе набора TCP/IP протоколов, были переданы Инженерному совету Интернета (IETF).

Как работает TCP соединение

Соединение отправителя и получателя (два узла) происходит так:

1. Отправитель отсылает получателю специальный пакет, именуемый SYN, т.е. пригашает к соединению2. Получатель отвечает уже пакетом SYN-ACK, т.е. соглашается3. Отправитель отсылает спец. пакет ACK, т.е. подтверждает, что согласие получено

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

TCP порты

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

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

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

Также, стоит отметить, что порты данного протокола никак не пересекаются с такими же, но у UDP. Так, например, порт: 1234 не пересечется с таким же, но у UDP.

В заключение

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

Описание модели TCP/IP в технической литературе

В модели TCP/IP, в отличие от модели OSI, физический уровень никак не описывается. Тем не менее, в некоторых учебниках, для лучшего понимания, описывается «гибридная модель TCP/IP — OSI» из 5 уровней, содержащая дополнительный — физический уровень.

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

Kurose, Forouzan Comer, Kozierok Stallings Tanenbaum Cisco Academy OSI model
Пять уровней Четыре + 1 уровень Пять уровней Пять уровней Четыре уровня Четыре уровня Три уровня Семь уровней
«Five-layer Internet model» or «TCP/IP protocol suite» «TCP/IP 5-layer reference model» «TCP/IP model» «TCP/IP 5-layer reference model» «Internet model» «Internet model» «Arpanet reference model» OSI model
Application Application Application Application Application (Прикладной) Application Application/Process Application
Presentation
Session
Transport Transport Host-to-host or transport Transport Transport (Транспортный) Transport Host-to-host Transport
Network Internet Internet Internet Internet (Сетевой) Internetwork Network
Data link Data link (Network interface) Network access Data link Link (Канальный) Network interface Network interface Data link
Physical (Hardware) Physical Physical Physical

TCP против UDP в различных протоколах VPN, таких как OpenVPN

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

OpenVPN позволяет использовать протокол TCP и UDP для туннеля данных, как вы видели, TCP и UDP сильно различаются, и всегда рекомендуется использовать TCP, так как он имеет управление потоком, контроль перегрузки, контроль ошибок и многие другие функции, которые делают соединение надежным. Если вы собираетесь использовать OpenVPN, по умолчанию используется UDP, это связано с тем, что, если есть какие-либо проблемы, протоколы прикладного уровня, такие как HTTP (который использует TCP ниже), будут отвечать за выполнение повторных передач, если это было необходимо, поэтому соединение будет надежным (управление потоком, перегрузка, ошибки и т. д.), даже если зашифрованный туннель точка-точка использует UDP.

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

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

TCP

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

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

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

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

Емкость и возможности канала

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

Уровень межсетевого взаимодействия IPv4 автоматически фрагментирует дейтаграмму на более мелкие блоки для передачи при превышении MTU канала. IP обеспечивает переупорядочивание фрагментов, полученных не по порядку. Сеть IPv6 не выполняет фрагментацию сетевых элементов, но требует конечных хостов и протоколов более высокого уровня, чтобы избежать превышения MTU пути.

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

Функциональность

Протокол управления передачей данных (TCP) работает с Интернет-протоколом (IP). Отправка пакетов данных с одного компьютера на другой является его основной функцией. TCP и IP, вместе взятые, являются двумя протоколами, которые управляют Интернетом. В документе № 793 о стандартах Запроса комментариев (RFC) протокол управления передачей определен Целевой группой по инженерно-техническому обеспечению Интернета (IETF).

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

В некоторых случаях пакеты теряются или доставляются не по назначению. Это связано с непредсказуемым сетевым поведением. Чтобы свести эту проблему к минимуму, ПТС запрашивает повторный заказ и доставку товаров. Это, однако, меняет скорость доставки на пару секунд. Необходимость в повторном упорядочении пакетов и ретрансляции после их получения создает задержку в потоке TCP. Согласно исследованиям, такие приложения, как FTP, Telnet, электронная почта и World Wide Web (WWW), предпочитают именно эту транспортную услугу — около 90% трафика этих сетей.

TCP/IP Адресация

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

Например, порт 80 для TCP используется в основном для веб-браузеров, а порт 25 — для электронной почты. Для данной услуги вводится IP-адрес и номер порта, например 192.168.66.5:80.

История версий

График разработки протокола управления передачей TCP и Интернет-протокола IP.

Первая Интернет-демонстрация, связывающая ARPANET , PRNET и SATNET, 22 ноября 1977 г.

В мае 1974 года Институт инженеров по электротехнике и радиоэлектронике (IEEE) опубликовал документ, озаглавленный «Протокол межсетевого взаимодействия в пакетной сети». Авторы статьи Винт Серф и Боб Кан описали межсетевой протокол для совместного использования ресурсов с использованием коммутации пакетов между сетевыми узлами . Центральным управляющим компонентом этой модели была «Программа управления передачей», которая включала как ориентированные на соединение ссылки, так и службы дейтаграмм между хостами. Монолитная программа управления передачей позже была разделена на модульную архитектуру, состоящую из протокола управления передачей и протокола пользовательских дейтаграмм на транспортном уровне и Интернет-протокола на Интернет-уровне . Модель стала известна как Интернет-модель и набор Интернет-протоколов Министерства обороны (DoD) , а неофициально — TCP / IP .

Версии IP с 1 по 3 были экспериментальными версиями, разработанными между 1973 и 1978 годами. Следующие документы Internet Experiment Note (IEN) описывают версию 3 протокола Internet, предшествовавшую современной версии IPv4:

Версия 5 использовалась протоколом Internet Stream Protocol , экспериментальным протоколом потоковой передачи, который не был принят.

Присвоение новому протоколу IPv6 было неопределенным до тех пор, пока должная осмотрительность не убедила, что IPv6 ранее не использовался. Другим протоколам Интернет-уровня были присвоены номера версий, например 7 ( IP / TX ), 8 и 9 ( исторические ). Примечательно, что 1 апреля 1994 года IETF опубликовала первоапрельскую шутку о IPv9. IPv9 также использовался в альтернативном предложенном расширении адресного пространства под названием TUBA.

Transport Layer

Transport layer builds on the network layer in order to provide data transport from a process on a source system machine to a process on a destination system. It is hosted using single or multiple networks, and also maintains the quality of service functions.

It determines how much data should be sent where and at what rate. This layer builds on the message which are received from the application layer. It helps ensure that data units are delivered error-free and in sequence.

Transport layer helps you to control the reliability of a link through flow control, error control, and segmentation or de-segmentation.

The transport layer also offers an acknowledgment of the successful data transmission and sends the next data in case no errors occurred. TCP is the best-known example of the transport layer.

Important functions of Transport Layers:

  • It divides the message received from the session layer into segments and numbers them to make a sequence.
  • Transport layer makes sure that the message is delivered to the correct process on the destination machine.
  • It also makes sure that the entire message arrives without any error else it should be retransmitted.

Заголовок 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 программы используют зарезервированные или хорошо известные номера портов, как показано на следующем рисунке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector