Протокол tcp простым и понятным языком

Руководство по общему оборудованию

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

Маршрутизатор

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

Переключатель

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

Мост

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

Ретранслятор

Расширение диапазона сигнала является основной функцией ретранслятора, который также называется «усилитель». Электрический импульс рассеивается на расстоянии по кабелям. Сигнал слабеет по мере его прохождения по Wi-Fi. Применяяя новый импульс электричества для передачи по кабелям и беспроводным сетям, он также ретранслирует сигналы. Это не требует программного обеспечения и является чисто физическим устройством без участия в протоколах.

TL;DR

HTTP (Hypertext Transfer Protocol) — прикладной протокол, с помощью которого сервер отдаёт странички нашему браузеру. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов. На картинке светильник на микроконтроллере с ОС Contiki на борту, в котором цвета задаются через браузер.

IPv6 | IPv4 | исходники

HTTP протокол текстовый и достаточно простой. Собственно вот так выглядит метод GET, посылаемый утилитой netcat на локальный IPv6 адрес сервера с лампочками:

~$ nc fe80::200:e2ff:fe58:b66b%mazko 80 <<EOF
GET /b HTTP/1.0

EOF

Метод HTTP (англ. HTTP Method) обычно представляет собой короткое английское слово, записанное заглавными буквами, чувствительно к регистру. Каждый сервер обязан поддерживать как минимум методы GET и HEAD. Кроме методов GET и HEAD, часто применяется методы POST, PUT и DELETE. Метод GET используется для запроса содержимого указанного ресурса, в нашем случае тут где путь /b отвечает за цвет (синий). Ответ сервера:

HTTP/1.0 200 OK
Server: Contiki/2.4 http://www.sics.se/contiki/
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Content-type: text/html

<html><head><title>Contiki RGB</title></head><body>
<p style='color:red;'>Red is <a href='/r'>OFF</a></p>
<p style='color:green;'>Green is <a href='/g'>OFF</a></p>
<p style='color:blue;'>Blue is <a href='/b'>ON</a></p>
</body></html>

Код состояния (у нас 200) является частью первой строки ответа сервера. Он представляет собой целое число из трёх цифр. Первая цифра указывает на класс состояния. За кодом ответа обычно следует отделённая пробелом поясняющая фраза на английском языке, которая разъясняет человеку причину именно такого ответа. В нашем случае сервер отработал без ошибок, всё пучком (ОК).

Как запрос, так и ответ содержат заголовки (каждая строка — отдельное поле заголовка, пара имя-значение разделена двоеточием). Заканчиваются заголовки пустой строкой, после чего могут идти данные.

Мой браузер отказывается открывать локальный IPv6-адрес, поэтому в прошивке микроконтроллера прописан дополнительный адрес и такой же префикс также нужно назначить виртуальному сетевому интерфейсу симулятора:

~$ sudo ip addr add abcd::1/64 dev mazko          # linux
~$ netsh interface ipv6 set address mazko abcd::1 # windows
~$ curl http://

Если curl отработал без ошибок, то ссылку можно спокойно открывать в браузере.

Проблемы сигнала «потеря сегмента»

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

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

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

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

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

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

Навигация

Маска подсети

Маска подсети выявляет из IP-адреса подсеть и номер хоста.

Например, IP-адрес имеет маску . В таком случае формат записи будет выглядеть так [192.168.38.2/24]. Число «24» – это количество бит в маске. Восемь бит равняется одному октету, который также может называться байтом.

Если подробнее, то маску подсети можно представить в двоичной системе счисления таким образом: . В ней имеется четыре октета, и запись состоит из «1» и «0». Если сложить количество единиц, то получим в сумме «24». К счастью, считать по единице не обязательно, ведь в одном октете – 8 значений. Видим, что три из них заполнены единицами, складываем и получаем «24».

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

