Протокол tcp

Документы стандартов

  • RFC   , стандарт 64, RTP: транспортный протокол для приложений реального времени
  • RFC   , Standard 65, профиль RTP для аудио- и видеоконференций с минимальным контролем
  • RFC   , Регистрация типа носителя для форматов полезной нагрузки RTP
  • RFC   , Регистрация типа носителя для форматов полезной нагрузки в профиле RTP для аудио- и видеоконференций
  • RFC   , Таксономия семантики и механизмов для источников протокола передачи в реальном времени (RTP)
  • RFC   , формат полезной нагрузки RTP для 12-битного аудио DAT и 20- и 24-битного линейно дискретизированного аудио
  • RFC   , формат полезной нагрузки RTP для видео H.264
  • RFC   , Формат полезной нагрузки RTP для транспортировки элементарных потоков MPEG-4
  • RFC   , формат полезной нагрузки RTP для аудио / визуальных потоков MPEG-4
  • RFC   , формат полезной нагрузки RTP для видео MPEG1 / MPEG2
  • RFC   , формат полезной нагрузки RTP для несжатого видео
  • RFC   , формат полезной нагрузки RTP для MIDI
  • RFC   , Руководство по внедрению RTP MIDI
  • RFC   , формат полезной нагрузки RTP для высокоэффективного кодирования видео (HEVC)

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

Для адресации на транспортном уровне используются порты. Это просто число от 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 адресов, но и портов, никакой путаницы не будет.

Транспортные протоколы

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

  • ATP (Apple
    Talk
    Protocol
    – Транзакционный протокол Apple
    Talk)
    и NBP (Name
    Binding
    Protocol
    – Протокол связывания имен). Сеансовый
    и транспортный протоколы Apple
    Talk.

  • NetBIOS
    (
    Базовая
    сетевая система ввода вывода).
    NetBIOS
    Устанавливает соединение между
    компьютерами, а NetBEUI
    предоставляет услуги передачи данных
    для этого соединения.

  • SPX (Sequenced
    Packet
    eXchange
    – Последовательный обмен пакетами) в
    NWLink.Протокол
    Novel
    NetWare,
    используемый для обеспечения доставки
    данных.

  • TCP (Transmission
    Control
    Protocol
    – Протокол управления передачей).Протокол
    стека TCP/IP, отвечающий за надежную
    доставку данных.

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

  • Дуглас Э. Комер . Межсетевое взаимодействие с 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. 

HTTP работают в текстовом режиме, нам необходимо подключиться к веб-серверу, например www.zvondozvon.ru к порту 80 по протоколу TCP. Дальше мы пишем запрос, используем метод GET хотим получить ресурс /tehnologii/protokoli и указываем версию протокола по которой мы хотим работать HTTP 1.1. Так как мы используем версию 1.1 нам необходимо указать заголовок host, доменное имя сервера с которым мы работаем www.zvondozvon.ru, этого вполне достаточно для того чтобы веб-сервер нам ответил. 

Ответ веб-сервера начинается со статуса 200 ok, обработка запроса произошла успешно, также вначале указываются версия протокола, которая используется HTTP 1.1. Затем идут несколько заголовков реализации веб-сервера nginx, тип передаваемой страницы текста html кодировка utf-8, длина страницы 5161 байт, также здесь могут идти другие заголовки, которые вам передал сервер. 

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

Продолжение про протокол HTTP читайте в статье постоянное соединение и кэширование протокола HTTP.

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

Соединение TCP

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

Задачи соединения

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

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

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

Получатель в ответ передаёт сообщение SYN, куда включает подтверждение получения предыдущего сообщения ACK от слова acknowledge и порядковый номер байта, который он ожидает 7538, потому что на предыдущем этапе был получен байт с номером 7537.

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

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

Разрыв соединения в TCP

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

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

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

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

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

Реализации

Набор интернет-протоколов не предполагает наличия какой-либо конкретной аппаратной или программной среды. Для этого требуется только наличие аппаратного и программного обеспечения, способного отправлять и получать пакеты в компьютерной сети. В результате пакет был реализован практически на каждой вычислительной платформе. Минимальная реализация TCP / IP включает в себя следующее: Интернет-протокол (IP), протокол разрешения адресов (ARP), протокол управляющих сообщений Интернета (ICMP), протокол управления передачей (TCP), протокол дейтаграмм пользователя (UDP) и управление группами Интернета. Протокол (IGMP). В дополнение к IP, ICMP, TCP, UDP, Интернет-протокол версии 6 требует протокола обнаружения соседей (NDP), ICMPv6 и IGMPv6 и часто сопровождается интегрированным уровнем безопасности IPSec .

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

