Протоколы UDP и TCP

Содержание

Слайд 2

План Транспортный уровень Номера портов Протокол UDP Протокол TCP Установление соединения

План

Транспортный уровень
Номера портов
Протокол UDP
Протокол TCP
Установление соединения в TCP
Управление скоростью в TCP
Будущее

TCP
Слайд 3

Транспортный уровень TCP\IP Задачи: Диспетчеризация данных между приложениями Достоверность доставки (TCP)

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

Задачи:
Диспетчеризация данных между приложениями
Достоверность доставки (TCP)
Адреса TCP и UDP

– номера портов
Надежная доставка - TCP
Не надежная доставка – «чистый» UDP
Слайд 4

Номера портов

Номера портов

Слайд 5

Мультиплексирование и демультиплексирование Порт «занимается» приложением, клиентом или сервером. Модули протоколов

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

Порт «занимается» приложением, клиентом или сервером.
Модули протоколов TCP и

UDP занимаются направлением инкапсулированных данных в нужный порт.
Номера портов для UDP и TCP могут быть одинаковыми.
Слайд 6

Мультиплексирование и демультиплексирование В случае, если на хосте несколько IP адресов,

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

В случае, если на хосте несколько IP адресов, то

порт для разных приложений может совпадать.
Но различаются сокеты (!)
Слайд 7

Значения номеров портов Для сервера номер порта фиксирован, для клиента –

Значения номеров портов

Для сервера номер порта фиксирован, для клиента – произволен.
Для

серверов:
RFC порты (назначается IANA RFC 6335)
Не RFC порты
Пример:
80/TCP – HTTP официально
81/TCP – Tor не официально
Клиентские порты - выше 1024.
Слайд 8

Значения номеров портов Размер номера порта 16 бит, следовательно максимальное значение

Значения номеров портов

Размер номера порта 16 бит, следовательно максимальное значение 65535.
Порт

с номером 0 разрешен для использования в UDP, запрещен для TCP.
Слайд 9

Безопасность и номера портов Сканирование портов (nmap) Перенос служб на не RFC порты.

Безопасность и номера портов

Сканирование портов (nmap)
Перенос служб на не RFC порты.

Слайд 10

Протокол UDP

Протокол UDP

Слайд 11

Заголовок UDP User Datagram Protocol, RFC-768

Заголовок UDP

User Datagram Protocol, RFC-768

Слайд 12

Заголовок UDP Заголовок UDP состоит из четырех 2-байтных полей: номер UDP-порта

Заголовок UDP

Заголовок UDP состоит из четырех 2-байтных полей:
номер UDP-порта отправителя;
номер UDP-порта

получателя;
контрольная сумма;
длина дейтаграммы
Слайд 13

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

Заголовок UDP

Контрольная сумма
Служит для диагностики, но не для исправления.
Поврежденную дейтаграмму UDP

просто отбрасывает.
Слайд 14

Протокол TCP

Протокол TCP

Слайд 15

Заголовок TCP Transmission Control Protocol RFC: 793, 1323, 1644, 2018, 2581,

Заголовок TCP

Transmission Control Protocol
RFC: 793, 1323, 1644, 2018,

2581, 2582, 2861, -2873, 2883, 2923, 2988, 3465,3481 и др.
Устанавливает и контролирует соединение
Делит данные прикладного уровня на части – сегменты
Осуществляет передачу данных с уведомлением
Вычисляет контрольные суммы по всему сегменту.
Слайд 16

Заголовок TCP

Заголовок TCP

Слайд 17

Заголовок TCP Порт отправителя Порт получателя

Заголовок TCP

Порт отправителя
Порт получателя

Слайд 18

Заголовок TCP

Заголовок TCP

Слайд 19

Заголовок TCP Код позиции в сообщении (sequence number) - номер первого

Заголовок TCP

Код позиции в сообщении (sequence number) - номер первого байта

