При помощи какого протокола файл делится на пакеты

Обновлено: 31.05.2024

Чаще пользователей интересуют сотовые сети. Второе поколение 2G существенно ускорило пакетную передачу данных. Ключом явилось использование технологии GPRS. Последующие стандарты, включая поколения 5G, считают исключительно надстройками. Сети предпочитают работать со структурированной информацией, добиваясь весомых преимуществ: повышение скорости, возможность коррекции ошибок, оптимизация логистики, постдоставка. Современный интернет – услуга сугубо пакетированная.

Пакет

Пакет – определённым образом сформированный объем данных, передаваемых сетью.

Почему использование упорядоченной структуры позволяет ускорить отправку? Информация будет передаваться небольшими порциями. Вместо частотной, временной коммутации каналов начинают применять пакетную. Аппаратура располагает большими возможностями автоматизации, оптимизации распределения ресурсов меж абонентами. Становится доступным назначить каждому устройству скорость, реализуя заявленные операторами тарифные планы.

Простейшее определение даёт журнал Наука и жизнь (№11, 2000):

  • Сервер нарезает сформированную информацию порциями оговорённой длины. Снабжает посылки заголовком. Порция называется пакетом.

Направление в сети интернете выбирает IP-маршрутизатор. Мобильной связью заведуют базовые вышки. Сменяющиеся поколения пакетной передачи заставляют провайдеров модернизировать оборудование. Относиться легкомысленно нельзя – клиенты заклюют. Так Билайн, имевший подавляющее преимущество, отдал ветку первенства МТС. Мегафон идёт вдогонку. Сегодня выигрывает правильно избравший дорогу.

Базовая вышка связи

Структура

Преамбулу, формат определяет протокол. Последовательный порт RS-232 предусматривает наличие стартовых битов. Заголовок иногда содержит адрес абонента, обязательно присутствует полезная информация, опционально – контрольная. Длина пакета (MTU), измеряемая байтами, строго фиксирована. Меж посылками соблюдают интервал молчания. Антонимом называют непрерывную передачу информации последовательностью битов.

Структура слоёв OSI:

  1. Второй (канальный, связи данных) – кадр.
  2. Третий (данных) – пакет.
  3. Четвёртый (транспортный) – датаграмма.
  1. Заголовок – эквивалент конверта.
  2. Полезная информация – листок бумаги внутри.

Заголовок IP-пакета содержит следующие набор сведений:

  1. Версия (IPv4, IPv6) – 4 бита.
  2. Длина заголовка – 4 бита.
  3. Приоритет (QoS) – 8 бит.
  4. Длина пакета – 16 бит.
  5. Слот идентификации группы – 16 бит.
  6. 3 бита фрагментации:
  7. Всегда нуль.
  8. Допустимость разбиения на части.
  9. Наличие иных частей текущего пакета, идущих следом.

Передача пакета данных

Адрес

Сетевые пакеты снабжены двумя адресами:

Выявление/коррекция ошибок

Поддерживается различными слоями протокола. Распространённые методики контроля:

  • Контрольная сумма.
  • Бит чётности.
  • Циклический код избыточности.

Иногда возможна модификация битых пакетов промежуточными звеньями передачи.

Счётчик прыжков

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

Длина

Иногда размер указывают прямо, отдельные сети эксплуатируют принцип временного деления канала.

Приоритет

Полезная нагрузка

Примеры

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

Пакетный поток MPEG

Спецификация пакетированной передачи (PES) определена стандартом MPEG-2. Любопытный нюанс: использующие технологию программы ПК выполняют аналогичную работу, минуя сеть.

Заголовок

  1. Старт-код:
    • Префикс длиной 3 байта – шестнадцатеричная единица.
    • Идентификатор потока длиной 1 байт – аудио, видео…
  2. Длина пакета – 2 байта. Может быть нулевой, неопределённой для потоков видео.
  3. Опциональный заголовок PES переменной длины.
  4. Длина битов начинки.
  5. Передаваемые данные.

