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

Post on 30-Dec-2015

89 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

RARP

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

ARP

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

IGMPIPICMP

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

Telnet DHCPDNS

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

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

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

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

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

Application Programming Inetrface

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

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

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

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

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

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

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

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

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

• best effort

Порт Порт UDPUDP

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

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

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

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

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

Входн. буфер

TFTP

Порт 69

Выходн буфер

Входн. буфер

DHCP

Порт 67

Протокол UDP

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

Входн. буфер

Appl

Порт 1056

Протокол IP

Драйвер Ethernet

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

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

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

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

 

Протокол UDP

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

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

К протоколу IP

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

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

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

2 байта

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

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

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

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

Поле данных - 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

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

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

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

(Transmission Control Protocol)

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

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

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

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

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

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

Заголовок Ethernet

Заголовок IP

Заголовок TCP

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

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

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

(Transmission Control Protocol)

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

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

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

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

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

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

Заголовок Ethernet

Заголовок IP

Заголовок TCP

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

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

IP

IP IP

IP

IPСеть 1 Сеть 5

Сеть 3

Сеть 2

Сеть 4

IP

TCP

IP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Порты TCP

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

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

Сегменты TCP

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

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

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

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

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

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

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

FTP

Порт 21

telnet

Порт 23

Протокол TCP

Appl

Порт 1056

Протокол IP

Драйвер Ethernet

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

Сегменты TCP

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

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

32600

14601460 14608701460

35520 3406038440 36980

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

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

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

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

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

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

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

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

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

t

t

ПК

К

П

П

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

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

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

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

К 2

W. . .32 1 21

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

К 2К 1

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

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

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

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

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

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

п о к а н е т

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

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

W

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

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

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

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

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

п о к а н ет

м о гутб ы ть

о тп р авл ен ы

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

сегм ен ты

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

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

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

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

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

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

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

Фрагмент 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опции

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

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

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

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

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

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

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

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

Пример заголовка 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)

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

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

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

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

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

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

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

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

Сегмент ACK

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

Сегмент Ack

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

Алгоритм определения тайм-аутадля повторной посылки сегментов (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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CWND

RWND

ACK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

дубликатов ACK

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

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

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

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

SSThresh = CWND/2

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

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

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

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

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

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

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

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

top related