47
Транспортный уровень Транспортный уровень стека протоколов стека протоколов TCP/IP TCP/IP

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

Embed Size (px)

DESCRIPTION

Транспортный уровень стека протоколов TCP/IP. Пользовательский процесс. Пользовательский процесс. Пользовательский процесс. Пользовательский процесс. Протоколы прикладного уровня. HTTP. Telnet. DNS. DHCP. Application Programming Inetrface. - PowerPoint PPT Presentation

Citation preview

Page 1: Транспортный уровень стека протоколов  TCP/IP

Транспортный уровеньТранспортный уровеньстека протоколов стека протоколов TCP/IPTCP/IP

Page 2: Транспортный уровень стека протоколов  TCP/IP

К передающей среде

Протоколы межсетевых интерфейсов

RARP

Протоколы инкапсуляции в кадры Ethernet, FR, TR, ATM, FDDI, X.25 и т.д.

ARP

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

IGMPIPICMP

HTTPПротоколы прикладного уровня

Telnet DHCPDNS

Пользовательский процесс

Пользовательский процесс

Пользовательский процесс

Пользовательский процесс

Протоколы сетевого уровня

Application Programming Inetrface

Page 3: Транспортный уровень стека протоколов  TCP/IP

Дейтаграммный протокол UDP (RFC 768)

Зарезервированные и доступные портыМультиплексирование прикладных протоколовФормат дейтаграммы UDP

Page 4: Транспортный уровень стека протоколов  TCP/IP

Задача протокола транспортного уровня UDP (User Datagram Protocol) - передача данных

между прикладными процессами

без гарантий доставки

Прикладной процесс в сети однозначно определяется IP-адресом компьютера номером порта

Page 5: Транспортный уровень стека протоколов  TCP/IP

Нет гарантий доставки –

• дейтаграммный протокол,

• без установления соединений

• best effort

Page 6: Транспортный уровень стека протоколов  TCP/IP

Порт Порт UDPUDP

• идентификатор приложения

• определяет обменный буфер, создаваемый ОС в оперативной памяти

• если буфер переполняется, то сообщения отбрасываются

Основная функция протокола Основная функция протокола UDPUDP – мультиплексирование и демультиплексирование процессов на основе портов

Page 7: Транспортный уровень стека протоколов  TCP/IP

Выходн. буфер

Входн. буфер

TFTP

Порт 69

Выходн буфер

Входн. буфер

DHCP

Порт 67

Протокол UDP

Выходн. буфер

Входн. буфер

Appl

Порт 1056

Протокол IP

Драйвер Ethernet

Page 8: Транспортный уровень стека протоколов  TCP/IP

Назначение номеров портов прикладным процессам

     1. централизованное для популярных сервисов - стандартные, зарезервированные номера в

диапазоне 1-1023 Internet Assigned Numbers Authority (IANA) Например: серверы TFTP - 69, DNS- 53, DHCP – 67, SNMP - 161 Уникальны в пределах Internet

2. локальное для клиентских процессов выделяются операционной системой по запросу произвольные номера, обычно в диапазоне 1024-5000 уникальны в пределах компьютера

 

Page 9: Транспортный уровень стека протоколов  TCP/IP

Протокол UDP

Поток данных от приложения

Результат отдельной операции вывода

К протоколу IP

Каждая дейтаграмма UDP переносит отдельное пользовательское сообщение

Page 10: Транспортный уровень стека протоколов  TCP/IP

Формат UDP-пакета (user datagram)

Длина заголовка 8 байт

2 байта

UDP source port - номер порта процесса-отправителя

UDP destination port - номер порта процесса-получателя

UDP message length - длина UDP-пакета в байтах

UDP checksum - контрольная сумма UDP-пакета

Поле данных - IP-пакет

.

.

.

Page 11: Транспортный уровень стека протоколов  TCP/IP

Инкапсуляция дейтаграммы UDP

Заголовок Ethernet

Заголовок IP

Заголовок UDP

Данные протоколов более в ысоких уровней

Пример заголовка UDP с заполненными полями:

UDP: Source Port = 0x0035 (DNS) UDP: Destination Port = 0x0411 UDP: Total length = 132 (0x84) bytes UDP: UDP Checksum = 0x5333 UDP: Data: Number of data bytes remaining = 124(0x007C)