Опциональный заголовок

  1. Маркерные биты – 0х02.
  2. Контроль шифрования. 0 – отсутствие скремблирования.
  3. Приоритет – 1 бит.
  4. Индикатор выравнивания – 1 бит. 1 – после заголовка непосредственно идёт информация.
  5. Авторское право – 1 бит. 1 – защищённое произведение.
  6. Оригинальность копии – 1 бит. 1 – содержит оригинал.
  7. Индикатор PTS DTS – 2 бита. 11 – оба, 10 – PTS.
  8. Флаг ESCR – 1 бит.
  9. Флаг скорости ES – 1 бит.
  10. Флаг режима DSM – 1 бит.
  11. Флаг дополнительной копии информации – 1 бит.
  12. Флаг CRC – 1 бит.
  13. Флаг расширения – 1 бит.
  14. Длина заголовка PES – 8 бит. Протяжённость оставшегося сегмента, имеющего переменную длину.
  15. Опциональные поля.
  16. Биты начинки – 0хff.

Пакетный поток стандарта MPEG

Технология призвана ускорить сети второго поколения сотовой связи. Пакетную передачу считают европейским ответом развитию концепции цифровой передачи CDPD (начало 90-х) и режиму i-mode. Основу GPRS составил разработанный ранее (1991-1993) стандарт CELLPAC. Пакетную передачу внедрили в 2000 году, окончив эпоху второго поколения сотовых сетей, создав пристройки:

Стандарт предполагает передачу IP-пакетов, реализуя туннельный протокол.

Функции

  1. СМС.
  2. ММС.
  3. Мессенджеры.
  4. P2P.
  5. P2M.
  6. Интернет.

Туннельный протокол

  1. GTP-C (control). Функционирует сугубо внутри ядра сети. Управляет активацией, деактивацией, обновлением сессии, предоставляет QoS-приоритет. Создаёт, удаляет контекст PDP, определяет достижимость адресата.
  2. GTP-U (user). Заведует переносом пакетов IPv4, IPv6, PPP меж ядрами сетей и средствами беспроводной связи.
  3. GTP` (первичный). Управляет связью разрозненных частей сети.

Протокол беспроводной передачи пакета

Заголовок идентичен TCP/UDP. Пример версии 1:

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

Туннель наводится меж узлами – точками, поддерживающими GPRS. Каждая снабжена входным Gn-интерфейсом. Имеются 2 глобальные разновидности:

  1. Врата (шлюзовый узел). Главный компонент, разделяющий среду GPRS и внешнюю часть (интернет, Х.25…). Извне врата выглядят подсетью, укрывая подробности реализации протокола. Происходит двунаправленная конвертация пакетов PDP-IP. Здесь находится пул.
  2. Служба (обслуживающий узел). Составная часть базовых станций, мобильного оборудования. Поддерживает GPRS, UMTS. Занимается выслеживанием других служб-оппонентов, поддерживает функции контроля доступа. Подключается к базовым станциям GERAN посредством интерфейсов Gb, Iu; UTRAN – Iu. Переносит пакеты беспроводными путями.

Базовая станция

Точка доступа

Имеет несколько определений:

  1. IP-сеть подключения.
  2. Набор настроек, описывающих соединение.
  3. Соответствующая опция телефонного аппарата.

После формирования телефоном PDP-пакета выбирается APN (имя точки доступа). Настройки вводят вручную, либо заказывают автоматические. Точка доступа заведует отправкой адресов ДНС-серверу, получением адреса IP ресурса. Затем начинается передача контента:

PDP-контекст

Контекст пакетированного протокола данных (IP, X.25, FrameRelay) – структура, передаваемая участникам связи. Содержит информацию о сессии абонента. Мобильный телефон, запрашивающий информацию, формирует структуру, направляя ближайшему звену цепи:

  • IP-адрес абонента.
  • IMSI.
  • Туннельная точка врат.
  • Туннельная точка службы.

Опорные точки и интерфейсы

Некоторые экземпляры рассматриваемых структур упоминались выше. Интерфейсы:

  1. Ga – помогает передать запись деталей вызова.
  2. Gb – интерфейс подключения службы к базовой станции.
  3. Iu – врата меж контроллером беспроводной сети и службами.
  4. Gc – интерфейс получения вратами детальной информации, описывающей базовую станцию.
  5. Gd – соединяет SMS врата со службами.
  6. Ge – интерфейс служба-точка контроля сервиса.
  7. Gf – интерфейс служба-реестр идентификаторов оборудования.
  8. Gi – интерфейс врата-публичная сеть (иногда интернет).
  9. Gmb – интерфейс врата-центр службы вещания.
  10. Gn – интерфейс общения служб.
  11. Gp – интерфейс служба-внешние врата.
  12. Gr – интерфейс служба-базовая сеть.
  13. Gs – интерфейс служба-реестр базовой сети.
  14. Gx – интерфейс онлайн политики врата-функция правил оплаты.
  15. Gy – интерфейс врата-система онлайн оплаты.
  16. Gz – интерфейс оффлайн оплаты врата-система GTP`.
  17. Lg – интерфейс служба-центра базирования мобильных врат.
  18. S6d – интерфейс служба-сервер домашних абонентов.
  19. S3 – интерфейс служба-объект управления мобильностью.