данных в сегменте. По сути это смещение сегмента относительно начала данных.
Номер октета, который должен прийти следующим (acknowledgment number) – число, которое на единицу больше номера последнего успешно принятого байта.
Слайд 20

Заголовок TCP Код позиции в сообщении (sequence number) Номер октета, который

Заголовок TCP

Код позиции в сообщении (sequence number)
Номер октета, который должен прийти

следующим (acknowledgment number)

A

B

C

D

SN=0 SN=A SN=A+B SN=A=B=C

A

Получение

Подтверждение

AN=A+1

Слайд 21

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

Восстановление потерянных сегментов

Реализации TCP используют два разных способа, чтобы получатель мог

запросить один пакет.
Тройное признание. Если получатель трижды подтверждает пакет, который предшествует последнему подтвержденному серийному номеру, отправитель предполагает, что получатель запрашивает повторную передачу пакета.
Второй способ заключается в реализации выборочных подтверждений (SACK). SACK добавляет новое поле к подтверждению TCP, которое позволяет получателю подтвердить получение определенного набора серийных номеров.
Слайд 22

Заголовок TCP

Заголовок TCP

Слайд 23

HLEN - поле, определяющее размер заголовка пакета TCP в 4-байтных словах.

HLEN - поле, определяющее размер заголовка пакета TCP в 4-байтных словах.

Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.
Резерв - предназначенное для будущего использования (сейчас = 0) кроме 4 и 6 бита, где располагаются флаги управления перегрузкой
Флаги (обсудим далее)
Размер окна - определяет число сегментов, которые могут быть посланы без получения подтверждения.
Указатель важной информации - представляет собой указатель последнего байта, содержащий информацию, которая требует немедленного реагирования.

Заголовок TCP

Слайд 24

Размер окна Размер окна = A+B+С Это значит, что отправитель может

Размер окна

Размер окна = A+B+С
Это значит, что отправитель может послать сегменты

A, B, C до получения подтверждения на сегмент А
После получения подтверждения А окно сдвигается вправо. Можно отпарить D

A

B

C

D

SN=0 SN=A SN=A+B SN=A=B=C

A

Получение

Подтверждение

AN=A+1

Слайд 25

Заголовок TCP. Флаги. URG — срочное сообщение; АСК — квитанция на

Заголовок TCP. Флаги.

URG — срочное сообщение;
АСК — квитанция на принятый сегмент;
PSH

— запрос на отправку сообщения без ожидания заполнения буфера;
RST — запрос на восстановление соединения;
SYN — сообщение, используемое для синхронизации счетчиков переданных данных при установлении соединения;
FIN — признак достижения передающей стороной последнего байта в потоке передаваемых данных
Слайд 26

Заголовок TCP. Флаги. SYN АСК URG

Заголовок TCP. Флаги.

SYN
АСК
URG

Слайд 27

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

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

Слайд 28

Установление соединения в TCP Клиент и сервер TCP проходят последовательно ряд

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

Клиент и сервер TCP проходят последовательно ряд

состояний.
Переход между состояниями управляется получением\отправкой сегментов с определенными флагами и значениями полей.
Слайд 29

Установление соединения в TCP Тройное рукопожатие. Клиент посылает SYN-сегмент (active open).

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

Тройное рукопожатие.
Клиент посылает SYN-сегмент (active open).
Сервер откликается,

посылая свой SYN-сегмент, с ISN (Initial Sequence Number) = 0 (passive open).
Клиент отправляет подтверждение получения SYN-сегмента от сервера с идентификатором равным ISN (сервера)+1.
Слайд 30

Закрытие соединения

Закрытие соединения

Слайд 31

netstat

netstat

Слайд 32

Регулирование скорости в TCP

Регулирование скорости в TCP

Слайд 33

От чего зависит скорость TCP? Скорость передачи данных по TCP не

От чего зависит скорость TCP?

Скорость передачи данных по TCP не равномерная.

