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

Механизм действия протокола

Статусы HTTP

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

  • Статусы, которые начинаются на единицу (1ХХ), используются для передачи информационных сообщений.
  • Статусы, которые начинаются на двойку (2ХХ), говорят о том, что запрос выполнен успешно, например наиболее популярный статус (200 OK), означает что страница найдена и она передается клиенту.
  • Статусы, которые начинаются на тройку (3ХХ), говорят о перенаправлении, например статус 301 — постоянное перенаправление, говорит о том что страница была перемещена на другой адрес и все последующие запросы должны передаваться на этот новый адрес. Статус 307 тоже говорит о перенаправлении, но временном, сейчас доступ к странице можно получить по другому адресу, но через некоторое время необходимо снова обращаться к исходному адресу.
  • Статусы, которые начинаются с четверки (4ХХ), говоря о том, что произошла какая-то ошибка на стороне клиента. Чаще всего встречается ошибка 404 — страница, которую запросил клиент не найдена на сервере. Также возможна ошибка 403 доступ к ресурсу, который запросил клиент запрещен и другие ошибки. 
  • Статусы начинающиеся на пять (5ХХ) говорят об ошибке на стороне сервера, например 500 — внутренняя ошибка сервера. 

Заголовок сегмента TCP

Структура заголовка

Бит

0 — 3

4 — 9

10 — 15

16 — 31

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

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

32

Порядковый номер

64

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

96

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

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

Флаги

Размер Окна

128

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

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

160

Опции (необязательное, но используется практически всегда)

160/192+

Данные

Порт источника, Порт назначения

Эти 16-битные поля содержат номера портов — числа, которые определяются по специальному списку.

Порт источника идентифицирует приложение клиента, с которого отправлены пакеты. Ответные данные передаются клиенту на основании этого номера.

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

Порядковый номер

Порядковый номер выполняет две задачи:

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

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

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

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

Длина заголовка (смещение данных)

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

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

Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль.
Из них два (5-й и 6-й) уже определены:

  • CWR (Congestion Window Reduced) — Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтобы указать, что получен пакет с установленным флагом ECE (RFC 3168)
  • ECE (ECN-Echo) — Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

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

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

URG — поле «Указатель важности» задействовано (Urgent pointer field is significant)

ACK — поле «Номер подтверждения» задействовано (Acknowledgement field is significant)

PSH — (Push function) инструктирует получателя протолкнуть данные, накопившиеся в приёмном буфере, в приложение пользователя

RST — оборвать соединения, сбросить буфер (очистка буфера) (Reset the connection)

SYN — синхронизация номеров последовательности (Synchronize sequence numbers)

FIN (final, бит) — флаг, будучи установлен, указывает на завершение соединения (FIN bit used for connection termination).

Размер окна

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

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

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

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

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

Поле принимается во внимание только для пакетов с установленным флагом URG.

Опции

Могут применяться в некоторых случаях для расширения протокола. Иногда используются для тестирования. На данный момент в опции практически всегда включают 2 байта NOP (в данном случае 0x01) и 10 байт, задающих timestamps. Вычислить длину поля опции можно через
значение поля смещения.

Анализ

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

Некоторые протоколы транспортного уровня, например TCP, но не UDP, поддерживают виртуальные каналы , т. Е. Обеспечивают связь с установлением соединения через базовую сеть с пакетной датаграммой . Байт-поток доставляется, скрывая связь в пакетном режиме для процессов приложения. Это включает в себя установление соединения, разделение потока данных на пакеты, называемые сегментами, нумерацию сегментов и переупорядочивание данных вне очереди.

Наконец, некоторые протоколы транспортного уровня, например TCP, но не UDP, обеспечивают сквозную надежную связь, т. Е. Устранение ошибок с помощью кода обнаружения ошибок и протокола автоматического запроса на повторение (ARQ). Протокол ARQ также обеспечивает управление потоком , которое может сочетаться с предотвращением перегрузки .

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

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

