Что такое tcp и как он работает?
Содержание:
Восстановление после ошибок TCP
Чтобы понять, что делают протоколы транспортного уровня, вы должны вспомнить об уровне выше транспортного уровня, об уровне приложений. Зачем? Каждый уровень предоставляет услуги вышестоящему уровню, например, восстановление после ошибок, предоставляемое протоколом TCP протоколам прикладного уровня.
Например, Роб и Гарри использовали HTTP для передачи домашней страницы с веб-сервера Гарри в веб-браузер Роба (). Но что произошло бы, если бы HTTP-запрос GET Роба был потерян при передаче через сеть TCP/IP? Или что произошло бы, если бы ответ Гарри, в который входил контент домашней страницы, был утерян? Как и следовало ожидать, в любом случае страница не отобразилась бы в браузере Роба.
TCP/IP нуждается в механизме, гарантирующем доставку данных через сеть. Поскольку, возможно, многим протоколам прикладного уровня необходим способ, гарантировать доставку данных по сети, создатели TCP добавили в него функцию восстановления после ошибок. Для восстановления после ошибок TCP использует концепцию подтверждений. На рисунке 1 представлена основная идея того, как TCP обнаруживает потерянные данные и просит отправителя попробовать передать их снова.
Рисунок 1 – Служба восстановления после ошибок TCP, предоставленная протоколу HTTP
На рисунке 1 показан веб-сервер Гарри, отправляющий веб-страницу веб-браузеру Роба, используя три отдельных сообщения
Обратите внимание, что на этом рисунке показаны те же заголовки HTTP, что и на , а также на нем показаны заголовки TCP. В заголовках TCP показан порядковый номер () каждого сообщения
В данном примере в сети возникла проблема, и сеть не может доставить сообщение TCP (называемое сегментом) с порядковым номером 2. Когда Роб получает сообщения с порядковыми номерами 1 и 3, но не получает сообщение с порядковым номером 2, он понимает, что сообщение 2 было потеряно. Эта реализация TCP-логики заставляет Роба отправить TCP-сегмент обратно Гарри с просьбой снова отправить сообщение 2.
History
Transmission Control Protocol was known before as the “Transmission Control Program”. The creation of the internet, although many people claim to have invented it, can mainly be attributed to Vint Cerf and Bob Khan. One of the other notable names in internet technology is Jon Postel who introduced the concept of a “protocol stack” that also contributed in the TCP/IP protocols. This is in reference to their published work on May 1974 entitled “A Program for Packet Network Intercommunication”. It was published by the Institute of Electrical and Electronic Engineers, with the sponsorship of the United States Department of Defense.
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.
Сравнение с моделью OSI
Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP, которая имеет только прикладной уровень над транспортным уровнем. Хотя некоторые чистые приложения протокола OSI, такие как X.400, также объединяют их, нет требования, чтобы стек протокола TCP/IP должен накладывать монолитную архитектуру над транспортным уровнем. Например, протокол NFS-приложений работает через протокол представления данных External Data Representation (XDR), который, в свою очередь, работает по протоколу Remote Procedure Call (RPC). RPC обеспечивает надежную передачу данных, поэтому он может безопасно использовать транспорт UDP с максимальным усилием.
Различные авторы интерпретировали модель TCP/IP по-разному и не согласны с тем, что уровень связи или вся модель TCP/IP охватывает проблемы первого уровня модели OSI (физический уровень) или предполагается, что аппаратный уровень ниже уровня канала.
Несколько авторов попытались включить слои 1 и 2 модели OSI в модель TCP/IP, поскольку они обычно упоминаются в современных стандартах (например, IEEE и ITU). Это часто приводит к модели с пятью слоями, где уровень связи или уровень доступа к сети разделяются на слои 1 и 2 модели OSI.
Например, считается, что уровни сеанса и представления пакета OSI включены в прикладной уровень пакета TCP/IP. Функциональность уровня сеанса можно найти в протоколах, таких как HTTP и SMTP, и более очевидна в таких протоколах, как Telnet и протокол инициации сеанса (SIP). Функциональность уровня сеанса также реализована с нумерацией портов протоколов TCP и UDP, которые охватывают транспортный уровень в наборе TCP/IP. Функции уровня представления реализуются в приложениях TCP/IP со стандартом MIME при обмене данными.
Конфликты очевидны также в оригинальной модели OSI, ISO 7498, когда не рассматриваются приложения к этой модели, например, ISO 7498/4 Management Framework или ISO 8648 Internal Organization of the Network layer (IONL). Когда рассматриваются документы IONL и Management Framework, ICMP и IGMP определяются как протоколы управления уровнем для сетевого уровня. Аналогичным образом IONL предоставляет структуру для «зависимых от подсетей объектов конвергенции», таких как ARP и RARP.
Протоколы IETF могут быть инкапсулированы рекурсивно, о чем свидетельствуют протоколы туннелирования, такие как Инкапсуляция общей маршрутизации (GRE). GRE использует тот же механизм, который OSI использует для туннелирования на сетевом уровне.
Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.
К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.
Вот как традиционно протоколы TCP/IP вписываются в модель OSI:
TCP/IP | OSI | ||
7 | Прикладной | Прикладной | напр., HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP |
6 | Представления | напр., XDR, AFP, TLS, SSL | |
5 | Сеансовый | напр., ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP | |
4 | Транспортный | Транспортный | напр., TCP, UDP, SCTP, SPX, ATP, DCCP, GRE |
3 | Сетевой | Сетевой | напр., IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP |
2 | Канальный | Канальный | напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP |
1 | Физический | напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение |
Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представления и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.
Типы адресов стека протоколов TCP/IP
Любой протокол передачи данных TCP/IP для идентификации узлов использует один из следующих типов адресов:
- Локальные (аппаратные) адреса.
- Сетевые адреса (IP адреса).
- Доменные имена.
Локальные адреса (MAC-адреса) — используются в большинстве технологий локальных вычислительных сетей, для идентификации сетевых интерфейсов. Под словом локальный, говоря о TCP/IP, следует понимать интерфейс, который действует не в составной сети, а в пределах отдельно взятой подсети. Например, подсеть интерфейса, подключенного к интернет — будет локальной, а сеть интернет — составной. Локальная сеть может быть построена на любой технологии, и независимо от этого, с точки зрения составной сети машина, находящаяся в отдельно выделенной подсети, будет называться локальной. Таким образом, когда пакет попадает в локальную сеть, дальше его IP адрес ассоциируется с локальным адресом, и пакет направляется уже на MAC-адрес сетевого интерфейса.
Сетевые адреса (IP-адреса). В технологии TCP/IP предусмотрена собственная глобальная адресация узлов, для решения простой задачи — объединения сетей с разной технологией в одну большую структуру передачи данных. IP-адресация совершенно не зависит от технологии, которая используется в локальной сети, однако IP адрес позволяет сетевому интерфейсу представлять машину в составной сети.
В итоге была разработана система, при которой узлам назначается IP адрес и маска подсети. Маска подсети показывает, какое количество бит отводится под номер сети, а какое количество под номер узла. IP адрес состоит из 32 бит, разделенных на блоки по 8 бит.
При передаче пакета ему назначается информация о номере сети и номере узла, в который пакет должен быть направлен. Сначала маршрутизатор направляет пакет в нужную подсеть, а потом выбирается узел, который его ждет. Этот процесс осуществляется протоколом разрешения адресов (ARP).
Доменные адреса в сетях TCP/IP управляются специально разработанной системой доменных имен (DNS). Для этого существуют серверы, которые сопоставляют доменное имя, представленное в виде строки текста, с IP адресом, и отправляет пакет уже в соответствии с глобальной адресацией. Между именем компьютера и IP адресом не предусмотрено соответствий, поэтому, чтобы преобразовать доменное имя в IP адрес, передающему устройству необходимо обратиться к таблице маршрутизации, которая создается на DNS сервере. Например, мы пишем в браузере адрес сайта, DNS сервер сопоставляет его с IP адресом сервера, на котором сайт расположен, и браузер считывает информацию, получая ответ.
Кроме сети интернет, есть возможность выдавать компьютерам доменные имена. Таким образом, упрощается процесс работы в локальной сети. Пропадает необходимость запоминать все IP-адреса. Вместо них можно придумать каждому компьютеру любое имя и использовать его.
Header
The length of TCP header is minimum 20 bytes long and maximum 60 bytes.
-
Source Port (16-bits) — It identifies source port of the application process on the sending device.
-
Destination Port (16-bits) — It identifies destination port of the application process on the receiving device.
-
Sequence Number (32-bits) — Sequence number of data bytes of a segment in a session.
-
Acknowledgement Number (32-bits) — When ACK flag is set, this number contains the next sequence number of the data byte expected and works as acknowledgement of the previous data received.
-
Data Offset (4-bits) — This field implies both, the size of TCP header (32-bit words) and the offset of data in current packet in the whole TCP segment.
-
Reserved (3-bits) — Reserved for future use and all are set zero by default.
-
Flags (1-bit each)
-
NS — Nonce Sum bit is used by Explicit Congestion Notification signaling process.
-
CWR — When a host receives packet with ECE bit set, it sets Congestion Windows Reduced to acknowledge that ECE received.
-
ECE -It has two meanings:
-
If SYN bit is clear to 0, then ECE means that the IP packet has its CE (congestion experience) bit set.
-
If SYN bit is set to 1, ECE means that the device is ECT capable.
-
-
URG — It indicates that Urgent Pointer field has significant data and should be processed.
-
ACK — It indicates that Acknowledgement field has significance. If ACK is cleared to 0, it indicates that packet does not contain any acknowledgement.
-
PSH — When set, it is a request to the receiving station to PUSH data (as soon as it comes) to the receiving application without buffering it.
-
RST — Reset flag has the following features:
-
It is used to refuse an incoming connection.
-
It is used to reject a segment.
-
It is used to restart a connection.
-
-
SYN — This flag is used to set up a connection between hosts.
-
FIN — This flag is used to release a connection and no more data is exchanged thereafter. Because packets with SYN and FIN flags have sequence numbers, they are processed in correct order.
-
-
Windows Size — This field is used for flow control between two stations and indicates the amount of buffer (in bytes) the receiver has allocated for a segment, i.e. how much data is the receiver expecting.
-
Checksum — This field contains the checksum of Header, Data and Pseudo Headers.
-
Urgent Pointer — It points to the urgent data byte if URG flag is set to 1.
-
Options — It facilitates additional options which are not covered by the regular header. Option field is always described in 32-bit words. If this field contains data less than 32-bit, padding is used to cover the remaining bits to reach 32-bit boundary.
Что такое протокол TCP/IP?
Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) представляет собой стек сетевых протоколов, повсеместно используемый для Интернета и других подобных сетей (например, данный протокол используется и в ЛВС). Название TCP/IP произошло от двух наиболее важных протоколов:
- IP (интернет протокол) — отвечает за передачу пакета данных от узла к узлу. IP пересылает каждый пакет на основе четырехбайтного адреса назначения (IP-адрес).
- TCP (протокол управления передачей) — отвечает за проверку корректной доставки данных от клиента к серверу. Данные могут быть потеряны в промежуточной сети. В протоколе TCP добавлена возможность обнаружения ошибок или потерянных данных и, как следствие, возможность запросить повторную передачу, до тех пор, пока данные корректно и полностью не будут получены.
Основные характеристики TCP/IP:
- Стандартизованные протоколы высокого уровня, используемые для хорошо известных пользовательских сервисов.
- Используются открытые стандарты протоколов, что дает возможность разрабатывать и дорабатывать стандарты независимо от программного и аппаратного обеспечения;
- Система уникальной адресации;
- Независимость от используемого физического канала связи;
Принцип работы стека протоколов TCP/IP такой же как и в модели OSI, данные верхних уровней инкапсулируются в пакеты нижних уровней.
Если пакет продвигается по уровню сверху вниз — на каждом уровне добавляется к пакету служебная информация в виде заголовка и возможно трейлера (информации помещенной в конец сообщения). Этот процесс называется инкапсуляция. Служебная информация предназначается для объекта того же уровня на удаленном компьютере. Ее формат и интерпретация определяются протоколами данного уровня.
Если пакет продвигается по уровню снизу вверх — он разделяется на заголовок и данные. Анализируется заголовок пакета, выделяется служебная информация и в соответствии с ней данные перенаправляются к одному из объектов вышестоящего уровня. Вышестоящий уровень, в свою очередь, анализирует эти данные и также их разделяет их на заголовок и данные, далее анализируется заголовок и выделяется служебная информация и данные для вышестоящего уровня. Процедура повторяется заново пока пользовательские данные, освобожденные от всей служебной информации, не дойдут до прикладного уровня.
Не исключено, что пакет так и не дойдет до прикладного уровня. В частности, если компьютер работает в роли промежуточной станции на пути между отправителем и получателем, тогда объект, на соответствующем уровне, при анализе служебной информации определит, что пакет на этом уровня адресован не ему, в следствии чего, объект проведет необходимые мероприятия для перенаправления пакета к пункту назначения или возврата отправителю с сообщением об ошибке. Но так или иначе не будет осуществлять продвижение данных на верхний уровень.
Пример инкапсуляции можно представить следующим образом:
Рассмотрим каждые функции уровней
Приложения
Многие ключевые интернет-приложения используют UDP, в том числе: систему доменных имен (DNS), где запросы должны быть быстрыми и состоять только из одного запроса, за которым следует один пакет ответа, простой протокол управления сетью (SNMP), протокол информации о маршрутизации ( RIP) и протокол динамической конфигурации хоста (DHCP).
Голосовой и видеотрафик обычно передается по протоколу UDP. Протоколы потоковой передачи видео и аудио в реальном времени предназначены для обработки случайных потерянных пакетов, поэтому при повторной передаче потерянных пакетов происходит только небольшое ухудшение качества, а не большие задержки. Поскольку и TCP, и UDP работают в одной и той же сети, многие компании обнаруживают, что недавнее увеличение трафика UDP из этих приложений реального времени снижает производительность приложений, использующих TCP, таких как точки продаж , системы бухгалтерского учета и базы данных. Когда TCP обнаруживает потерю пакета, он ограничивает использование скорости передачи данных. Поскольку для бизнеса важны как приложения реального времени, так и бизнес-приложения, некоторые считают важным высокое качество обслуживания .
Некоторые системы VPN , такие как OpenVPN, могут использовать UDP и выполнять проверку ошибок на уровне приложений при реализации надежных соединений.
QUIC — это транспортный протокол, построенный на основе UDP. QUIC обеспечивает надежное и безопасное соединение. HTTP / 3 использует QUIC в отличие от более ранних версий HTTPS, которые используют комбинацию TCP и TLS для обеспечения надежности и безопасности соответственно. Это означает, что HTTP / 3 использует одно рукопожатие для установки соединения, а не два отдельных рукопожатия для TCP и TLS, а это означает, что общее время установления соединения сокращается.
Что такое IP-адрес
У всех он есть, но не все имеют представление что за адрес такой и почему вообще без него нельзя. Рассказываю.
IP-адрес — 32-х битное число, используемое для идентификации компьютера в сети. Адрес принято записывать десятичными значениями каждого октета этого числа с разделением полученных значений точками. Например, 192.168.101.36
IP-адреса уникальны, — это значит, что каждый компьютер имеет свое собственное сочетание цифр, и в сети не может быть двух компьютеров с одинаковыми адресами. IP-адреса распределяются централизованно, интернет-провайдеры делают заявки в национальные центры в соответствии со своими потребностями. Полученные провайдерами диапазоны адресов распределяются дальше между клиентами. Клиенты, в свою очередь, сами могут выступать в роли провайдера и распределять полученные IP-адреса между субклиентами и т.д. При таком способе распределения IP-адресов компьютерная система точно знает «расположение» компьютера, имеющего уникальный IP-адрес; — ей достаточно переслать данные в сеть «владельца», а провайдер в свою очередь проанализирует пункт назначения и, зная, кому отдана эта часть адресов, отправит информацию следующему владельцу поддиапазона IP-адресов, пока данные не поступят на компьютер назначения.
Для построения же локальных сетей выделены спец.диапазоны адресов. Это адреса 10.x.x.x, 192.168.x.x, 10.x.x.x, c 172.16.x.x по 172.31.x.x, 169.254.x.x, где под x- имеется ввиду любое число это от 0 до 254. Пакеты, передаваемые с указанных адресов, не маршрутизируется, иными словами, попросту не пересылаются через Интернет, а поэтому в различных локальных сетях компьютеры могут иметь совпадающие адреса из указанных диапазонов. Т.е., в компании ООО «Рога и копыта» и ООО «Вася и компания» могут находится два компьютера с адресами 192.168.0.244, но не могут, скажем, с адресами 85.144.213.122, полученными от провайдера интернета, т.к. в интернете не может быть два одинаковых IP-адреса. Для пересылки информации с таких компьютеров в Интернет и обратно используются спец.программы и устройства, которые заменяют локальные адреса реальными при работе с интернетом. Иными словами, данные в Сеть пересылаются с реального IP-адреса, а не с локального. Этот процесс происходит не заметно для пользователя и называется трансляцией адресов. Хочется так же упомянуть, что в рамках одной сети, скажем, компании, ООО «Рога и копыта», не может быть два компьютера с одним локальным IP-адресом, т.е., в указанном выше примере имелось ввиду, что один компьютер с адресом 192.168.0.244 в одной компании, второй с таким же адресом — в другой. В одной же компании два компьютера с адресом 192.168.0.244 попросту не уживутся.
Вы наверняка слышали такие термины как внешний IP и внутренний IP, постоянный (статический IP) и переменный (динамический) IP. В двух словах о них:
- внешний IP — это как раз тот самый IP, который выдает Вам провайдер, т.е. Ваш уникальный адрес в интернете, например, — 85.144.24.122
- внутренний IP, — это локальный IP, т.е. Ваш IP в локальной сети, например, — 192.168.1.3
- статический IP — это IP, который не меняется с каждым подключением, т.е. закреплен за Вами твердо и навсегда
- динамический IP, — это плавающий IP-адрес, который меняется с каждым подключением
Тип Вашего IP (статический или динамический) зависит от настроек провайдера.
Сколько всего портов TCP?
Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.
Соединение TCP
Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.
Протокол TCP умеет работать с поврежденными, потерянными, дублированными или поступившими с нарушением порядка следования пакетами. Это достигается благодаря механизму присвоения каждому передаваемому пакету порядкового номера и механизму проверки получения пакетов.
Когда протокол TCP передает сегмент данных, копия этих данных помещается в очередь повтора передачи и запускается таймер ожидания подтверждения.
Сокеты TCP
Активные TCP соединения с интернетом (w/o servers)
# netstat -nt Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.26.95.251:56981 10.161.85.55:22 ESTABLISHED tcp 0 0 10.26.95.251:44596 10.26.95.226:2193 ESTABLISHED
Для сокетов TCP допустимы следующие значения состояния:
CLOSED Закрыт. Сокет не используется. LISTEN Сокет ожидает входящих соединений. SYN_SENT Активно пытается установить соединение. Cокет в процессе установки соединения. SYN_RECEIVED (SYN_RCVD) Идет начальная синхронизация соединения. Был принят запрос установки соединения из сети. ESTABLISHED Соединение установлено. CLOSE_WAIT Удаленная сторона отключилась; ожидание закрытия сокета. FIN_WAIT_1 Сокет закрыт; соединение закрывается. CLOSING Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения. LAST_ACK Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения. FIN_WAIT_2 Сокет закрыт; ожидание отключения удаленной стороны. TIME_WAIT Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки UNKNOWN Статус сокета неизвестен.
Что такое TCP RST?
TCP RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:
- Посылается SYN для несуществующего сервера.
- TCP хочет прервать соединение.
- Получен сегмент, для которого не существует соединения.
Multiplexing
The technique to combine two or more data streams in one session is called Multiplexing. When a TCP client initializes a connection with Server, it always refers to a well-defined port number which indicates the application process. The client itself uses a randomly generated port number from private port number pools.
Using TCP Multiplexing, a client can communicate with a number of different application process in a single session. For example, a client requests a web page which in turn contains different types of data (HTTP, SMTP, FTP etc.) the TCP session timeout is increased and the session is kept open for longer time so that the three-way handshake overhead can be avoided.
This enables the client system to receive multiple connection over single virtual connection. These virtual connections are not good for Servers if the timeout is too long.
TCP[править]
TCP протокол базируется на IP для доставки пакетов, но добавляет две важные вещи:
- установление соединения — это позволяет ему, в отличие от IP, гарантировать доставку пакетов
- порты — для обмена пакетами между приложениями, а не просто узлами
Протокол TCP предназначен для обмена данными — это «надежный» протокол, потому что:
- Обеспечивает надежную доставку данных, так как предусматривает установления логического соединения;
- Нумерует пакеты и подтверждает их прием квитанцией, а в случае потери организует повторную передачу;
- Делит передаваемый поток байтов на части — сегменты — и передает их нижнему уровню, на приемной стороне снова собирает их в непрерывный поток байтов.
Сравнение UDP и TCP
Протокол управления передачей — это протокол, ориентированный на установление соединения и требующий квитирования для установки сквозной связи. Как только соединение установлено, пользовательские данные могут быть отправлены двунаправленно по соединению.
- Надежный — TCP управляет подтверждением сообщений, повторной передачей и тайм-аутом. Сделано несколько попыток доставить сообщение. Если данные будут потеряны по пути, данные будут отправлены повторно. В TCP либо отсутствуют недостающие данные, либо, в случае нескольких тайм-аутов, соединение разрывается.
- Упорядоченный — если по соединению последовательно отправляются два сообщения, первое сообщение сначала достигнет принимающего приложения. Когда сегменты данных прибывают в неправильном порядке, TCP буферизует неупорядоченные данные до тех пор, пока все данные не будут должным образом переупорядочены и доставлены в приложение.
- Heavyweight — TCP требует трех пакетов для установки сокетного соединения, прежде чем какие-либо пользовательские данные могут быть отправлены. TCP обеспечивает надежность и контроль перегрузки .
- Потоковая передача — данные читаются как поток байтов , отличительные признаки не передаются на границы сигнального сообщения (сегмента).
Протокол дейтаграмм пользователя — это более простой протокол без установления соединения на основе сообщений . Протоколы без установления соединения не устанавливают выделенное сквозное соединение. Связь достигается путем передачи информации в одном направлении от источника к месту назначения без проверки готовности или состояния получателя.
- Ненадежный — при отправке сообщения UDP нельзя узнать, достигнет ли оно места назначения; он мог потеряться по пути. Нет концепции подтверждения, повторной передачи или тайм-аута.
- Не упорядочено — если два сообщения отправлены одному и тому же получателю, порядок их доставки не может быть гарантирован.
- Легковесный — сообщения не упорядочиваются, не отслеживаются соединения и т. Д. Это очень простой транспортный уровень, разработанный поверх IP.
- Датаграммы — пакеты отправляются индивидуально и проверяются на целостность по прибытии. Пакеты имеют определенные границы, которые соблюдаются при получении; операция чтения в сокете получателя приведет к тому, что сообщение будет полностью отправлено в том виде, в котором оно было отправлено изначально.
- Нет контроля перегрузки — UDP сам по себе не предотвращает перегрузку. Меры по контролю за перегрузкой должны быть реализованы на уровне приложений или в сети.
- Широковещательная рассылка — протокол UDP не требует установления соединения — отправленные пакеты могут быть адресованы для приема всеми устройствами в подсети.
- Многоадресная рассылка — поддерживается режим многоадресной рассылки, при котором один пакет дейтаграммы может автоматически маршрутизироваться без дублирования группе подписчиков.