Рассмотрим небольшой пример. Есть IP-адрес и маска подсети . Считаем и записываем: [192.168.46.2/24]. Теперь сопоставляем маску с IP-адресом. Те октеты маски, в которых все значения равны единице (255) оставляют соответствующие им октеты в IP-адресе без изменения. Если же в значении нули (0), то октеты в IP-адресе также становятся нулями. Таким образом, в значении адреса подсети получаем .

Контроль ошибок и контроль потока

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

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

Интернет-уровень

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

Интернет-уровень не различает различные протоколы транспортного уровня. IP передает данные для множества различных протоколов верхнего уровня . Каждый из этих протоколов идентифицируется уникальным номером протокола : например, протокол управляющих сообщений Интернета (ICMP) и протокол управления группами Интернета (IGMP) — это протоколы 1 и 2, соответственно.

Интернет-протокол является основным компонентом Интернет-уровня, и он определяет две системы адресации для идентификации сетевых узлов и определения их местоположения в сети. Исходная адресная система ARPANET и ее преемника, Интернет, — это Интернет-протокол версии 4 (IPv4). Он использует 32-битный IP-адрес и, следовательно, способен идентифицировать примерно четыре миллиарда хостов. Это ограничение было снято в 1998 году путем стандартизации протокола Интернета версии 6 (IPv6), в котором используются 128-битные адреса. Производственные реализации IPv6 появились примерно в 2006 году.

Транспортный уровень

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

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

Маршрутизация

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

Маршрутная информация, может быть:

  • Статической (маршрутные таблицы прописываются вручную)
  • Динамической (маршрутную информацию распространяют специальные протоколы)

Протоколы динамической маршрутизации:

  • RIP (Routing Information Protocol) – протокол передачи маршрутной информации, маршрутизаторы динамически создают маршрутные таблицы.
  • OSPF (Open Shortest Path First) – протокол “Открой кротчайший путь первым”, является внутренним протоколом маршрутизации.
  • IGP (Interior Gateway Protocols) – внутренние протоколы маршрутизации, распространяет маршрутную информацию внутри одной автономной системе.
  • EGP (Exterior Gateway Protocols) – внешние протоколы маршрутизации, распространяет маршрутную информацию между автономными системами.
  • BGP (Border Gateway Protocol) – протокол граничных маршрутизаторов. Протокол ICMP
  • ICMP (Internet Control Message Protocol) – расширение протокола IP, позволяет передавать сообщения об ошибке или проверочные сообщения. Другие служебные IP-протоколы
  • IGMP (Internet Group Management Protocol) – позволяет организовать многоадресную рассылку средствами IP.
  • RSVP (Resource Reservation Protocol) – протокол резервирования ресурсов. ARP (Address Resolution Protocol) – протокол преобразования IP-адреса и адреса канального уровня.

Транспортный уровень

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

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

На транспортном уровне работают два основных протокола: UDP и TCP.

Протокол надежной доставки сообщений TCP

TCP (Transfer Control Protocol) – протокол контроля передачи, протокол TCP применяется в тех случаях, когда требуется гарантированная доставка сообщений.

Первая и последняя версия TCP – RFC-793 (Transmission Control Protocol J. Postel Sep-01-1981).

Основные особенности:

  • Устанавливается соединение.
  • Данные передаются сегментами. Модуль TCP нарезает большие сообщения (файлы) на пакеты, каждый из которых передается отдельно, на приемнике наоборот файлы собираются. Для этого нужен порядковый номер (Sequence Number – SN) пакета.
  • Посылает запрос на следующий пакет, указывая его номер в поле “Номер подтверждения” (AS). Тем самым, подтверждая получение предыдущего пакета.
  • Делает проверку целостности данных, если пакет битый посылает повторный запрос.

    Длина заголовка – задается словами по 32бита.

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

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

Указатель срочности – указывает последний байт срочных данных, на которые надо немедленно реагировать.

URG – флаг срочности, включает поле “Указатель срочности”, если =0 то поле игнорируется.