Многие сети, не основанные на IP, такие как X.25 , Frame Relay и ATM , реализуют связь с установлением соединения на уровне сети или канала передачи данных, а не на транспортном уровне. В X.25 в модемах телефонных сетей и в системах беспроводной связи надежная связь между узлами реализована на более низких уровнях протокола.

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

Архитектурное решение

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 требует явного указания максимального размера сегмента (MSS) в случае, если виртуальное соединение осуществляется через сегмент сети, где максимальный размер блока (MTU) менее, чем стандартный MTU Ethernet (1500 байт).

В протоколах туннелирования, таких как GRE, IPIP, а также PPPoE MTU туннель меньше, чем стандартный, поэтому сегмент TCP максимального размера имеет длину пакета больше, чем MTU. Это приводит к фрагментации и уменьшению скорости передачи полезных данных.
Если на каком-либо узле фрагментация запрещена, то со стороны пользователя это выглядит как «зависание» соединений. При этом «зависание» может происходить в произвольные моменты времени, а именно тогда, когда отправитель использовал сегменты длиннее допустимого размера. Для решения этой проблемы на маршрутизаторах применяются правила Firewall-а, добавляющие параметр MSS во все пакеты, инициирующие соединения, чтобы отправитель использовал сегменты допустимого размера.

MSS может также управляться параметрами операционной системы.

Обнаружение ошибок при передаче данных

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

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

Атаки на протокол

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

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

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

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

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

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

Стек протокола IP.

Набор протоколов Internet разделяется на несколько уровней; каждый уровень предоставляет определенный набор функциональных возможностей (см. рисунок 1).

Рассмотрим уровни стека протокола IP, начиная с нижнего:

  • Канальный уровень предоставляет физический интерфейс к среде передачи (например, Ethernet).
  • Сетевой уровень управляет передачей пакетов по сети, обеспечивая их доставку получателю (этот процесс называют маршрутизацией).
  • Транспортный уровень обеспечивает управление потоком пакетов между двумя хостами в интересах прикладного уровня. Он также предоставляет приложению конечную точку взаимодействия, называемую портом.
  • Наконец, прикладной уровень обеспечивает представление данных, передаваемых через сокет. Эти данные могут, например, состоять из сообщений электронной почты, передаваемых по протоколу SMTP, или Web-страниц, передаваемых по протоколу HTTP.

В качестве интерфейса к протоколу транспортного уровня все протоколы прикладного уровня используют уровень сокетов. Интерфейс Sockets API был разработан для операционной системы UNIX Калифорнийским университетом в Беркли (UC Berkeley).

Перед рассмотрением функционирования протокола SCTP вспомним, как работают традиционные протоколы транспортного уровня.

Библиография

  • Дуглас Э. Комер . Межсетевое взаимодействие с TCP / IP — принципы, протоколы и архитектура . ISBN  86-7991-142-9
  • Джозеф Г. Дэвис и Томас Ф. Ли. Протоколы и службы TCP / IP Microsoft Windows Server 2003 . ISBN  0-7356-1291-9
  • Форузан, Бехруз А. (2003). Пакет протоколов TCP / IP (2-е изд.). Макгроу-Хилл. ISBN 978-0-07-246060-5.
  • Крейг Хант Администрирование сети TCP / IP . О’Рейли (1998) ISBN  1-56592-322-7
  • Мафер, Томас А. (1999). Основы интеллектуальной собственности . Прентис Холл. ISBN 978-0-13-975483-8.
  • Иэн Маклин. Windows (R) 2000 TCP / IP Черная книга . ISBN  1-57610-687-X
  • Ajit Mungale Pro .NET 1.1 Сетевое программирование . ISBN  1-59059-345-6
  • В. Ричард Стивенс . Иллюстрированный TCP / IP, Том 1: Протоколы . ISBN  0-201-63346-9
  • У. Ричард Стивенс и Гэри Р. Райт. Иллюстрированный TCP / IP, Том 2: Реализация . ISBN  0-201-63354-X
  • В. Ричард Стивенс . Иллюстрированный TCP / IP, Том 3: TCP для транзакций , HTTP , NNTP и протоколы домена UNIX . ISBN  0-201-63495-3
  • Эндрю С. Таненбаум . Компьютерные сети . ISBN  0-13-066102-3