Тип протокола - 17

Page 12: Транспортный уровень стека протоколов  TCP/IP

Протокол надежной передачи данных TCP (RFC 793)

Сравнение с UDPПорты, сокеты, соединенияКонцепция скользящего окнаПроцедура установления соединенияПроцедура квитирования в TCPАдаптивный выбор тайм-аутаРеакция на перегрузку

Page 13: Транспортный уровень стека протоколов  TCP/IP

Общая характеристика протокола TCP

(Transmission Control Protocol)

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

обеспечивает надежную передачу

основан на соединениях

соединения не компьютеров, а приложений

более медленный, чем UDP

Инкапсуляция сегмента TCP

Заголовок Ethernet

Заголовок IP

Заголовок TCP

Данные протоколов более в ысоких уровней

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

Page 14: Транспортный уровень стека протоколов  TCP/IP

Общая характеристика протокола TCP

(Transmission Control Protocol)

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

обеспечивает надежную передачу

основан на соединениях

соединения не компьютеров, а приложений

более медленный, чем UDP

Инкапсуляция сегмента TCP

Заголовок Ethernet

Заголовок IP

Заголовок TCP

Данные протоколов более в ысоких уровней

Page 15: Транспортный уровень стека протоколов  TCP/IP

TCP-соединение создает надежный канал связимежду конечными узлами

IP

IP IP

IP

IPСеть 1 Сеть 5

Сеть 3

Сеть 2

Сеть 4

IP

TCP

IP

TCPTCP-соединение

Page 16: Транспортный уровень стека протоколов  TCP/IP

Основные задачи протокола TCP

передавать непрерывные потоки данных между клиентами вобоих направлениях

обеспечивать защиту от разрушения данных, потери,дублирования и нарушения очередности получения -нумерация, квитанции

управлять количеством данных, посылаемых ему отправителем- окном

адресовать приложения - номера портов

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

Page 17: Транспортный уровень стека протоколов  TCP/IP

TCP-соединение между приложениями полнодуплексная передача согласованные параметры процедуры обмена:

? номера портов? последовательные номера байт? размеры окон

Соединение идентифицируется парой сокетов:

Сокет (IP, порт)

Соединение (IP1, порт1) (IP2, порт2)

Сокет может принимать участие во многихсоединениях

Page 18: Транспортный уровень стека протоколов  TCP/IP

T C P -с о е д и н е н и е

T C P

I P

E th e r n e t

T C P

I P

E th e r n e t

п о р т Р 1

С е т ь

к о м п ь ю т е р 1I P 1

к о м п ь ю т е р 2I P 2

T C P - с о е д и н е н и е{ ( I P 1 , P 1 ) , ( I P 2 , P 2 ) } П о р т P 2

Page 19: Транспортный уровень стека протоколов  TCP/IP

Порты TCP

стандартные, зарезервированные номера назнач а-ются Assigned Numbers Authority (до 1024, 21 – FTP, 23 –Telnet…)

произвольно выбранные локальные номера (1024 -5000)

Page 20: Транспортный уровень стека протоколов  TCP/IP

Сегменты TCP

На входе TCP - поток (неструктурированный поток байтот приложениий и протоколов более высокого уровня)

На выходе TCP- сегмент ( непрерывная часть п отока)

Максимальный размер сегмента

ограничен стандартом

должен быть определен при установлении соединения

ограничен принятым в сети максимальным полем данныхкадра (для исключения фрагментации на хосте)

ограничен минимальным значением из множества MTUсоставной сети (для исключения фрагментации на шлюзах)

Page 21: Транспортный уровень стека протоколов  TCP/IP

FTP

Порт 21

telnet

Порт 23

Протокол TCP

Appl

Порт 1056

Протокол IP

Драйвер Ethernet

Внутренние буферы TCP

Сегменты TCP

Заголовок сегмента

Page 22: Транспортный уровень стека протоколов  TCP/IP

Идентификатор сегмента – номер первого байта

32600

14601460 14608701460

35520 3406038440 36980

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

•Приложение должно указать протоколу TCP, если требуется срочная передача – параметр push

•Приложение-отправитель должно указать протоколу TCP, если какие-то данные необходимо переслать приложению-получателю вне очереди – параметр urgent data