Она меняется в зависимости от:
времени от начала передачи,
успешности передачи,
общих условий передачи.
Слайд 34

Размер окна

Размер окна

Слайд 35

Размер окна W=RTT*B W – размер окна в B - Полоса

Размер окна

W=RTT*B
W – размер окна в
B - Полоса пропускания (бит/сек)


RTT (round-trip time) — Время приема-передачи - это время на отправку сигнала + время на получение подтверждения.
Размеры окон для обоих участников обмена могут быть разными
Слайд 36

Определение интенсивности передачи Трафик регулируется: Со стороны получателя (контроль доставки) с

Определение интенсивности передачи

Трафик регулируется:
Со стороны получателя (контроль доставки) с помощью параметра

window
Со стороны отправителя (контроль перегрузки) с помощью окна перегрузки cwnd (congestion window) и порога медленного старта ssthreth (Slow start threshold).
Окно перегрузки (CWND) позволяет согласовать полную загрузку виртуального соединения и текущие возможности канала, минимизируя потери пакетов при перегрузке.
Увеличение окна перегрузки идет по мере успешной передачи
При неуспешной передаче окно схлопывается (при ошибках или таймауте).
Слайд 37

TCP Congestion Control BIC TCP CUBIC TCP Highspeed TCP H-TCP TCP

TCP Congestion Control

BIC TCP
CUBIC TCP
Highspeed TCP
H-TCP
TCP Hybla
TCP-Illinois

TCP Low Priority
TCP Vegas
TCP NewReno
TCP

Veno
TCP Westwood+
YeAH-TCP
Слайд 38

Окно перегрузки 1\2 Сongestion Window – окно перегрузки Чаще всего равно

Окно перегрузки 1\2

Сongestion Window – окно перегрузки
Чаще всего равно размеру окна

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

Окно перегрузки 2\2 Когда соединение установлено: окно перегрузки независимо на каждом

Окно перегрузки 2\2

Когда соединение установлено:
окно перегрузки независимо на каждом хосте,

устанавливается на небольшое значение, кратное MSS (Maximum Segment Size), разрешенному для этого соединения.
в дальнейшем, в зависимости от алгоритма управления перегрузкой, при условии, что все сегменты получены и подтверждения достигают отправителя вовремя, к размеру окна добавляется некоторая константа.
когда окно достигает ssthresh, окно перегрузки увеличивается линейно при каждом новом полученном подтверждении,
окно перегрузки схлопывается до 1 MSS (возможны другие варианты, например до половины ssthresh) при обнаруженных проблемах передачи, выключая таймаут прихода подтверждения.
Слайд 40

Критика TCP

Критика TCP

Слайд 41

Критика TCP Проблема медленного открытия соединений (TCP, TCP+TLC) Проблема медленного старта

Критика TCP

Проблема медленного открытия соединений (TCP, TCP+TLC)
Проблема медленного старта
Слабая адаптация TCP

к беспроводным сетям
Критическое влияние не пропускной способности канала, а задержки

https://www.youtube.com/watch?v=RqZ9_Yq-ibM
https://www.youtube.com/watch?v=1Ih0bL2Zp1c
Александр Тоболь / Одноклассники

Слайд 42

Медленный старт cwnd=1 MSS Пусть мы будем удваивать cwnd

Медленный старт

cwnd=1 MSS
Пусть мы будем удваивать cwnd

Слайд 43

Управление окном перегрузки

Управление окном перегрузки

Слайд 44

Переход на QUIC https://infostart.ru/journal/news/tekhnologii/novyy-protokol-http-3-bolshe-ne-budet-ispolzovat-tcp-na-ocheredi-quic_1284071/

Переход на QUIC

https://infostart.ru/journal/news/tekhnologii/novyy-protokol-http-3-bolshe-ne-budet-ispolzovat-tcp-na-ocheredi-quic_1284071/

Слайд 45

Переход на UDP

Переход на UDP