Структура пакета HTTP

Пакет HTTP состоит из 3 частей. Первая часть это запрос, либо со стороны клиента, либо от статус ответа со стороны сервера. Например, запрос GET означает, что клиент просит передать ему web-страницу, которая находится на сервере вот по такому пути GET/tehnologii/protokoli в ответ сервер пересылает статус выполнения операции код и символьное сообщение, например 200 OK. Это означает, что страница нашлась на сервере и сервер передает ее в теле сообщения.

Затем могут идти и заголовки, которых может быть несколько. В версии HTTP 1.0 заголовки были не обязательны, но в версии HTTP 1.1 в запросе обязательно использовать заголовок Host:www.zvondozvon.ru, где указываются доменное имя сервера, у которого вы хотите запросить веб-страницу. Это сделано из-за того, что на одном и том же IP-адресе, может работать несколько веб-сайтов и в web серверу необходимо знать с какого сайта вы хотите загрузить страницу. 

Также могут быть другие заголовки, например тип передаваемого сообщения в примере Content-Type: text/html; charset=utf-8, размер передаваемого сообщения Content-Length: 5161 байт. 

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

Мультиплексирование

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

Используя TCP Multiplexing, клиент может взаимодействовать с несколькими различными процессами приложения за один сеанс. Например, клиент запрашивает веб-страницу, которая, в свою очередь, содержит различные типы данных (HTTP, SMTP, FTP и т. Д.), Тайм-аут сеанса TCP увеличивается, и сеанс остается открытым на более длительное время, так что накладные расходы на трехстороннюю рукопожатие могут избегать.

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

Сервисы

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

  • Ориентированный на соединение связи : Это , как правило , легче приложение интерпретировать соединение как поток данных , а не иметь дело с основными соединительными меньше моделей, таких как дейтаграммы модель User Datagram Protocol (UDP) и в сети Интернет Протокол (IP).
  • Доставка в том же порядке: сетевой уровень обычно не гарантирует, что пакеты данных будут доставлены в том же порядке, в котором они были отправлены, но часто это желательная функция. Обычно это делается с помощью нумерации сегментов, когда получатель передает их приложению по порядку. Это может вызвать блокировку заголовка линии .
  • Надежность : пакеты могут быть потеряны во время транспортировки из-за перегрузки сети и ошибок. С помощью кода обнаружения ошибок , например контрольной суммы , транспортный протокол может проверить, не повреждены ли данные, и проверить правильность получения, отправив отправителю сообщение ACK или NACK . Схемы автоматического повторного запроса могут использоваться для повторной передачи потерянных или поврежденных данных.
  • Управление потоком : иногда необходимо управлять скоростью передачи данных между двумя узлами, чтобы не дать быстрому отправителю передать больше данных, чем может поддерживать принимающий буфер данных , что приведет к переполнению буфера. Это также можно использовать для повышения эффективности за счет уменьшения опустошения буфера .
  • Предотвращение перегрузки : контроль перегрузки может контролировать вход трафика в телекоммуникационную сеть, чтобы избежать перегрузки , пытаясь избежать превышения лимита подписки на любую из возможностей обработки или соединения промежуточных узлов и сетей и принимая меры по сокращению ресурсов, такие как снижение скорости отправки пакетов . Например, автоматические повторные запросы могут держать сеть в перегруженном состоянии; Этой ситуации можно избежать, добавив к управлению потоком предотвращение перегрузки, включая медленный старт . Это сохраняет потребление полосы пропускания на низком уровне в начале передачи или после повторной передачи пакета.
  • Мультиплексирование : порты могут предоставлять несколько конечных точек на одном узле. Например, имя на почтовом адресе представляет собой своего рода мультиплексирование и различает разных получателей одного и того же места. Каждое компьютерное приложение будет прослушивать информацию о своих портах, что позволяет использовать более одной сетевой службы одновременно. Он является частью транспортного уровня в модели TCP / IP , но является частью сеансового уровня в модели OSI.