Интерфейс пакетного потока

GPRS расширял функционал GSM, HSPA выполняет аналогичную роль касательно UMTS. Различаются два подвида:

  1. Нисходящая ветвь (загрузка информации станцией) – 14 Мбит/с.
  2. Восходящая ветвь (приём информации станцией) – 5,76 Мбит/с.

Потоки разнесены ввиду разных техник, скоростей. Протоколы пакетной передачи удваивают скорости оригинального стандарта.

HSDPA

Усовершенствованный вариант протокола третьего поколения. Чаще называют 3G+, 3.5 G, Turbo G. Представлен пятым релизом 3GPP. Седьмой выпуск ввёл понятие HSPA+, предоставляющий преимущества благодаря:

  1. Модуляции 64QAM.
  2. Множественное кодирование MIMO.
  3. Двуячеячные операции HSDPA (два канала шириной 5 МГц).

Наконец, релиз 11 достиг планки 337,5 Мбит/с.

HSUPA

Добавляет новый транспортный канал. Последовали улучшения, дублирующие HSDPA:

  1. Мультикодированная передача.
  2. Сокращение время отклика (TTI).
  3. Новое управление избыточностью, ускоряющее коррекцию ошибок.

Пакетная передача дополнена принципом гарантированного запроса. Оболочка выбирает количество абонентов, устанавливает время связи. Разрешается передача данных без авторизации, используется VoIP. Скорость устанавливается по факту соединения. Контролируемый оболочкой звонок получается заданные характеристики.

1. Лекция - Введение. Адресация. Протоколы (IP, TCP, UDP). Порты.

Официальная документация по Internet

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

Адресация в сети Internet.

Типы адресов.

Физический (MAC-адрес)

Сетевой (IP-адрес)

Символьный (DNS-имя)

Компьютер в сети TCP/IP может иметь адреса трех уровней (но не менее двух):

Локальный адрес компьютера. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера. Эти адреса назначаются производителями оборудования и являются уникальными адресами.

IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов.

IPv4 - адрес является уникальным 32-битным идентификатором IP-интерфейса в Интернет.

IP-адреса принято записывать разбивкой всего адреса по октетам (8), каждый октет записывается в виде десятичного числа, числа разделяются точками. Например, адрес


10100000010100010000010110000011
записывается как

Перевод адреса из двоичной системы в десятичную

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

160.81.5. - номер сети

131 - номер хоста

Базовые протоколы (IP, TCP, UDP)

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

TCP/IP - собирательное название для набора (стека) сетевых протоколов разных уровней, используемых в Интернет. Особенности TCP/IP:

Открытые стандарты протоколов, разрабатываемые независимо от программного и аппаратного обеспечения;

Независимость от физической среды передачи;

Система уникальной адресации;

Стандартизованные протоколы высокого уровня для распространенных пользовательских сервисов.

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

Стек протоколов TCP/IP делится на 4 уровня:

Физический и канальный.

Позже была принята 7-ми уровневая модель ISO.

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

Пример инкапсуляции пакетов в стеке TCP/IP

Физический и канальный уровень.

Стек TCP/IP не подразумевает использования каких-либо определенных протоколов уровня доступа к среде передачи и физических сред передачи данных. От уровня доступа к среде передачи требуется наличие интерфейса с модулем IP, обеспечивающего передачу IP-пакетов. Также требуется обеспечить преобразование IP-адреса узла сети, на который передается IP-пакет, в MAC-адрес. Часто в качестве уровня доступа к среде передачи могут выступать целые протокольные стеки, тогда говорят об IP поверх ATM, IP поверх IPX, IP поверх X.25 и т.п.

Межсетевой уровень и протокол IP.

Основу этого уровня составляет IP-протокол.

IP (Internet Protocol) – интернет протокол.

Первый стандарт IPv4 определен в RFC-760 (DoD standard Internet Protocol J. Postel Jan-01-1980)

Последняя версия IPv4 - RFC-791 (Internet Protocol J. Postel Sep-01-1981).

Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995)

Последняя версия IPv6 - RFC-2460 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1998).

Протокол IP доставляет блоки данных от одного IP-адреса к другому.

Программа, реализующая функции того или иного протокола, часто называется модулем, например, “IP-модуль”, “модуль TCP”.

Когда модуль IP получает IP-пакет с нижнего уровня, он проверяет IP-адрес назначения.

Если IP-пакет адресован данному компьютеру, то данные из него передаются на обработку модулю вышестоящего уровня (какому конкретно - указано в заголовке IP-пакета).

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

Структура дейтограммы IP. Слова по 32 бита.

Версия - версия протокола IP (например, 4 или 6)

Длина заг. - длина заголовка IP-пакета.

Тип сервиса (TOS - type of service) - Тип сервиса (подробнее рассмотрен в лекции 8).

TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP).

Идентификатор дейтаграммы, флаги (3 бита) и указатель фрагмента - используются для распознавания пакетов, образовавшихся путем фрагментации исходного пакета.

Время жизни (TTL - time to live) - каждый маршрутизатор уменьшает его на 1, что бы пакеты не блуждали вечно.

Протокол - Идентификатор протокола верхнего уровня указывает, какому протоколу верхнего уровня принадлежит пакет (например: TCP, UDP).

Коды некоторые протоколов RFC-1700 (1994)

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

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

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

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

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

RIP (Routing Information Protocol) - протокол передачи маршрутной информации, маршрутизаторы динамически создают маршрутные таблицы.

OSPF (Open Shortest Path First) - протокол "Открой кротчайший путь первым", является внутренним протоколом маршрутизации.

IGP (Interior Gateway Protocols) - внутренние протоколы маршрутизации, распространяет маршрутную информацию внутри одной автономной системе.

EGP (Exterior Gateway Protocols) - внешние протоколы маршрутизации, распространяет маршрутную информацию между автономными системами.

BGP (Border Gateway Protocol) - протокол граничных маршрутизаторов.

Другие служебные IP-протоколы

IGMP (Internet Group Management Protocol) - позволяет организовать многоадресную рассылку средствами IP.

RSVP (Resource Reservation Protocol) - протокол резервирования ресурсов.

ARP (Address Resolution Protocol) - протокол преобразования IP-адреса и адреса канального уровня.

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

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

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

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

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

Посылает запрос на следующий пакет, указывая его номер в поле "Номер подтверждения" (AS). Тем самым, подтверждая получение предыдущего пакета.