Page 23: Транспортный уровень стека протоколов  TCP/IP

Функция проталкивания запрос на отправку сообщения без ожидания заполнения

буфера поле PSH сегмента TCP = 1 проталкивание не привязано к границам сегмента

Срочная передача Признак URG Указатель срочности Urgent Pointer Передача вне потока

Page 24: Транспортный уровень стека протоколов  TCP/IP

К о н ц е п ц и я к в и т и р о в а н и я

В р а м к а х с о е д и н е н и я п р а в и л ь н о с т ь п е р е д а ч и к а ж д о г ос е г м е н т а д о л ж н а п о д т в е р ж д а т ь с я к в и т а н ц и е й п о л у ч а т е -л я ( п о л о ж и т е л ь н о й и л и о т р и ц а т е л ь н о й )

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

t

t

ПК

К

П

П

К в и т а н ц и и ( п р и ё м н и к )

П а к е т ы ( и с т о ч н и к )

Page 25: Транспортный уровень стека протоколов  TCP/IP

М е т о д " с к о л ь з я щ е г о о к н а "

П а к е т ы ( и с т о ч н и к )

К 2

W. . .32 1 21

К 1К в и т а н ц и и( п р и ё м н и к )

К 2К 1

П р и н я т и ек в и т а н ц и и( и с т о ч н и к )

W - р а з м е р о к н а - к о л и ч е с т в о к а д р о в , к о т о р ы е р а з р е ш а е т с яп е р е д а в а т ь б е з п о л у ч е н и я к в и т а н ц и и

Page 26: Транспортный уровень стека протоколов  TCP/IP

К в и т а н ц и я н а к а ж д ы й б а й т

W -р а з м е р о к н а

о т п р а в л е н ы ,к в и т а н ц и ип о л у ч е н ы

о т п р а в л е н ы ,к в и т а н ц и й

п о к а н е т

м о г у т б ы т ьо т п р а в л е н ы

н е л ь з яо т п р а в л я т ь

W

п о л у ч е н ак в и т а н ц и я

Page 27: Транспортный уровень стека протоколов  TCP/IP

К в и ти н ц и я н а к а ж д ы й с е гм е н т , о к н о - в б а й та х

W -р азм ер о к н а

о тп р авл ен ы ,к ви тан ц и ип о л уч ен ы

о тп р авл ен ы ,к ви тан ц и й

п о к а н ет

м о гутб ы ть

о тп р авл ен ы

н ел ь зяо тп р авл ять

сегм ен ты

Page 28: Транспортный уровень стека протоколов  TCP/IP

Параметры управления потоком

В каждом отправляемом сегменте каждая сторона обменасообщает другой стороне размер своего окна

ОКНО (win) - количество байтов (начиная с номераподтверждения), которое программа TCP готова в настоящиймомент принять

При получении сегмента соответствующая сторона отсылаетквитанцию - сегмент с подтверждением

ПОДТВЕРЖДЕНИЕ (ack)- число, на единицу превышающеемаксимальный номер байта в полученном сегменте

В каждом сегменте отправитель помещает номер первого байтаиз отправляемых данный

НОМЕР ОЧЕРЕДИ (seq) - номер байта, который определяетсмещение сегмента относительно потока отправляемых данных

Page 29: Транспортный уровень стека протоколов  TCP/IP

Фрагмент TCP-сеанса

len: 0, seq: 726000-727399, ack:2340403658, win: 8760, src: 1044 dst: 20 len: 1460, seq:2340403658-2340405117, ack: 727400, win:17520, src: 20 dst: 1044 TCP: .A...., len: 0, seq: 727400-728799, ack:2340405118, win: 8760, src: 1044 dst: 20

Page 30: Транспортный уровень стека протоколов  TCP/IP

Механизм подтверждения

копия отправленного сегмента ставится в очередьповторной передачи и запускает таймер

когда приходит подтверждение - сегмент удаляет-ся из очереди

если подтверждение не приходит до истечениясрока, то сегмент посылается повторно

механизм подтверждения является накопительным- подтверждение номера X означает, что все байтыс номерами N<X уже получены

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

Page 31: Транспортный уровень стека протоколов  TCP/IP

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