Навигация

Управление скоростью передачи в TCP

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

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

Заголовок пакета

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

Заголовок пакета RTP
Смещения Октет 1 2 3
Октет Немного 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25 26 27 28 29 30 31 год
Версия п Икс CC M PT Последовательность чисел
4 32 Отметка времени
8 64 Идентификатор SSRC
12 96 Идентификаторы CSRC …
12 + 4 × СС 96 + 32 × СС Идентификатор заголовка расширения для конкретного профиля Длина заголовка расширения
16 + 4 × СС 128 + 32 × CC Заголовок расширения …

Заголовок RTP имеет минимальный размер 12 байтов. После заголовка могут присутствовать необязательные расширения заголовка. За ним следует полезная нагрузка RTP, формат которой определяется конкретным классом приложения. Поля в заголовке следующие:

  • Версия : (2 бита) Указывает версию протокола. Текущая версия — 2.
  • P (заполнение) : (1 бит) Используется для указания, есть ли дополнительные байты заполнения в конце пакета RTP. Заполнение может использоваться для заполнения блока определенного размера, например, в соответствии с требованиями алгоритма шифрования. Последний байт заполнения содержит количество добавленных байтов заполнения (включая его самого).
  • X (Расширение) : (1 бит) Указывает наличие заголовка расширения между заголовком и данными полезной нагрузки. Заголовок расширения зависит от приложения или профиля.
  • CC (счетчик CSRC) : (4 бита). Содержит количество идентификаторов CSRC (определенных ниже), следующих за SSRC (также определенным ниже).
  • M (Маркер) : (1 бит) Сигнализация, используемая на уровне приложения в зависимости от профиля. Если он установлен, это означает, что текущие данные имеют особое значение для приложения.
  • PT (Тип полезной нагрузки) : (7 бит). Указывает формат полезной нагрузки и, таким образом, определяет ее интерпретацию приложением. Значения зависят от профиля и могут быть присвоены динамически.
  • Порядковый номер : (16 бит) Порядковый номер увеличивается для каждого отправленного пакета данных RTP и должен использоваться приемником для обнаружения потери пакета и для обеспечения доставки вне очереди . Начальное значение порядкового номера должно быть рандомизировано, чтобы затруднить атаки с использованием известного открытого текста на безопасный транспортный протокол в реальном времени .
  • Отметка времени : (32 бита) Используется приемником для воспроизведения полученных отсчетов в соответствующее время и интервал. Когда присутствует несколько медиапотоков, метки времени могут быть независимыми в каждом потоке. Детализация времени зависит от приложения. Например, аудиоприложение, которое производит выборку данных каждые 125 мкс (8 кГц, обычная частота дискретизации в цифровой телефонии), будет использовать это значение в качестве своего тактового разрешения. Для видеопотоков обычно используется частота 90 кГц. Детализация часов — это одна из деталей, которая указывается в профиле RTP для приложения.
  • SSRC : (32 бита) Идентификатор источника синхронизации однозначно определяет источник потока. Источники синхронизации в рамках одного сеанса RTP будут уникальными.
  • CSRC : (32 бита каждый, количество записей указывается полем счетчика CSRC ) Идентификаторы вспомогательных источников перечисляют вспомогательные источники для потока, который был сгенерирован из нескольких источников.
  • Расширение заголовка : (необязательно, присутствие указывается полем Extension ) Первое 32-битное слово содержит идентификатор профиля (16 бит) и спецификатор длины (16 бит), который указывает длину расширения в 32-битных единицах, исключая 32 бита заголовка расширения. Далее следуют данные заголовка расширения.