Делает проверку целостности данных, если пакет битый посылает повторный запрос.

Структура дейтограммы TCP. Слова по 32 бита.

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

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

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

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

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

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

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

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

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

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

UDP (Universal Datagram Protocol) - универсальный протокол передачи данных, более облегченный транспортный протокол, чем TCP.

Основные отличия от TCP:

Отсутствует соединение между модулями UDP.

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

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

Структура дейтограммы UDP. Слова по 32 бита.


Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули.

Протокол реального времени RTP

RTP (Real Time Protocol) - транспортный протокол для приложений реального времени.

RTCP (Real Time Control Protocol) - транспортный протокол обратной связи для приложения RTP..

Назначение портов

По номеру порта транспортные протоколы определяют, какому приложению передать содержимое пакетов.

Порты могут принимать значение от 0-65535 (два байта 2^16).

Некоторые заданные порты RFC-1700 (1994)

Программа Ping

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

Программа TraceRoute - позволяет проверить маршрут до удаленного хоста.

Транспортный уровень выполняет следующие задачи:

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

Уровень сеанса (Session Layer SL) — сетевой контроллер диалога. Он устанавливает, поддерживает и синхронизирует взаимодействие между связывающимися системами.

При помощи сеансового уровня ( Session Layer ) организуется диалог между сторонами, фиксируется, какая из сторон является инициатором, какая из сторон активна и каким образом завершается диалог.

Задачи сеансового уровня следующие:

Уровень представления (Presentation Layer) занимается формой предоставления информации нижележащим уровням, например, перекодировкой или шифрованием информации.

Задачи уровня представления следующие:

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

Примеры услуг, оказываемых прикладным уровнем:

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

Стек протоколов Интернета

Стек протоколов сети Интернет2 был разработан до модели OSI . Поэтому уровни в стеке протоколов Интернета не соответствуют аналогичным уровням в модели OSI . Стек протоколов Интернета состоит из пяти уровней: физического, звена передачи данных, сети, транспортного и прикладного. Первые четыре уровня обеспечивают физические стандарты, сетевой интерфейс , межсетевое взаимодействие и транспортные функции, которые соответствуют первым четырем уровням модели OSI . Три самых верхних уровня в модели OSI представлены в стеке протоколов Интернета единственным уровнем, называемым прикладным уровнем рис. 1.3.

Стек протоколов Интернета по сравнению с OSI

Стек базовых протоколов Интернета — иерархический, составленный из диалоговых модулей, каждый из которых обеспечивает заданные функциональные возможности; но эти модули не обязательно взаимозависимые. В отличие от модели OSI , где определяется строго, какие функции принадлежат каждому из ее уровней, уровни набора протокола TCP / IP содержат относительно независимые протоколы, которые могут быть смешаны и согласованы в зависимости от потребностей системы. Термин иерархический означает, что каждый верхний протокол уровня поддерживается соответственно одним или более протоколами нижнего уровня.

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

Протокол TCp

На этом уровне есть два протокола, протокол UDP, который уже рассматривали и протокол TCP, который является одним из основных протоколов стека TCP/IP и интернет.

p, blockquote 3,0,0,0,0 -->

Протокол TCP в модели OSI

p, blockquote 4,0,0,0,0 -->

p, blockquote 5,0,0,0,0 -->

Поток байт

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

p, blockquote 6,0,0,0,0 -->

поток байт в протоколе TCP

p, blockquote 7,0,0,0,0 -->

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

p, blockquote 8,0,0,0,0 -->

Гарантия доставки: подтверждение получения

p, blockquote 9,0,0,0,0 -->

Гарантия доставки в TCP

p, blockquote 10,0,0,0,0 -->

Гарантия доставки: повторная отправка

p, blockquote 11,0,0,0,0 -->

Гарантия доставки, повторное отправление

p, blockquote 12,0,0,0,0 -->

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

p, blockquote 13,0,0,0,0 -->

Повторная доставка прошла успешно

p, blockquote 14,0,1,0,0 -->