при многократном повторном использовании од-ного и того же соединения

количество номеров для очереди ограничено от 0до 232-1 генератор первоначальных 32 битных номеров очере-

ди меняет значения каждые 4 микросекунды полный цикл генератора составляет примерно 4.55 ча-

са при скорости 100 Мбит/с один цикл использования

всех номеров очереди составляет 5.4 минуты

Необходимость периода "молчания" после сбоя Первоначальный номер в очереди выясняется во

время установления соединения

Page 32: Транспортный уровень стека протоколов  TCP/IP

Формат заголовка сегмента TCP

Порт источника 2 байта, идентифицирует процесс-отправитель

Порт назначения 2 байта, идентиф ицирует процесс-получатель

Последовательный номер 4 байта, определяет смещение сегмента относительно потока отправля емых данных

Подтвержденный номер 4 байта, максимальный номер байта в получе н-ном сегменте, увеличенный на единицу

Длина заголовка 4 бита, измеренная в 32-битовых словах

Резерв 6 битов, поле зарезервировано

Кодовые биты 6 битов

Окно 2 байта, размер окна в байтах

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

Указатель срочности 2 байта, используется совместно с кодовым битомURG

Опции

Заполнитель (PADDING) фиктивное поле, используемое для доведениязаголовка до целого числа 32-битовых слов

Page 33: Транспортный уровень стека протоколов  TCP/IP

Кодовые биты (CODE BITS)

1. URG - срочное сообщение

2. ACK - квитанция на принятый сегмент

3. PSH - запрос на отправку без ожиданиязаполнения

4. RST - запрос на восстановление соединения

5. SYN - сообщение используемое для синхронизациисчетчиков переданных данных при установлениисоединения

6. FIN - признак достижения передающей сторонойпоследнего байта в потоке передаваемых данных

Page 34: Транспортный уровень стека протоколов  TCP/IP

Пример заголовка TCP-сегмента

TCP: Source Port = 0x0412

TCP: Destination Port = FTP [control]

TCP: Sequence Number = 695034 (0xA9AFA)

TCP: Acknowledgement Number = 0 (0x0)

TCP: Data Offset = 24 (0x18)

TCP: Reserved = 0 (0x0000)

TCP: Flags = 0x02 : ....S.

TCP: ..0..... = No urgent data

TCP: ...0.... = Acknowledgement field not significant

TCP: ....0... = No Push function

TCP: .....0.. = No Reset

TCP: ......1. = Synchronize sequence numbers

TCP: .......0 = No Fin

TCP: Window = 8192 (0x2000)

TCP: Checksum = 0x45C2

TCP: Urgent Pointer = 0 (0x0)

TCP: Options

TCP: Option Kind (Maximum Segment Size) = 2 (0x2)

TCP: Option Length = 4 (0x4)

TCP: Option Value = 1460 (0x5B4)

Page 35: Транспортный уровень стека протоколов  TCP/IP

Процедура установления соединения

порт - ресурс: необходимо получить номер порта открытие соединения - команда OPEN (аргумент

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

манда OPEN (аргумент неопределенный сокет) -процесс ждет получения запросов на соединение

Отмена соединения - обмен сегментами с флагомFIN

Page 36: Транспортный уровень стека протоколов  TCP/IP

Процедура трехкратного подтверждения

Каждая сторона посылает: начальное значение номера очереди отправления seq подтверждение начального номера очереди напарника ack первоначальный размер окна win

максимальный размер сегмента seg

Сегмент ACK

Сегмент SYN Seq2, win2, seg2

Сегмент Ack

Сегмент SYN Seq1, win1, seg1

Page 37: Транспортный уровень стека протоколов  TCP/IP

Алгоритм определения тайм-аутадля повторной посылки сегментов (RFC793)

1. Измерение времени обращения RTT (Round Trip Time)

2. Вычисление усредненного времени обращения SRTT (SmoothedRound Trip Time):

SRTT = a * SRTT + (1-a) * RTT

3. Определение контрольного времени повторной посылки RTO(Retransmission Timeout):

RTO = min[ ubound, max{lbound, (b * SRTT) }]

где

ubound - верхний предел контрольного времени(например, 1 мин),

lbound - нижний предел (например, 1 сек).a - фактор сглаживания (например, от 0.8 до 0.9),b - фактор изменения задержки (например, от 1.3 до 2.0).

Page 38: Транспортный уровень стека протоколов  TCP/IP

Управление окном. Реакция на перегрузку

99% потерь пакетов в Internet вызвано перегрузками и 1% -искажениями данных

Приемы оптимизации:

при установлении соединения заявляется большое окно,но впоследствии его размер существенно уменьшается

окно нужно уменьшать, когда свободный объем в буфереснижается 20-40% от максимально возможного объема

отправителю не стоит спешить с посылкой данных, покаокно не станет достаточно большим

при переполнение буферов в маршрутизаторах -централизованное изменение окна дифференцированно длявсех конечных узлов

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

Page 39: Транспортный уровень стека протоколов  TCP/IP

Алгоритмы управления потоком данных впротоколе TCP

4 основных алгоритма для управления потоком данных приперегрузках в Internet (RFC 2581 – Proposed Standard):

1) Slow Start —"м едленный старт"