Point-to-Point протоколы

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

У PPP есть два подвида — PPPoE (PPP по Ethernet) и PPPoA (PPP через асинхронный способ передачи данных — ATM), интернет-провайдеры часто их используют для DSL соединений.

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

Профили и форматы полезной нагрузки

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

Профиль определяет кодеки, используемые для кодирования данных полезной нагрузки, и их сопоставление с кодами формата полезной нагрузки в поле протокола Payload Type (PT) заголовка RTP. Каждый профиль сопровождается несколькими спецификациями формата полезной нагрузки, каждая из которых описывает транспортировку определенных закодированных данных. Примерами форматов полезной нагрузки звука являются G.711 , G.723 , G.726 , G.729 , GSM , QCELP , MP3 и DTMF , а примерами полезных данных видео — H.261 , H.263 , H.264 , H .265 и MPEG-1 / MPEG-2 . Отображение потоков аудио / видео MPEG-4 в пакеты RTP указано в RFC   , а полезные данные видео H.263 описаны в RFC   .

Примеры профилей RTP включают:

  • Профиль RTP для аудио и видео конференций с минимальным контролем ( RFC   ) определяет набор статических заданий типа полезной нагрузки, а также динамический механизм для отображения между форматом полезной нагрузки и значением СТ с помощью Session Description Protocol (SDP).
  • Secure в режиме реального времени Transport Protocol (SRTP) ( RFC   ) определяет профиль RTP , который обеспечивает криптографические услуги по передаче данных полезной нагрузки.
  • Экспериментальный профиль управляющих данных для RTP (RTP / CDP) для межмашинной связи.

Синдром узкого окна

Существует еще одна проблема при пересылке данных по каналам TCP, которая называется синдром узкого окна (silly window syndrome; Clark, 1982). Такого рода проблема возникает в том случае, когда данные поступают отправителю крупными блоками, а интерактивное приложение адресата считывает информацию побайтно. Предположим, что в исходный момент времени буфер адресата полон и передающая сторона знает об этом (window=0). Интерактивное приложение считывает очередной октет из TCP-потока, при этом TCP-агент адресата поcылает уведомление отправителю, разрешающее ему послать один байт. Этот байт будет послан и снова заполнит до краев буфер получателя, что вызовет отправку ACK со значением window=0. Этот процесс может продолжаться сколь угодно долго, понижая коэффициент использования канала ниже паровозного уровня.

Адресации. Порты

Для адресации на транспортном уровне используются порты. Это просто число от 1 до 65 535. Номера у процессов на одном хосте не должны повторяться, иначе мы не сможем понять к какому конкретно процессу отправить пришедший пакет.  

Записываются порты, следующим образом 192.168.1.3:80. Выделенные жирным это IP-адрес, а 80 — это порт. Чтобы в интернете подключиться к какому-нибудь сервису и к службе необходимо указать ip адрес и соответствующий порт. 

Типы портов

Если мы хотим подключиться к какому-нибудь сервису в интернете нам нужно знать не только ip адрес, но и порт. Поэтому договорились, что популярные сервисы будут работать на одних и тех же портах. Эти порты называются хорошо или широко известные порты 1-1024. 

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

Использование, как хорошо известных портов, так и зарегистрированных это просто договоренность. Например Web сервер может работать не только на 80 порту, но и на любом другом. Часто используется support номер 88 или 8080. При этом, когда вы подключаетесь к такому веб-серверу Вы должны указать порт на котором он работает. 

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

IP-адреса и порты

Рассмотрим пример сетевого взаимодействия с использованием ip адресов и портов. Есть сервер на котором работает web сервер на порту №80. И есть клиент, который хочет подключиться к этому веб серверу. 

Клиент открывает браузер, операционная система автоматически назначает ему порт 50298. Браузер выполняет соединение с веб сервером, запрашивает веб страницу. Web сервер отправляет ему эту страницу. 

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

Сигнал о перезагрузке

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

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

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

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

Adblock
detector