Протокол TCP: скользящее окно

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

p, blockquote 15,0,0,0,0 -->

  • Остановка и ожидание (Wi-Fi, канальный уровень)
  • Скользящее окно (TCP, транспортный уровень)

Варианты подтверждения доставки

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

p, blockquote 17,0,0,0,0 -->

Варианты подтверждения доставки: скользящее окно

p, blockquote 18,0,0,0,0 -->

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

p, blockquote 19,0,0,0,0 -->

p, blockquote 20,0,0,0,0 -->

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

p, blockquote 21,0,0,0,0 -->

Пример подтверждения доставки

Рассмотрим на примере работу сети.

Скользящее окно

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

p, blockquote 23,0,0,0,0 -->

скользящее окно

p, blockquote 24,0,0,0,0 -->

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

p, blockquote 26,0,0,0,0 -->

перемещается скользящее окно

p, blockquote 27,0,0,0,0 -->

Тип подтверждения

Есть два типа подтверждения, которые могут использоваться совместно с алгоритмом скользящего окна.

  • Кумулятивное подтверждение, говорит о том что получен указанный байт данных и все предыдущие. Такой подход используется в TCP по умолчанию. Сейчас из-за того что распространились высокоскоростные каналы связи большой протяженности, размер окна в TCP может быть увеличен до 1 гигабайта. Представьте, что вы передали гигабайт данных и у вас потерялся всего лишь один сегмент, который находится в середине. С помощью кумулятивного подтверждения вы можете подтвердить получение только первых 500 мегабайт, получится что вам придётся повторно передавать 500 мегабайт данных, которые уже есть у получателя.

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

p, blockquote 29,0,0,0,0 -->

p, blockquote 30,0,0,0,0 -->

p, blockquote 31,0,0,0,0 -->

Дублирование сегментов

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

p, blockquote 32,0,0,0,0 -->

Пример передачи данных в TCP

p, blockquote 33,0,0,0,0 -->

p, blockquote 34,0,0,0,0 -->

p, blockquote 35,0,0,0,0 -->

p, blockquote 36,0,0,0,0 -->

В нашем примере 4 сегмента первый сегмент содержит байты от 0 до 1023, второй от 1024 до 2047 и так далее.

p, blockquote 37,0,0,0,0 -->

Нумерация байтов

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

p, blockquote 38,0,0,0,0 -->

Нумерация байтов

  • Например сегмент данных, байт 0, он содержит байты с 0 до 1023.
  • Получатель отправляет подтверждение и в подтверждение включает номер следующего байта, который ожидается байт 1024.
  • Отправитель передает следующий сегмент, включая в него номер первого байта, сегмент данных, номер первого байта 1024 содержит данные до номера байта 2047.
  • Получатель отправляет подтверждение, что он ждет байт с номером 2048, если сегменты придут в неправильном порядке, то получатель по номерам байтов всегда сможет выставить их в правильной последовательности.

Дублирование сегментов

Рассмотрим как решается ситуация с дублированием сегментов.

p, blockquote 40,0,0,0,0 -->

Дублирование сегментов

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

Соединение TCP

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

p, blockquote 42,0,0,1,0 -->

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

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

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

p, blockquote 43,0,0,0,0 -->

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

p, blockquote 44,0,0,0,0 -->

p, blockquote 45,0,0,0,0 -->

p, blockquote 46,0,0,0,0 -->

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

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

p, blockquote 47,0,0,0,0 -->

p, blockquote 48,0,0,0,0 -->

p, blockquote 49,0,0,0,0 -->

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

p, blockquote 50,0,0,0,0 -->

p, blockquote 51,0,0,0,0 -->

Заключение

p, blockquote 52,0,0,0,0 -->

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

p, blockquote 53,0,0,0,0 -->

p, blockquote 54,0,0,0,0 -->

p, blockquote 55,0,0,0,0 --> p, blockquote 56,0,0,0,1 -->

Читайте также: