Протокол пользовательской датаграммы (udp)
Содержание:
- 2, UDP, формат заголовка TCP
- сетевой модуль node.js
- Протоколы UDP и TCP – в чем разница?
- Некоторые порты могут использоваться для чего угодно, в то время как другие имеют давно установленные цели
- Наконец, вернемся к нашему вопросу: разница между TCP и UDP
- UDP
- Tcp Udp отличия
- Преимущества UDP
- Недостатки UDP
- Приложения
- TCP— Transmission Control Protocol
- Практика¶
- Сравнение UDP и TCP
- UDP заголовок
- Что такое маска адреса (подсеть)
- Выводы
2, UDP, формат заголовка TCP
Поле заголовка UDP имеет только 8 байтов, включая исходные порты, порты назначения, длину, проверку и. 12-байтовый псевдоугольник — это рассчитать проверку и временное дополнение.
Формат заголовка TCP сложно, чем UDP.
Серийный номер:Используется для пронумерованных байтовных потоков, таких как номер 301, указывающий номер 301 первого байта, если нагрузка несет длину 100 байтов, то число последовательности следующего сообщения должно быть 401.
Номер подтверждения:Последовательный номер следующего секции сообщения ожидается. Например, B правильно получает сегмент сообщения из передачи, номер 501, длина данных носителя составляет 200 байтов, поэтому B, как ожидается, будет последовательным числом 701 701, B, отправленные в сегмент подтверждения отчета. 701.
Смещение данных:Относится к смещению в начале отчета расстояния части данных, которое на самом деле является длиной головы.
Бит контроля:Восемь битов слева направо — CWR, ECE, URG, ACK, PSH, RST, SYN, FIN.
CWR:И флаг CWR и следующий флаг ECE используются для поля ECN IP-заголовка IP, и флаг ECE — 1, другая сторона сузила окно застой;
ECE:Если значение 1, другая сторона уведомит другая сторона, с другой стороны для этого есть блокировка. Установка ECE в головке TCP до 1, когда ECN получен в заголовке IP пакета.
URG:Этот бит установлен на 1, указывающий, что в упаковке необходимо потребность в аварийной обработке, и связана с следующим указателем неотложной помощи;
ACK:Этот бит устанавливается на 1. Действительно относится к действию поля, и TCP указывает, что бит должен быть установлен на 1, за исключением изначально установленного пакета SYN.
PSH:Этот бит установлен на 1, что указывает на то, что полученные данные немедленно передаются в протокол верхнего приложения. Если установлено значение 0, данные будут кэшированы первыми;
RST:Этот бит установлен на 1, что указывает на то, что соединение TCP должно быть вынуждено отключить;
SYN:Используется для установления соединения, бит установлен на 1, что указывает на то, что соединение желательно, и установлен набор номеров последовательности;
FIN:Этот бит устанавливается на 1, указывая на то, что в будущем больше нет передачи данных, и желательно отключиться. Когда связь заканчивается, когда требуется связь, сегмент TCP положения плавника 1 обменивается между хостами связи.
Каждый хост также может отключить соединение после подтверждения плавного пакета другой стороны. Тем не менее, хост не должен отвечать на плавный пакет сразу после получения настройки плавника, но может дождаться до тех пор, пока все данные в буфере автоматически не удаляются после успешного отправки;
окно:Значение окна используется в качестве получателя, чтобы установить основу для отправителя для отправки окна. Это ограничение состоит в том, что пространство кэш-памяти данных приемника ограничено.
сетевой модуль node.js
- Сетевой модуль также является основным модулем узла, используемым для базовой сетевой связи;
- http.Server наследует net.Server;
- Связь между http-клиентом и http-сервером зависит от сокета (net.Socket);
6.1 Состав сетевого модуля
В основном он состоит из двух частей:
-
net.Server tcp / server, TCP сервера отслеживает запрос от клиента и использует TCP-соединение (сокет) для отправки данных клиенту; внутренне через сокет Осуществлять общение с клиентом;
-
net.Socket tcp / local, клиентский TCP подключается к серверу и обменивается данными с сервером; реализация узла сокета реализует полнодуплексный поток интерфейс;
Протоколы UDP и TCP – в чем разница?
Несмотря на то, что протоколы UDP и TCP ориентированы на выполнение одной задачи – передачу данных, между ними существует ряд принципиальных отличий.
- Процесс установки соединения. В UDP в нем нет необходимости, в то время как TCP нуждается в обязательной процедуре начала сеанса, состоящей из трех этапов.
- Гарантия обмена трафиком. TCP отправляет запрос на предмет целостности данных – если в ответ поступает запрос о потерянных пакетах, они будут отправлены повторно. За счет этого обеспечивается абсолютная гарантия целостной передачи. Использование UDP, в свою очередь, может привести к потере некоторого количества пакетов.
- Управление и контроль потока. TCP осуществляет комплексный контроль и управление потоком информации, а в UDP это не нужно.
- Порядок доставки. Специфика TCP заключается в том, что все пакеты отправляются в формате строгой очередности. UDP доставляет сообщения в виде не упорядоченных датаграмм.
- Уведомление о перегрузках. Если в рамках передачи данных возникнут перегрузки, TCP отправит соответствующее уведомление. Протокол UDP не предоставляет какой-либо защиты от перегрузки.
- Сохранение границ переданных сообщений. Протокол TCP хоть и не может сохранить границы переданных сообщений, предоставляет гарантию их целостности. Применение протокола UDP предусматривает сохранение границ каждой пересланной датаграммы.
- Функция сборки и сегментации пакетов передаваемой информации. Поддерживается только в рамках протокола TCP.
- Процедура проверки достижимости. Является обязательной только для протокола TCP, в то время как протокол UDP физически не поддерживает ее.
- Взаимодействие с соединениями полуоткрытого типа. В рамках протокола TCP никогда не происходит повторная синхронизация. А вот протокол UDP устанавливает соединение методом повторной передачи запроса к конечному пользователю.
Некоторые порты могут использоваться для чего угодно, в то время как другие имеют давно установленные цели
Протокол управления передачей (TCP) использует набор каналов связи, называемых портами, для управления системным обменом сообщениями между несколькими различными приложениями, работающими на одном физическом устройстве. В отличие от физических портов на компьютерах, таких как USB-порты или Ethernet-порты, TCP-порты являются виртуально программируемыми записями, пронумерованными от 0 до 65535.
Большинство портов TCP являются каналами общего назначения, которые могут вызываться при необходимости, но в остальном бездействуют. Однако некоторые порты с меньшими номерами предназначены для определенных приложений. Хотя многие TCP-порты принадлежат приложениям, которые больше не существуют, некоторые из них очень популярны.
TCP порт 0
TCP фактически не использует порт 0 для сетевого взаимодействия, но этот порт хорошо известен сетевым программистам. Программы сокетов TCP используют порт 0 по соглашению, чтобы запросить доступный порт, который будет выбран и выделен операционной системой. Это избавляет программиста от необходимости выбирать («жесткий код») номер порта, который может не сработать в данной ситуации.
TCP-порты 20 и 21
FTP-серверы используют TCP-порт 21 для управления своей стороной сеансов FTP. Сервер прослушивает команды FTP, поступающие на этот порт, и отвечает соответствующим образом. В активном режиме FTP сервер дополнительно использует порт 20 для инициирования передачи данных обратно клиенту FTP.
TCP-порт 22
Secure Shell использует порт 22. Серверы SSH прослушивают на этом порту входящие запросы на вход от удаленных клиентов. Из-за характера такого использования порт 22 любого общедоступного сервера часто проверяется сетевыми хакерами и является предметом тщательного изучения в сообществе по сетевой безопасности. Некоторые защитники рекомендуют администраторам перенести установку SSH на другой порт, чтобы избежать этих атак, в то время как другие утверждают, что это лишь незначительный обходной путь.
TCP-порт 23
Порт 23 управляет telnet , текстовой системой для входа в удаленные системы. Хотя современные подходы к удаленному доступу основаны на Secure Shell на порте 22, порт 23 остается зарезервированным для более старого и менее безопасного приложения telnet.
TCP-порты 25, 110 и 143
На принимающей стороне порт 110 управляет протоколом почтовой связи версии 3, а порт 143 выделен для протокола доступа к почте через Интернет. POP3 и IMAP контролируют поток электронной почты с сервера вашего провайдера на ваш почтовый ящик.
Безопасные версии SMTP и IMAP различаются в зависимости от конфигурации, но порты 465 и 587 являются общими.
UDP порты 67 и 68
Серверы протокола динамической конфигурации хоста используют UDP-порт 67 для прослушивания запросов, в то время как клиенты DHCP обмениваются данными через UDP-порт 68.
TCP-порты 80 и 443
Возможно, самый известный порт в Интернете – TCP-порт 80 – это значение по умолчанию, которое веб-серверы HyperText Transfer Protocol прослушивают для запросов веб-браузера.
Порт 443 по умолчанию для безопасного HTTP.
UDP-порты 161 и 162
По умолчанию простой протокол управления сетью использует UDP-порт 161 для отправки и получения запросов в управляемой сети. Он использует UDP-порт 162 по умолчанию для получения прерываний SNMP от управляемых устройств.
TCP-порт 194
Несмотря на то, что такие инструменты, как приложения для обмена сообщениями на смартфонах, такие как Slack и Microsoft Teams, стали использовать Internet Relay Chat, IRC по-прежнему пользуется популярностью среди людей по всему миру. По умолчанию IRC использует порт 194.
Порты выше 1023
Номера портов TCP и UDP между 1024 и 49151 называются зарегистрированными портами . Управление по присвоению номеров в Интернете ведет список услуг, использующих эти порты, чтобы минимизировать конфликты при использовании.
В отличие от портов с меньшими номерами, разработчики новых служб TCP/UDP могут выбирать определенный номер для регистрации в IANA, а не назначать им номер. Использование зарегистрированных портов также позволяет избежать дополнительных ограничений безопасности, которые операционные системы накладывают на порты с меньшими номерами.
Наконец, вернемся к нашему вопросу: разница между TCP и UDP
Благодаря приведенному выше объяснению каждый должен понимать разницу.
- TCP ориентирован на соединение, UDP — без установления соединения
- Структура программы UDP относительно проста
- TCP ориентирован на байты, UDP основан на дейтаграммах
- TCP гарантирует правильность данных, UDP может терять пакеты
- TCP гарантирует последовательность данных, UDP не гарантирует
Что ориентировано на соединение, а что нет
Перед взаимодействием протоколы, ориентированные на установление соединения, сначала устанавливают соединение. Например, TCP поддерживает трехстороннее квитирование, а UDP — нет.
Почему TCP — надежное соединение
- Данные, передаваемые через TCP-соединение, не имеют ошибок, потерь, дублирования и поступают по порядку.
- Порядковый номер в заголовке сообщения TCP позволяет данным TCP поступать по порядку.
- Порядковый номер подтверждения в заголовке сообщения может гарантировать отсутствие потери пакетов, кумулятивного подтверждения и механизма повторной передачи тайм-аута.
- TCP имеет механизмы управления потоком и перегрузкой
UDP
UDP protocol – протокол, обеспечивающий передачу данных (датаграмм) без предварительного создания соединения между хостами. При отправке датаграмм нет уверенности в существовании получателя и его готовности к обмену. Сетевой протокол UDP не обеспечивает также упорядочивание датаграмм при получении. Он используется приложениями для которых существенное значение имеет время доставки, когда нет возможности ждать задержавшиеся или запрашивать потерянные пакеты, например, в системах реального времени. Датаграммы могут доставляться не в заданном порядке, дублироваться или вовсе не доставляться. Поэтому протокол UDP называют «ненадёжным протоколом датаграмм».
Приложения, использующие протокол UDP не чувствительны к потерям данных, нарушению порядка получения датаграмм и дублированию. При этом они могут использовать механизмы обеспечения надёжности на прикладном уровне.
Tcp Udp отличия
Давайте рассмотрим основные отличия tcp от udp.
- TCP гарантирует доставку пакетов данных в неизменных виде, последовательности и без потерь, UDP ничего не гарантирует.
- TCP нумерует пакеты при передаче, а UDP нет
- TCP работает в дуплексном режиме, в одном пакете можно отправлять информацию и подтверждать получение предыдущего пакета.
- TCP требует заранее установленного соединения, UDP соединения не требует, у него это просто поток данных.
- UDP обеспечивает более высокую скорость передачи данных.
- TCP надежнее и осуществляет контроль над процессом обмена данными.
- UDP предпочтительнее для программ, воспроизводящих потоковое видео, видеофонии и телефонии, сетевых игр.
- UPD не содержит функций восстановления данных
Примерами UDP приложений, например можно привести, передачу DNS зон, в Active Directory, там не требуется надежность
Очень часто такие вопросы любят спрашивать на собеседованиях, так, что очень важно знать tcp и udp отличия
Заголовок UDP
- 16 битный порт источника > Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
- 16 битный порт назначения > Номер порта назначения
- 16 битная длина UDP > Длина сообщения, включая заголовок и данные.
- 16 битная контрольная сумма > Контрольная сумма заголовка и данных для проверки
Заголовок TCP
- 16 битный порт источника > Номер порта источника
- 16 битный порт назначения > Номер порта назначения
- 32 битный последовательный номер > Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику.
- 32 битный номер подтверждения > Если установлен бит АСК поля «Управление», в данном поле содержит следующий ожидаемый последовательный номер.
- 4 бита длина заголовка > Информация о начале пакета данных.
- резерв > Резервируются для будущего использования.
- 16 битная контрольная сумма > Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет.
- 16 битный указатель срочности > В этом поле целевое устройство получает информацию о срочности данных.
- Параметры > Необязательные значения, которые указываются при необходимости.
Размер окна позволяет экономить трафик, рассмотрим когда его значение равно 1, тут на каждый отправленный ответ, отправитель ждет подтверждения, не совсем рационально.
При размере окна 3, отправитель отправляет уже по 3 кадра, и ждет от 4, который подразумевает, что все три кадра у него есть, +1.
Надеюсь у вас теперь есть представления об отличиях tcp udp протоколов.
Материал сайта pyatilistnik.org
Преимущества UDP
По сравнению с TCP UDP имеет следующие преимущества:
-
Нет установки соединения. UDP является протоколом без организации соединений, поэтому он освобождает от накладных расходов, связанных с установкой соединений. Поскольку UDP не пользуется сигналами квитирования, то задержек, вызванных установкой соединений, также удается избежать. Именно поэтому DNS отдает предпочтение UDP перед TCP — DNS работала бы гораздо медленнее, если бы она выполнялась через TCP.
-
Скорость. UDP работает быстрее TCP. По этой причине многие приложения предпочитают не TCP, a UDP. Те же средства, которые делают TCP более устойчивым (например сигналы квитирования), замедляют его работу.
-
Топологическое разнообразие. UDP поддерживает взаимодействия «один с одним» и «один с многими», в то время как TCP поддерживает лишь взаимодействие «один с одним».
-
Накладные расходы. Работа с TCP означает повышенные накладные расходы, издержки, налагаемые UDP, существенно ниже. TCP по сравнению с UDP использует значительно больше ресурсов операционной системы, и, как следствие, в таких средах, где серверы одновременно обслуживают многих клиентов, широко используют UDP.
-
Размер заголовка. Для каждого пакета заголовок UDP имеет длину всего лишь восемь байтов, в то время как TCP имеет 20-байтовые заголовки, и поэтому UDP потребляет меньше пропускной способности сети.
Недостатки UDP
По сравнению с TCP UDP имеет следующие недостатки:
-
Отсутствие сигналов квитирования. Перед отправкой пакета UDP, отправляющая сторона не обменивается с получающей стороной квитирующими сигналами. Следовательно, у отправителя нет способа узнать, достигла ли дейтаграмма конечной системы. В результате UDP не может гарантировать, что данные будут действительно доставлены адресату (например, если не работает конечная система или сеть).
Напротив, протокол TCP ориентирован на установление соединений и обеспечивает взаимодействие между подключенными к сети хостами, используя пакеты. В TCP применяются сигналы квитирования, позволяющие проверить успешность транспортировки данных.
-
Использование сессий. Ориентированность TCP на соединения поддерживается сеансами между хостами. TCP использует идентификатор сеанса, позволяющий отслеживать соединения между двумя хостами. UDP не имеет поддержки сеансов из-за своей природы, не ориентированной на соединения.
-
Надежность. UDP не гарантирует, что адресату будет доставлена только одна копия данных. Чтобы отправить конечной системе большой объем данных, UDP разбивает его на небольшие части. UDP не гарантирует, что эти части будут доставлены по назначению в том же порядке, в каком они создавались в источнике. Напротив, TCP вместе с номерами портов использует порядковые номера и регулярно отправляемые подтверждения, гарантирующие упорядоченную доставку данных.
-
Безопасность. TCP более защищен, чем UDP. Во многих организациях брандмауэры и маршрутизаторы не пропускают пакеты UDP. Это связано с тем, что хакеры могут воспользоваться портами UDP, не устанавливая явных соединений.
-
Управление потоком. В UDP управление потоком отсутствует, в результате плохо спроектированное UDP-приложение может захватить значительную часть пропускной способности сети.
Приложения
Многие ключевые интернет-приложения используют 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, а это означает, что общее время установления соединения сокращается.
TCP— Transmission Control Protocol
Обмен данными, ориентированный на соединения, может использовать надежную связь, для обеспечения которой протокол уровня 4 посылает подтверждения о получении данных и запрашивает повторную передачу, если данные не получены или искажены. Протокол TCP использует именно такую надежную связь. TCP используется в таких прикладных протоколах, как HTTP, FTP, SMTP и Telnet.
Протокол TCP требует, чтобы перед отправкой сообщения было открыто соединение. Серверное приложение должно выполнить так называемое пассивное открытие (passive open), чтобы создать соединение с известным номером порта, и, вместо того чтобы отправлять вызов в сеть, сервер переходит в ожидание поступления входящих запросов. Клиентское приложение должно выполнить активное открытие (active open), отправив серверному приложению синхронизирующий порядковый номер (SYN), идентифицирующий соединение. Клиентское приложение может использовать динамический номер порта в качестве локального порта.
Сервер должен отправить клиенту подтверждение (ACK) вместе с порядковым номером (SYN) сервера. В свою очередь клиент отвечает АСК, и соединение устанавливается.
После этого может начаться процесс отправки и получения сообщений. При получении сообщения в ответ всегда отправляется сообщение АСК. Если до получения АСК отправителем истекает тайм-аут, сообщение помещается в очередь на повторную передачу.
Поля заголовка TCP перечислены в следующей таблице:
Поле | Длина | Описание |
---|---|---|
Порт источника | 2 байта | Номер порта источника |
Порт назначения | 2 байта | Номер порта назначения |
Последовательный номер | 4 байта | Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику. |
Номер подтверждения | 4 байта | Если установлен бит АСК поля «Управление», в данном поле содержится следующий ожидаемый последовательный номер. |
Смещение данных | 4 бита | Информация о начале пакета данных. |
Резерв | 6 битов | Резервируются для будущего использования. |
Управление | 6 битов | Биты управления содержат флаги, указывающие, верны ли поля подтверждения (АСК), указателя срочности (URG), следует ли сбрасывать соединение (RST), послан ли синхронизирующий последовательный номер (SYN) и т. д. |
Размер окна | 2 байта | В этом поле указывается размер приемного буфера. Используя подтверждающие сообщения, получатель может информировать отправителя о максимальном размере данных, которые тот может отправить. |
Контрольная сумма | 2 байта | Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет. |
Указатель срочности | 2 байта | В этом поле целевое устройство получает информацию о срочности данных. |
Опции | переменная | Необязательные значения, которые указываются при необходимости. |
Дополнение | переменная | В поле дополнения добавляется столько нулей, чтобы заголовок заканчивался на 32-битной границе. |
TCP — это сложный, требующий больших затрат времени протокол, что объясняется его механизмом установления соединения, но он берет на себя заботу о гарантированной доставке пакетов, избавляя нас от необходимости включать эту функциональную возможность в прикладной протокол.
Протокол TCP имеет встроенную возможность надежной доставки. Если сообщение не отправлено корректно, мы получим сообщение об ошибке. Протокол TCP определен в RFC 793.
Практика¶
1. Напишите функции для передачи данных с помощью модели TCP/IP от клиента сети.
Каждая функция должна имитировать работу одного из уровней передачи данных.
Используйте заготовку кода ниже:
''' 4 уровень, функция application() - отвечает за формат данных, их шифрование input функции - данные, которые хотим отправить по сети, протокол данных ('SMTP','HTTP','FTP') output: данные + информация про формат данных и шифрование ''' def application (data, protocol): ... ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку input: результат работы функции application(), протокол транспортировки данных ('TCP', 'UDP') output: данные + информация про транспортировку''' def transport(data, protocol): ... ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные input: результат работы функции transport() output: данные + информация про адресата и маршрут доставки''' def internet(data): ... '''1 уровень, функция network_interface - отвечает за соединение с сетью input: результат работы функции internet(), информация о соединении output: кортеж из 2 значений: 1. данные, преобразованные в бинарный формат 2. информация о типе соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection")''' def network_interface (data, connection): ... data = '01101' print (data) data_app = application(data,'SMTP') print ('application level - ', data_app) data_transport = transport (data_app,'TCP') print ('transport level - ', data_transport) data_ip = internet (data_transport) print ('internet level - ', data_ip) data_from_network = network_interface (data_ip,'Wi-Fi') print ('network_interface level - ', data_from_network)
2. Напишите функции для получения данных из сети клиентом с помощью модели TCP/IP.
Каждая функция должна имитировать работу одного из уровней передачи данных.
Используйте заготовку кода ниже, учтите потери данных:
'''1 уровень, функция network_interface - отвечает за соединение с сетью передаём в функцию 2 аргумента: 1 аргумент, data - это данные в виде бинарного числа 2 аргумент, connection - это тип соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection") возвращаем: - если удалось установить соединение - то кортеж из 2 значений: данные в виде строки из нулей и единиц и тип соединения - если не удалось установить соединение, то строку "No connection"''' def network_interface(data, connection): ... ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные передаём в функцию результат работы функции network_interface() возвращаем данные в виде строки, если данные переданы в кортеже и адресованы нам, иначе - передаём None''' def internet(data): ... ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку передаём в функцию результат работы функции internet() возвращаем: - если c предыдущего уровня получены данные, то формируем кортеж из 2 значений: данные, протокол передачи - None - если данные не получены''' def transport(data): ... ''' 4 уровень, функция application() - отвечает за формат данных, их расшифровку передаём в функцию результат работы функции transport() возвращаем: ''' def application (data): ... data = 0b110110111 print (bin(data)) data_from_network = network_interface (data,1) print ('network_interface level - ', data_from_network) data_ip = internet (data_from_network) print ('internet level - ', data_ip) data_transport = transport (data_ip) print ('transport level - ', data_transport) data_app = application(data_transport) print ('application level - ', data_app)
Сравнение UDP и TCP
Протокол управления передачей — это протокол, ориентированный на установление соединения и требующий квитирования для установки сквозной связи. Как только соединение установлено, пользовательские данные могут быть отправлены двунаправленно по соединению.
- Надежный — TCP управляет подтверждением сообщений, повторной передачей и тайм-аутом. Сделано несколько попыток доставить сообщение. Если данные будут потеряны по пути, данные будут отправлены повторно. В TCP либо отсутствуют недостающие данные, либо, в случае нескольких тайм-аутов, соединение разрывается.
- Упорядоченный — если по соединению последовательно отправляются два сообщения, первое сообщение сначала достигнет принимающего приложения. Когда сегменты данных прибывают в неправильном порядке, TCP буферизует неупорядоченные данные до тех пор, пока все данные не будут должным образом переупорядочены и доставлены в приложение.
- Heavyweight — TCP требует трех пакетов для установки сокетного соединения, прежде чем какие-либо пользовательские данные могут быть отправлены. TCP обеспечивает надежность и контроль перегрузки .
- Потоковая передача — данные читаются как поток байтов , отличительные признаки не передаются на границы сигнального сообщения (сегмента).
Протокол дейтаграмм пользователя — это более простой протокол без установления соединения на основе сообщений . Протоколы без установления соединения не устанавливают выделенное сквозное соединение. Связь достигается путем передачи информации в одном направлении от источника к месту назначения без проверки готовности или состояния получателя.
- Ненадежный — при отправке сообщения UDP нельзя узнать, достигнет ли оно места назначения; он мог потеряться по пути. Нет концепции подтверждения, повторной передачи или тайм-аута.
- Не упорядочено — если два сообщения отправлены одному и тому же получателю, порядок их доставки не может быть гарантирован.
- Легковесный — сообщения не упорядочиваются, не отслеживаются соединения и т. Д. Это очень простой транспортный уровень, разработанный поверх IP.
- Датаграммы — пакеты отправляются индивидуально и проверяются на целостность по прибытии. Пакеты имеют определенные границы, которые соблюдаются при получении; операция чтения в сокете-получателе даст все сообщение в том виде, в котором оно было изначально отправлено.
- Нет контроля перегрузки — UDP сам по себе не избегает перегрузки. Меры по контролю за перегрузкой должны быть реализованы на уровне приложений или в сети.
- Широковещательная рассылка — протокол UDP не требует установления соединения — отправленные пакеты могут быть адресованы для приема всеми устройствами в подсети.
- Многоадресная рассылка — поддерживается режим многоадресной рассылки, при котором один пакет дейтаграммы может автоматически маршрутизироваться без дублирования группе подписчиков.
UDP заголовок
На рисунке показаны поля, присутствующие в UDP заголовке.
- Порт отправителя — в этом поле указывается номер порта отправителя. Предполагается, что это значение задает порт, на который при необходимости будет посылаться ответ. В противном же случае, значение должно быть равным 0. Если хостом-источником является клиент, то номер порта будет, скорее всего, эфемерным. Если источником является сервер, то его порт будет одним из «хорошо известных».
- Порт получателя — это поле обязательно и содержит порт получателя. Аналогично порту отправителя, если клиент — хост-получатель, то номер порта эфемерный, иначе (сервер — получатель) это «хорошо известный порт».
- Длина дейтаграммы — поле, задающее длину всей дейтаграммы (заголовка и данных) в байтах. Минимальная длина равна длине заголовка — 8 байт. Теоретически, максимальный размер поля — 65535 байт для UDP-дейтаграммы (8 байт на заголовок и 65527 на данные). Фактический предел для длины данных при использовании IPv4 — 65507 (помимо 8 байт на UDP-заголовок требуется еще 20 на IP-заголовок).
- Контрольная сумма — поле контрольной суммы используется для проверки заголовка и данных на ошибки. Если сумма не сгенерирована передатчиком, то поле заполняется нулями.
Рассмотрим структуру заголовка UDP с помощью сетевого анализатора Wireshark:
Что такое маска адреса (подсеть)
Понятие подсети введено, чтобы можно было выделить часть IP-адресов одной организации, часть другой и тд. Подсеть представляет собой диапазон IP-адресов, которые считаются принадлежащими одной локальной сети. При работе в локальной сети информация пересылается непосредственно получателю. Если данные предназначены компьютеры с IP-адресом, не принадлежащим локальной сети, то к ним применяются специальные правила для вычисления маршрута для пересылки из одной сети в другую.
Маска — это параметр, который сообщает программному обеспечению о том, сколько компьютеров объединено в данную группу (подсеть). Маска адреса имеет такую же структуру как и сам IP-адрес: это набор из четырех групп чисел, каждое из которых может быть в диапазоне от 0 до 255. При этом, чем меньше значение маски, тем больше компьютеров объединено в данную подсеть. Для сетей небольших компаний маска обычно имеет вид 255.255.255.x (например, 255.255.255.224). Маска сети присваивается компьютеру одновременно с IP-адресом. Так, например, сеть 192.168.0.0 с маской 255.255.255.0 может содержать в себе компьютеры с адресами от 192.168.0.1 до 192.168.254. А сеть 192.168.0.0 с маской 255.255.255.128 допускает адреса от 192.168.0.1 до 192.168.0.127. Думаю, смысл понятен. Как правило сети с небольшим возможным числом компьютеров используются провайдерами с целью экономии IP-адресов. Например, клиенту, может быть назначен адрес с маской 255.255.255.252. Такая подсеть содержит в себе только два компьютера.
После того как компьютер получил IP-адрес и ему стало известно значение маски подсети, программа может начать работу в данной локальной подсети. Однако же, чтобы обмениваться информацией с другими компьютерами в глобальной сети, необходимо знать правила, куда пересылать информацию для внешней сети. Для этого служит такая характеристика как адрес шлюза (Gateway).
Выводы
UDP – протокол, который обеспечивает высокую скорость отправки пакетов данных, но без гарантии их доставки. Если для конечного пользователя важна надежность доставки с сохранением порядка отправки данных, придется переходить на использование протокола TCP. Применение протокола UDP актуально, если проводится групповая и широковещательная передача данных. Вот почему он пользуется большой популярностью в области потокового интернет-видео, а также в игровой индустрии.
Пожалуйста, оставляйте свои мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, отклики, подписки, лайки!
Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, подписки, дизлайки, отклики, лайки огромное вам спасибо!
АРАлина Рыбакавтор