Tcp против udp или будущее сетевых протоколов
Содержание:
IPv4[править]
IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет протокола (IP). Описан в IETF в статье RFC 791 (сентябрь 1981 года). Это один из самых используемых интернет протоколов. Был введен в использование в ARPANET в 1983 году.
Функция протокола — передавать дейтаграммы по множеству соединенных сетей.
Структура пакетаправить
Рассмотрим формат IPv4-дейтаграмм.
Дейтаграмма состоит из заголовка и основной части (данных). Биты передаются слева направо и сверху вниз (big-endian порядок). В настоящее время ясно, что лучше было бы использовать обратный (little-endian) порядок, но во время создания протокола это не было очевидно. Так на Intel x86 требуется программное преобразование, как при передаче, так и при приеме.
Рассмотрим структуру заголовка:
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 |
Версия | IHL | Дифференциальное обслуживание (Тип службы) | Полная длина | |||||||||||||||||||||||||||
Идентификатор | Флаги | Смещение фрагмента | ||||||||||||||||||||||||||||
Время жизни | Протокол | Контрольная сумма заголовка | ||||||||||||||||||||||||||||
IP-адрес источника | ||||||||||||||||||||||||||||||
IP-адрес назначения | ||||||||||||||||||||||||||||||
Опции | Остаток |
- Версия: 4 бита
- IHL: 4 бита
- Дифференциальное обслуживание (Тип службы): 8 битов
- Полная длина: 16 бит
- Идентификатор: 16 бит
- Флаги: 3 бита
- Бит 0: зарезервированное значение, должны быть равно 0.
- Бит 1 (DF): Не фрагментировать (англ. Don’t Fragment). 0 — можно фрагментировать, 1 — нельзя. Также может использоваться при определении путевого значения MTU, которое равно максимальному размеру пакета, передаваемого по пути без фрагментации. Пометив этот бит, отправитель гарантирует, что либо дейтаграмма дойдет единым блоком, либо отправитель получит сообщение об ошибке.
- Бит 2 (MF): Продолжение следует (англ. More Fragments). 0 — в последнем фрагменте, 1 — в предыдущих.
- Смещение фрагмента: 13 битов
- Время жизни: 8 битов
- Протокол: 8 битов
- Контрольная сумма заголовка: 16 бит
- IP-адрес источника: 32 бита.
- IP-адрес получателя: 32 бита.
- Опции: переменная длина
- В начале поля всегда располагается однобайтный идентификатор. Иногда за ним может располагаться также однобайтное поле длины, а затем один или несколько информационных байтов. Размер этого поля должен быть кратен 4 байтам. Поле опции имеет следующий формат:
- 1 бит — флаг копирования. Показывает, если опция скопирована во все фрагменты.
- 2 бита — класс опции. Могут быть следующие классы: 0 — control, 2 — debugging и измерение, 1 и 3 — зарезервированы на будущее.
- 5 бит — номер опции.
- Приведем примеры опций:
- Безопастность — указывет уровень секретности дейтаграммы. Но на практике все его игнорируют.
- Строгая маршрутизация от источника — задает полный путь следования дейтаграммы.
- Свободная маршрутизация от источника — задает список маршрутизаторв, которыенельзя миновать.
- Запомнить маршрут — требует от всех маршрутизаторов добавлять свой IP-адрес.
- Временной штамп — требует от всех маршрутизаторв добавлять свой IP-адрес и текущее время.
- Обычно маршрутизаторы либо игнорируют опции, либо обрабатывают неэффективно, отодвигая в стороны как нечто необычное.
- В начале поля всегда располагается однобайтный идентификатор. Иногда за ним может располагаться также однобайтное поле длины, а затем один или несколько информационных байтов. Размер этого поля должен быть кратен 4 байтам. Поле опции имеет следующий формат:
- Остаток (Padding): переменная длина
Что такое IPv6
IPv6 (Интернет-протокол версии 6) также называемый IPng (Internet Protocol next generation – Интернет-протокол следующего поколения) – это обновлённая версия интернет-протокола (IP) созданная с учётом стандартов Инженерного Совета Интернета для замены текущей версии IPv4.
Обзор IPv6
IPv6 является наследником IPv4, и был задуман как революционное обновление существующей доныне версии Интернет Протокола, и в настоящее время сосуществует с более старым IPv4. Новый IPv6 создан чтобы обеспечить интернету устойчивый и надёжный рост, касающийся как номера наличных хостов, так и общего количества передаваемого траффика, поддерживая 2^128 адресов – намного больше устаревшего протокола IPv4.
IPv6 часто называют «следующей генерацией» стандартов Интернета, который постоянно развивается с середины 1990х до сегодняшнего дня. Он был рождён как ответ на тревоги о том, что количество требуемых IP-адресов скоро превысит граничные возможности сети Интернет. После того, как мы узнали что это такое IPv6, рассмотрим дополнения существующие в ней.
Преимущества IPv6 по сравнению с IPv4
Вместе с увеличением количества возможных адресов, существуют и другие важные технологические изменения в IPv6 по сравнению с IPv4:
- Нет необходимости в NAT (трансляции сетевых адресов);
- Авто-конфигурация;
- Больше нет коллизий приватных адресов;
- Упрощённая, более эффективная, маршрутизация;
- Лучшая многоадресная маршрутизация;
- Более простой формат заголовка;
- Подтверждённое качество обслуживания (QoS), также называемое «маркировкой потока»;
- Встроенная аутентификация и поддержка конфиденциальности.
При этом, в IPv6 существуют несколько вариантов адресов:
- Unicast (одноадресные) – используется в сервисах персонального характера, направляется из одного, определённого, источника к одному IP-aдресу
- Anycast (групповые) – позволяет посылать данные ко всем абонентам определённой ip-сети;
-
Multicast (многоадресные) – данные передаются для неограниченного количества абонентов.
Разметка пакета
Пакет состоит из двух типов данных: управляющей информации и данных пользователя (называемых также полезной нагрузкой). Управляющая информация содержит данные, необходимые для доставки данных пользователя: адреса отправителя и получателя, коды обнаружения ошибок (типа контрольных сумм) и информацию об очерёдности. Как правило, управляющая информация содержится в заголовке и хвосте пакета, а между ними размещаются пользовательские данные.
Различные коммуникационные протоколы используют разные соглашения для разделения элементов и для форматирования данных. В протоколе «двоичной синхронной передачи» пакет отформатирован в 8-битных байтах, а для разделения элементов используются специальные символы. В других протоколах, таких как Ethernet, зафиксировано начало заголовка и элементов данных, их расположение относительно начала пакета. Некоторые протоколы форматируют информацию на уровне битов, а не байтов.
Хорошей аналогией является рассмотрение пакета как письма: заголовок является конвертом, а область данных — это то, что человек вкладывает внутрь конверта. Разница, однако, состоит в том, что некоторые сети могут в случае необходимости разбивать большие пакеты на более мелкие (заметим, что эти меньшие элементы данных также форматируются как пакеты).
При проектировании сети с применением пакетов можно достичь двух важных результатов: обнаружение ошибок и многохостовая адресация.
Обнаружение ошибок
Более эффективным и надёжным методом обнаружения ошибок является расчёт контрольной суммы или циклического избыточного кода над содержимым пакета, чем проверка каждого символа с помощью бита чётности.
Хвостовая часть пакета часто содержит данные проверки ошибок, возникших во время передачи пакета по сети.
Адрес хоста
Современные сети обычно соединяют между собой три или более хоста. В таких случаях заголовок пакета обычно содержит информацию, в которой записан фактический адрес хоста. В сложных сетях, построенных из нескольких узлов коммутации и маршрутизации, такие как ARPANET или современный интернет, ряд пакетов, отправленных с одного компьютера на другой, может следовать разными маршрутами. Эта технология называется пакетной коммутацией.
Протоколы ip адресов
В настоящее время IP-адреса задаются с помощью двух протоколов: IPv4 и IPv6. IPv4 – это интернет-протокол, который имеет четырехзначный код. Каждое число этого протокола соответствует числу от 0 до 255. Так, в этом протоколе IP-адрес представляет следующую группу цифр: 10.361.28.36. Адресов такого типа уже около 4 миллионов. Учитывая, что подключаемых устройств становится все больше и больше, то адресов этой версии уже не хватает. В рамках локальных сетей IP-адреса этого протокола довольно удобны в применении. Их еще называют внутренними.
Часто провайдеры имеют один IP-адрес, а в рамках своей сети распределяют индивидуальные адреса среди своих клиентов. Поэтому может получиться, что несколько различных компьютеров или размещенных на них сайтов имеют одинаковый адрес в глобальной сети и уникальный внутри. В этом случае адрес сервера провайдера будет внешним.
В отличие от IPv4 , протокол IPv6 не 32-битный, а 128-битный (про биты можно прочитать в материале Что такое килобайт, мегабайт, гигабайт)Это позволило использовать шестнадцатеричные символы, которые разделены на 8 блоков. В качестве разделителя используется не точка, как в IPv4, а двоеточие. Например, IP-адрес в протоколе IPv6 записывается следующим образом: 1534:abcd:0:1:0:3:7:6. Введение протокола IPv6 позволило присвоить всем компьютерам, находящимся в сети, свой неповторимый адрес.
IP-адреса бывают динамические и статические. Динамический адрес присваивается автоматически, и при переподключении эти адреса будут изменяться на другие свободные. Статические адреса всегда жестко привязаны к конкретному компьютеру и всегда остаются неизменными.
Сравнение пакетов и дейтаграмм
Термин пакет распространяется на любое сообщение, форматированное как пакет, тогда как термин дейтаграмма
обычно используется для пакетов «ненадёжных» служб. «Надёжной» является служба, которая уведомляет пользователя, если доставка не удалась, тогда как «ненадёжная» такого уведомления пользователя не делает. Например, IP не обеспечивает надёжного сервиса, а TCP и IP вместе его обеспечивают, тогда как UDP с IP надёжного сервиса не обеспечивают. Все эти протоколы используют пакеты, но UDP-пакеты, как правило, называют дейтаграммами.
Когда сеть ARPANET впервые выступила с коммутацией пакетов, она обеспечивала надёжную процедуру доставки пакетов к серверам через свой интерфейс 1822. Сервер сети организует данные в пакет нужного формата, вставляет туда адрес компьютера назначения и посылает сообщение через интерфейс процессору передачи сообщений. Как только сообщение доставлено к серверу назначения, на посылающий сервер доставляется подтверждение. Если сеть не может доставить сообщение, на посылающий сервер будет послано извещение об ошибке.
Разработчики CYCLADES и ALOHAnet продемонстрировали, что можно построить эффективную компьютерную сеть, не обеспечивая надёжной передачи пакетов. Этот опыт позже был использован конструкторами Ethernet.
Если сеть не гарантирует доставки пакетов, то сервер становится ответственным за обеспечение надёжности и повторную передачу потерянных пакетов. Последующий опыт показал, что ARPANET сама по себе не может надёжно определить все неудачные доставки пакетов, и это подтолкнуло возложить во всех случаях ответственность за обнаружение ошибок на хост-отправитель. Это привело к появлению принципа сквозной связи, который является одной из фундаментальных основ интернета.
Пример: IP-пакет
IP-пакеты состоят из заголовка и полезной нагрузки. Заголовок пакета IPv4 состоит из:
- 4 бита содержат версию пакета: IPv4 или IPv6.
- 4 бита содержат длину интернет-заголовка, которая измеряется отрезками по 4 байта (например, 5 означает 20 байт).
- 8 бит содержат тип обслуживания, известный также как качество обслуживания (QoS), описывающее приоритеты пакета.
- 16 бит содержат длину пакета в байтах.
- 16 бит содержат тег идентификации, помогающий восстановить пакет из нескольких фрагментов.
- 3 бита содержат нуль, флаг разрешения фрагментации пакета (DF: не фрагментировать), а также флаг разрешения дальнейшей фрагментации (MF: фрагментировать дальше).
- 13 бит содержат смещение фрагмента, поле для идентификации положение фрагмента в исходном пакете.
- 8 бит содержат время жизни (TTL), которое определяет количество переходов (через маршрутизаторы, компьютеры и сетевые устройства), разрешённых сделать пакету, прежде чем он исчезнет (например, пакету с TTL 16 разрешено пройти не более 16 маршрутизаторов, чтобы добраться до места назначения).
- 8 бит содержат протокол (TCP, UDP, ICMP и т. д.).
- 16 бит содержат контрольную сумму заголовка, используемую при обнаружении ошибок.
- 32 бит содержат IP-адрес источника.
- 32 бит содержат адрес назначения.
После этих данных могут быть добавлено разное количество необязательных флагов, меняющихся в зависимости от используемого протокола, затем идут данные, которые переносит пакет. IP-пакет не имеет хвостового прицепа. Однако, IP-пакеты часто переносятся как полезная нагрузка внутри фрейма Ethernet, который имеет свой собственный заголовок и хвост.
Доставка не гарантируется
Многие сети не гарантируют доставку, отсутствие дубликатов пакетов и порядок их доставки, как например, протокол UDP в сети Интернет. Тем не менее, это можно сделать в верхней части пакета услуг транспортного уровня, который может обеспечить такую защиту. TCP и UDP являются лучшими примерами 4-го транспортного уровня, одного из семи уровней сетевой модели OSI.
Заголовок пакета определяет тип данных, номер пакета, общее количество пакетов и IP-адреса отправителя и получателя.
Иногда используется термин «кадр» для обозначения пакетов в точности так, как он используется при передаче сигнала по проводам или радио.
Свойства
IP объединяет сегменты сети в единую сеть, обеспечивая доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов (маршрутизаторов). Он классифицируется как протокол сетевого уровня по сетевой модели OSI. IP не гарантирует надёжной доставки пакета до адресата — в частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (приходят две копии одного пакета), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не прийти вовсе. Гарантию безошибочной доставки пакетов дают некоторые протоколы более высокого уровня — транспортного уровня сетевой модели OSI, — например, TCP, которые используют IP в качестве транспорта.
Фрагментация IP пакетов
При доставке IP пакета он проходит через разные каналы доставки. Возможно возникновение ситуации, когда размер пакета превысит возможности узла системы связи. В этом случае протокол предусматривает возможность дробления пакета на уровне IP в процессе доставки. Соответственно, к конечному получателю пакет придет в виде нескольких пакетов, которые необходимо собрать в один перед дальнейшим анализом. Возможность дробления пакета с последующей сборкой называется IP фрагментацией.
В протоколе предусмотрена возможность запрещения фрагментации конкретного пакета. Если такой пакет нельзя передать через сегмент связи целиком, то он уничтожается, а отправителю направляется ICMP сообщение о проблеме.