ACK – флаг подтверждение, включает поле “Номер подтверждения, если =0 то поле игнорируется.

PSH – флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.

RST – флаг прерывания соединения, используется для отказа в соединении

SYN – флаг синхронизация порядковых номеров, используется при установлении соединения.

FIN – флаг окончание передачи со стороны отправителя

Формат заголовка

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

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

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

Например, байт 1000, байт 2460 или 3920. Если мы используем сеть Ethernet, то размер сегмента как правило составляет 1460 байт, чтобы с заголовком TCP и IP можно было поместиться в кадр Ethernet размером 1500 байт.

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

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

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

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

9 полей флагов

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

  • Флаги NS, CWR и ECE используются для управления перегрузкой.
  • Флаг URG  указывает на то, что в сегменте содержатся срочные данные, которые необходимо быстро передать приложению. Этот флаг используется совместно с полем указатель на срочные данные, который содержит адрес этих данных. Сейчас этот флаг и поле указатель на срочные данные не используются.
  • Флаг ACK используются, если в поле номер подтверждения записаны осмысленные данным, то есть для подтверждения принятой ранее информации.
  • Флаг PSH указывает, что полученные данные необходимо полностью сразу передать приложение без промежуточной записи в буфер, также как и флаг URG этот флаг сейчас не используется.
  • Флаги RST и FIN используются для разрыва соединений, а флаг SYN синхронизация, используется для установки соединения.

Размер окна

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

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

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

Параметры

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

Рассмотрим некоторые примеры параметров:

Параметры (Maximum Segment Size, MSS) максимальный размер сегмента, говорит о том сегмент какого размера может принять получатель, если используется Ethernet, то максимальный размер сегмента 1460 байт. Максимальный размер сегмента, задается отправителем и получателем при установке соединения.

Другой важный параметр это масштаб окна, поле размер окна в заголовке TCP позволяет указать максимальный размер доступных для получения байт 65535, но это маленький объем для современных высокоскоростных и территориально протяженных каналов. Если использовать размер окна такого размера то, скорость передачи данных будет низкая. Параметр масштаб окна позволяет увеличить размер окна до 1 ГБ.

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

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

Что такое 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.

В заключение

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

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

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

  • 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, отвечающий за надежную
    доставку данных.

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

  • 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)

Адресация

Для адресации в стеке протоколов TCP/IP используются три типа адресов:

  1. Локальные.
  2. Сетевые.
  3. Доменные имена.

Локальными называются MAC-адреса. Они используются для адресации в таких технологиях локальной сети как, например, Ethernet. В контексте TCP/IP слово «локальные» означает, что они действуют лишь в пределах подсети.

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

Доменные имена – это удобочитаемые адреса веб-сайтов в Интернете. Веб-сервера в сети Интернет доступны по публичному IP-адресу. Он успешно обрабатывается компьютерами, однако для людей представляется слишком неудобным. Для того чтобы избежать подобных сложностей, используются доменные имена, которые состоят из областей, называемых «доменами». Они располагаются в порядке строгой иерархии, от верхнего уровня к нижнему.

Домен первого уровня представляет конкретную информацию. Общие (.org, .net) не ограничены какими-либо строгими границами. Обратная ситуация — с локальными (.us, .ru). Они, как правило, привязаны территориально.

Домены низших уровней – это все остальное. Он может быть любого размера и содержать любое количество значений.

Например, «www.test.quiz.sg» – корректное доменное имя, где «sg» — локальный домен первого (верхнего) уровня, «quiz.sg» — домен второго уровня, «test.quiz.sg» — домен третьего уровня. Доменные имена также могут называться DNS-именами.

DNS (Domain Name System) устанавливает соответствие между доменными именами и публичным IP-адресом. При наборе доменного имени в строке браузера DNS обнаружит соответствующий IP-адрес и сообщит устройству. Устройство обработает этот машинный код и вернет его в виде веб-страницы.

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

Заключение

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

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

Adblock
detector