Уникальные реализации включают облегченный TCP / IP , стек с открытым исходным кодом , разработанный для встроенных систем , и KA9Q NOS , стек и связанные протоколы для любительских систем пакетной радиосвязи и персональных компьютеров, подключенных через последовательные линии.

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

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

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

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

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

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

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

AIMD

В TCP для определения размера окна перегрузки используется метод аддитивного увеличения, мультипликативного уменьшения. Суть метода заключается в том, что при получении каждого подтверждения, мы прибавляем к размеру окна некоторые значения, как правило это размер одного сегмента TCP, а если перегрузка произошла, то мы умножаем размер окна на некоторые значения. Как правило это 1/2, то есть в TCP при перегрузке, размер окна уменьшается в два раза.

  • Где a — максимальный размер сегмента (MSS);
  • b- 1/2.

 Размер окна AIMD

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

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

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

Двумя наиболее популярными протоколами транспортного уровня являются протоколы TCP и UDP:

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

Тем не менее UDP является быстрым протоколом и обеспечивает сохранение границ сообщений.

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

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

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

Размер окна в заголовке TCP

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

Размер окна

Рассмотрим, как используются это поле на практике. Предположим, что размер буфера у получателя равен восьми сегментам. Отправитель передает один сегмент он записывается в буфер, получатель передает подтверждение получение этого сегмента. В подтверждение, кроме номера следующего ожидаемого байта, указывается также размер окна 10 220 что соответствует семи сегментам (7*1460). Мы используем сеть Ethernet в который размер кадра 1500 байт, если вычтем заголовок TCP 20 байт и IP 20 байт, размер данных сегмента получится 1460 байт.

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

Предположим, что приложение занято какими-то делами и ничего из буфера не читает.

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

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

Например, сегмент с новым размером окна мог потеряться по сети, приложение могло прочитать данные, но по каким-то причинам транспортная подсистема это еще не обнаружила, либо у получателя произошла какая-то критическая ошибка и соединение уже разорвано. В ответ на сегмент Zero Window Probe получатель может отправить сообщение, что размер окна по-прежнему равен нулю, это значит отправитель должен ждать либо новый размер окна, значит отправитель может передавать данные.

Что такое TCP/IP

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

Полностью пишется, как, Transmission Control Protocol/Internet Protocol, что в переводе означает — Протокол управления передачи/Интернета.

Позволяет взаимодействовать между собой устройствам, находящимся в разных сетях и с различными операционными системами, например, между Windows, Mac OS, Linux и т.д.

Название данного стека — набора правил сложилось из основных двух:

  • Протокол IP — берет на себя задачу по адресации, определяет, где в передаваемых данных: адрес, содержимое.
  • Протокол TCP — обеспечивает и контролирует надежную передачу информации и ее целостность.

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

Как работает TCP/IP — принцип работы

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

Так обмениваются между собой программы по сети:

Программа 1 — отправитель:
IP адрес: 192.168.0.32
Порт: 2054

Программа 2 — получатель:
IP адрес: 192.168.0.34
Порт: 2071

Пересылаемые данные пакета:
— — —

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

Стек протоколов TCP/IP

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

1. Прикладной / Для приложений. Это: HTTP, SMTP, DNS, FTP и т.д. Т.е. Веб, почта, передача файлов и прочее.2. Транспортный. Это: TCP, UPD и т.д. Отвечает за связь между компьютерами и за доставку данных.3. Сетевой (межсетевой). IP, IGMP и т.д. Отвечает за адресацию.4. Канальный / Сетевые интерфейсы. Это: Ethernet, Wi-Fi, DSL.

На этом стеке и реализовано все взаимодействие пользователей в IP сетях. Также, существуют и другие стеки: OSI, IPX/SPX, IPX/SPX.

В заключение

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

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

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

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

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

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

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

UDP

UDP protocol – протокол, обеспечивающий передачу данных (датаграмм) без предварительного создания соединения между хостами. При отправке датаграмм нет уверенности в существовании получателя и его готовности к обмену. Сетевой протокол UDP не обеспечивает также упорядочивание датаграмм при получении. Он используется приложениями для которых существенное значение имеет время доставки, когда нет возможности ждать задержавшиеся или запрашивать потерянные пакеты, например, в системах реального времени. Датаграммы могут доставляться не в заданном порядке, дублироваться или вовсе не доставляться. Поэтому протокол UDP называют «ненадёжным протоколом датаграмм».

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

Что такое протоколы TCP/IP

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

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

Навигация

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

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

Adblock
detector