2) Congestion Avoidance — "предупреждение перегрузок"

3) Fast Retransmit — "быстрый повтор"

4) Fast Recovery — "быстрое восстановление"

Во многих ситуациях эти алгоритмы используются совместно

Page 40: Транспортный уровень стека протоколов  TCP/IP

Congestion Window, CWND — "окно перегрузок", устанавливаемоепередатчиком

Receiver Window, RWND – окно, объявляемое приемником

Устанавливает передатчикУстанавливает приемник

CWND

RWND

ACK

Выбирается MIN (RWND, CWND)

Page 41: Транспортный уровень стека протоколов  TCP/IP

Slow Start —"м едленный старт"

Congestion Avoidance — "предупреждение перегрузок"

Page 42: Транспортный уровень стека протоколов  TCP/IP

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

Применяется:

в начале сессии TCP, когда условия загруженности сети ещене известны

после потери пакета — по истечению таймера повторнойпередачи

после длительного периода "молчания" сессии

Page 43: Транспортный уровень стека протоколов  TCP/IP

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

Передающий узел использует окно CWND = 1 SegMaxSize и отправляет один сегмент в SegMaxSize байт

При приходе очередной квитанции ACK окно CWNDнаращивается на SegMaxSize и отправляется столько сегментов,сколько разрешает CWND (но не больше RWND)

Наращивание размера окна CWND происходит до порога SSThrash(Slow Start Thrashold) 65535 — дальше действие алгоритма SlowStart прекращается

В результате размер окна и скорость передачи данных растут вгеометрической прогрессии: 1 – 2 – 4 – 8 – 16 …

Page 44: Транспортный уровень стека протоколов  TCP/IP

Предупреждение перегрузок

Применяется для осторожного повышения скорости передачипри выходе сессии в устойчивый режим

Условия применения — размер окна CWND превышает порогSSTrash

Передающий узел наращивает окно на 1 SegMaxSize каждыеRRT секунд

Page 45: Транспортный уровень стека протоколов  TCP/IP

"Быстрый повтор" / "Быстроевосстановление" при получении 3

дубликатов ACK

"Медленныйстарт"/"Предупреждение

перегрузок" по истечение таймераповторной передачи

Page 46: Транспортный уровень стека протоколов  TCP/IP

"Медленный старт" при истечении таймера

1. Порог перехода на "Предупреждение перегрузок"уменьшается в 2 раза:

SSThresh = CWND/2

2. Окно CWND устанавливается в 1 SegMaxSize (как при стартесессии)

Page 47: Транспортный уровень стека протоколов  TCP/IP

Алгоримтмы "Быстрый повтор"/"Быстрое восстановление"

Реакция передатчика на получение дубликатов квитанций ACK —потеря пакета только подозревается

1. При получении 4-x идентичных ACK подряд передатчик не ждет истечения таймера и посылает повторно сегмент, который ждетпередатчик (возможно утерянный)

2. Порог SSThresh уменьшается до CWND/2

3. Окно CWND уменьшается только до SSThresh + 3*SegMaxSize ->окно учитывает, что 3 пакета уже получены приемником

4. Передается столько пакетов, сколько разрешает окно CWND

5. При получении первого "нового" ACK окно уменьшается доSSThrash