Транспортный уровень
Назначение номеров портов
MUX/DMUX потоков
Порты TCP/UDP
UDP: User Datagram Protocol
Инкапсуляция UDP-дейтаграмм в IP-дейтаграмме
Формат UDP-пакета
Вычисление контрольной суммы
Формат UDP-пакета
TCP (Transmission Control Protocol)
Функции протокола TCP
Базовая передача данных
Обеспечение достоверности
Управление соединениями.
Управление потоком
Инкапсуляция TCP данных в IP дейтаграмму
Формат TCP-сегмента
Формат TCP-сегмента
TCP флаги
Режим срочности (Urgent Mode)
TCP опции (часто используемые)
Раннее предупреждение о перегрузках
Установление TCP соединения
Медленный старт и предотвращение переполнения
TCP Congestion Control (2)
422.00K
Categories: internetinternet programmingprogramming

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

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

• Задача транспортного уровня заключается в передаче данных
между любыми прикладными процессами, выполняющимися на
любых узлах сети. Действительно, после того, как пакет
средствами протокола IP доставлен в компьютер-получатель,
данные необходимо направить конкретному процессуполучателю. Каждый компьютер может выполнять несколько
процессов, более того, прикладной процесс тоже может иметь
несколько точек входа, выступающих в качестве адреса
назначения для пакетов данных.
• В семействе протоколов TCP/IP о используются два
существенно различных транспортных протокола: TCP/IP
(Transmission Control Protocol – протокол управления передачей
данных) и UDP (User Datagram Protocol – протокол дейтаграмм
пользователя).
• TCP обеспечивает надежную передачу данных между двумя
компьютерами в сети, освобождая тем самым от этого
прикладной уровень.
• Напротив, UDP предоставляет прикладному уровню более
примитивный сервис. Он лишь рассылает данные адресатам в
виде пакетов, без гарантии доставки. Предполагается, что
требуемая степень надежности пересылки должна
обеспечиваться самим прикладным уровнем.

2.

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

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

• Централизованно
• Локально
• Динамическое
(IANA)
(Разработчик)
(ОС)
N порта - Id прикладного процесса в узле
Прикладной уровень - (клиент-сервер)
Серверные порты
Клиентские порты
(0-1023) - Зарезервированные (сервисы)
>1023 – “свободные” (клиентские)
ОС UNIX - файл
/etc/services.

4. MUX/DMUX потоков

5. Порты TCP/UDP

ftp-data
ftp
ssh
telnet
smtp
domain
finger
http
pop3
auth
nntp
netbios-ns
netbios-dgm
netbios-ssn
imap4
snmp
printer
printer
nfsd
nfsd
squid
x11
font-service
20/tcp
21/tcp
22/tcp
23/tcp
25/tcp
53/udp
79/tcp
80/tcp
110/tcp
113/tcp
119/tcp
137/udp
138/udp
139/udp
143/tcp
161/udp
515/tcp
515/udp
2049/tcp
2049/udp
3128/tcp
6000/tcp
7100/tcp
File Transfer [Default Data]
File Transfer [Control]
SSH Remote Login Protocol
Telnet
Simple Mail Transfer Protocol
Domain Name Server
World Wide Web HTTP(8000,8080)
Post Office Protocol( Ver 3)
ident tap
#Authentication Service
#Network News Transfer Protocol
NETBIOS Name Service
NETBIOS Datagram Service
NETBIOS Session Service
Interim Mail Access Pr v4
SNMP
spooler
spooler
nfs
# NFS server daemon
nfs
# NFS server daemon
# Proxy server
#6000-6063 are assigned to X Window System
#X Font Service

6. UDP: User Datagram Protocol

• Официальная спецификация UDP приведена в RFC
768 [Postel 1980].
• UDP простой, ориентированный на передачу
дейтаграмм, протокол транспортного уровня: за один
раз процесс выдает одну UDP дейтаграмму, в
результате чего передается одна IP дейтаграмма.
• UDP является ненадежным протоколом: он
отправляет дейтаграммы, которые приложение
пишет в IP уровень, однако не существует гарантии
того, что они достигнут конечного пункта назначения.
• . UDP является дейтаграммным протоколом, то есть
он не устанавливает логического соединения, не
нумерует и не упорядочивает пакеты данных.

7. Инкапсуляция UDP-дейтаграмм в IP-дейтаграмме

Инкапсуляция UDP-дейтаграмм в IPдейтаграмме
Номер протокола UDP – 17 (в заголовке IP)

8. Формат UDP-пакета

9.

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

10. Вычисление контрольной суммы

Контрольная сумма UDP охватывает UDP заголовок и UDP данные.
Для UDP контрольная сумма необязательна
Для расчета контpольной суммы в UDP используется больше инфоpмации, чем
пpедставлено только в UDP-дейтаграмме. Чтобы вычислить контpольную сумму,
UDP приписывает псевдо-заголовок к дейтагpамме и добавляет в конец октет из
нулей для дополнения сообщения до числа бит, кратного шестнадцати и вычисляет
контpольную сумму всего этого.
Цель использования псевдо-заголовка - пpовеpка того, что UDP-дейтагpамма
достигла своего настоящего места назначения.

11. Формат UDP-пакета

16-bit
Source Port
Number
16-bit Destination Port
Number
16-bit Length
16-bit Checksum
Data

12. TCP (Transmission Control Protocol)

• Протокол TCP (Transmission Control Protocol) обеспечивает
сквозную доставку данных между прикладными процессами,
запущенными на узлах, взаимодействующих по сети.
Стандартное описание TCP содержится в RFC-793. Позднее
появились исправления и добавления – RFC 1122, расширения RFC 1323 - TCP Extensions for High Performance, RFC 2883SACK, RFC-2923-MTU.
• TCP - надежный байт-ориентированный (byte-stream) протокол с
установлением соединения (connection-oriented) .
• Всегда существуют две конечные точки, которые общаются друг
с другом с помощью TCP соединения. Широковещательная
рассылка и групповая рассылка, не могут использовать TCP.

13. Функции протокола TCP

• Базовая передача данных
• Обеспечение достоверности
• Разделение каналов
• Протокол TCP обеспечивает работу одновременно
нескольких соединений. Каждый прикладной процесс
идентифицируется номером порта. Заголовок TCPсегмента содержит номера портов процесса-отправителя и
процесса-получателя. При получении сегмента модуль TCP
анализирует номер порта получателя и отправляет данные
соответствующему прикладному процессу.
• Управление соединениями
• Управление потоком

14. Базовая передача данных

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

15. Обеспечение достоверности

• Модуль TCP обеспечивает защиту от повреждения, потери,
дублирования и нарушения очередности получения
данных.
Для выполнения этих задач все октеты в потоке данных сквозным
образом пронумерованы в возрастающем порядке. Заголовок каждого
сегмента содержит число октетов данных в сегменте и порядковый
номер первого октета той части потока данных, которая пересылается
в данном сегменте.
Для каждого сегмента вычисляется контрольная сумма, позволяющая
обнаружить повреждение данных.
При удачном приеме октета данных принимающий модуль посылает
отправителю подтверждение о приеме - номер удачно принятого
октета. Если в течение некоторого времени отправитель не получит
подтверждения, считается, что октет не дошел или был поврежден, и
он посылается снова.
Нумерация октетов используется также для упорядочения данных в
порядке очередности и обнаружения дубликатов (которые могут быть
посланы из-за большой задержки при передаче подтверждения или
потери подтверждения).

16.


Данные от приложения разбиваются на блоки определенного размера, которые
будут отправлены. Блок информации, который передается от TCP в IP,
называется сегментом (segment). Когда TCP посылает сегмент, он
устанавливает таймер, ожидая, что с удаленного конца придет подтверждение
на этот сегмент. Если подтверждение не получено по истечении времени,
сегмент передается повторно.
Когда TCP принимает данные от удаленной стороны соединения, он отправляет
подтверждение.
TCP осуществляет расчет контрольной суммы для своего заголовка и данных.
Это контрольная сумма, рассчитываемая на концах соединения, целью которой
является выявить любое изменение данных в процессе передачи. Если сегмент
прибывает с неверной контрольной суммой, TCP отбрасывает его и
подтверждение не генерируется. (Ожидается, что отправитель отработает таймаут и осуществит повторную передачу.)
Так как TCP сегменты передаются в виде IP дейтаграмм, а IP дейтаграммы
могут прибывать беспорядочно, также беспорядочно могут прибывать и TCP
сегменты. После получения данных TCP может по необходимости изменить их
последовательность, в результате приложение получает данные в правильном
порядке.
Так как IP датаграмма может быть продублирована, принимающий TCP должен
отбрасывать продублированные данные.
TCP осуществляет контроль потока данных. Каждая сторона TCP соединения
имеет определенное пространство буфера. TCP на принимающей стороне
позволяет удаленной стороне посылать данные только в том случае, если
получатель может поместить их в буфер. Это предотвращает от переполнения
буферов медленных хостов быстрыми хостами.

17. Управление соединениями.

• Соединение - это совокупность информации о
состоянии потока данных, включающая сокеты,
номера посланных, принятых и подтвержденных
октетов, размеры окон.
• Каждое соединение уникально идентифицируется
в Интернет парой сокетов. (Совокупность IP-адреса и
номера порта называется сокетом)
• Соединение характеризуется для клиента
именем, которое является указателем на
структуру TCB (Transmission Control Block),
содержащую информацию о соединении.

18. Управление потоком


Для ускорения и оптимизации процесса передачи больших объемов данных
протокол TCP определяет метод управления потоком, называемый методом
скользящего окна, который позволяет отправителю посылать очередной
сегмент, не дожидаясь подтверждения о получении в пункте назначения
предшествующего сегмента.
Модуль TCP может использовать алгоритм "медленного старта", формируя при
установлении соединения окно перегрузки, размер которого изначально равен
размеру одного сегмента. Это окно показывает, сколько сегментов TCP-модуль,
с его собственной точки зрения, может отправить без получения
подтверждения.
Алгоритм предотвращения переполнения
Быстрая повторная передача и алгоритм быстрого
восстановления

19. Инкапсуляция TCP данных в IP дейтаграмму

Номер протокола TCP – 6 (в заголовке IP)

20. Формат TCP-сегмента

21. Формат TCP-сегмента

16-bit Source
Port Number
16-bit Destination
Port Number
32-bit Sequence Number
32-bit Acknowledgement Number
4-bit Header
Length
6-bit
Reserved
6-bit
Flags
16-bit Window Size
16-bit Urgent
Pointer
16-bit TCP Checksum
Options & Padding
Data

22.

• Номер последовательности - Sequence Number (SN)
- порядковый номер первого октета в поле данных
сегмента среди всех октетов потока данных для
текущего соединения, то есть если в сегменте
пересылаются октеты с 2001-го по 3000-й, то
SN=2001. Если в заголовке сегмента установлен бит
SYN (фаза установления соединения), то в поле SN
записывается начальный номер (ISN), например, 0.
Номер первого октета данных, посылаемых после
завершения фазы установления соединения, равен
ISN+1.
• Номер подтверждения - Acknowledgment Number
(ACK) - если установлен бит ACK, то это поле
содержит порядковый номер октета, который
отправитель данного сегмента желает получить. Это
означает, что все предыдущие октеты (с номерами от
ISN+1 до ACK-1 включительно) были успешно
получены.

23. TCP флаги

• URG - поле указателя срочности (Urgent Pointer)
задействовано; ;
• ACK - поле номера подтверждения (Acknowledgment
Number) задействовано; ;
• PSH - осуществить “проталкивание” - если модуль
TCP получает сегмент с установленным флагом PSH,
то он немедленно передает все данные из буфера
приема процессу-получателю для обработки, даже
если буфер не был заполнен;
• RST - сброс текущего соединения;
• SYN - запрос на установление соединения;

24. Режим срочности (Urgent Mode)

• TCP предоставляет режим срочности (urgent mode), который
позволяет одному концу сообщить другому о том, что в обычный
поток данных каким-либо образом были помещены "срочные
данные". Удаленный конец, таким образом, уведомляется о том,
что в поток данных помещены срочные данные, и уже от него
зависит (от принимающего конца) как с ними поступить.
• Уведомление о присутствии срочных данных в потоке
осуществляется путем установки двух полей в TCP заголовке.
Устанавливается бит URG, а 16-битный указатель срочности
содержит положительное смещение, которое должно быть
добавлено к полю номера последовательности в TCP заголовке,
чтобы получить номер последовательности последнего байта
срочных данных.

25. TCP опции (часто используемые)

• MSS - максимальный размер сегмента
(Maximum Segment Size). (
Используется только в SYN-сегментах
на этапе установки соединения.
• WS – масштаб окна (window scale)
• SACK – выборочное подтверждение
(Selective Acknowledgement).

26. Раннее предупреждение о перегрузках


В настоящее время 2 из зарезервированных
ранее 6 бит используются в алгоритме раннего
предупреждения о перегрузках (совместно с
полем ECN в заголовке IP пакета).
Новые флаги
• CWR - Congestion Window Reduced
• ECE – ECN - Echo
0
1
2
3
4
5
6
7
Длина заголовка
Зарезервировано
8
9
10
11
12
13
14
15
C
W
R
E
C
E
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N

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

A
3.
4.
запрос
A
B
SYN, ISN
1.
2.
B
A
B ok!
+ запрос
B
A
ACK, SYN, ISN
ACK
ACK, данные
B
A ok!

28.


Запрашивающая сторона (которая, как правило, называется
клиент) отправляет SYN сегмент, указывая номер порта
сервера, к которому клиент хочет подсоединиться, и исходный
номер последовательности клиента (в данном примере ISN,
1415531521). Это сегмент номер 1.
Сервер отвечает своим сегментом SYN, содержащим
исходный номер последовательности сервера (сегмент 2).
Сервер также подтверждает приход SYN клиента с
использованием ACK (ISN клиента плюс один). На SYN
используется один номер последовательности.
Клиент должен подтвердить приход SYN от сервера с
использованием ACK (ISN сервера плюс один, сегмент 3).
Этих трех сегментов достаточно для установления
соединения. Часто это называется трехразовым
рукопожатием (three-way handshake).

29. Медленный старт и предотвращение переполнения

30.


Медленный старт- это способ первоначально установить поток
данных по соединению.
Предотвращение переполнения - это способ, позволяющий
предотвратить потерю пакетов.
Предотвращение переполнения и медленный старт требуют, чтобы для
каждого соединения были определены две переменные: окно
переполнения, cwnd, и размер порога медленного старта, ssthresh.
Инициализация заданного соединения устанавливает cwnd в один
сегмент, а ssthresh в 65535 байт. Подпрограмма вывода TCP определит,
какое из значений меньше: cwnd или окно, объявленное получателем и
никогда не пошлет больше минимального значения.
Если cwnd меньше или равно ssthresh, используется медленный старт;
иначе используется предотвращение переполнения.
Предотвращение переполнения это способ контролировать поток
данных, со стороны отправителя, тогда как объявление окна это способ
контролировать поток данных, со стороны получателя.

31.


Инициализация заданного соединения устанавливает cwnd в один сегмент, а
ssthresh в 65535 байт. Подпрограмма вывода TCP определит, какое из значений
меньше: cwnd или окно, объявленное получателем и никогда не пошлет больше
минимального значения. Предотвращение переполнения это способ
контролировать поток данных, со стороны отправителя, тогда как
объявление окна это способ контролировать поток данных, со стороны
получателя.
Первый основан на оценке отправителем того, насколько переполнена сеть,
тогда как последний связан с величиной доступного буферного пространства у
получателя для данного соединения.
Когда возникает переполнение (на что указывает тайм-аут или получение
дублированных ACK), одна половина текущего размера окна (меньшее значение
из величин cwnd и размера окна, объявленного получателем, но по меньшей
мере два сегмента) сохраняется в ssthresh. Более того, если мы узнали о
переполнении с помощью тайм-аута, cwnd устанавливается в один сегмент (то
есть осуществляется медленный старт). Когда новые данные подтверждены
удаленным концом, cwnd увеличивается, однако способ этого увеличения
зависит от того, работает ли алгоритм медленного старта или предотвращения
переполнения. Если cwnd меньше или равно ssthresh, используется медленный
старт; иначе используется предотвращение переполнения. Медленный старт
продолжается до тех пор, пока мы не достигнем половины пути до того момента
где были, когда возникло переполнение (то есть, до того момента пока мы не
запишем половину размера окна, которое доставило нам проблемы в шаге 2),
после чего используется алгоритм предотвращения переполнения. Медленный
старт требует, чтобы cwnd начиналась с одного сегмента и увеличивалась на
один сегмент каждый раз при приеме ACK.

32. TCP Congestion Control (2)

An example of the Internet congestion algorithm.

33.

• Алгоритм быстрой повторной передачи
вступает в действие, когда TCP определяет
потерю сегмента и номер потерянного
сегмента по наличию небольшого количества
последователььных дублированных
подтверждений (ACK). Потерянный сегмент
передается повторно (не ожидая истечения
таймера повторной передачи).
• Алгоритм быстрого востановления говорит,
что после быстрой повторной передачи
необходимо осуществить предотвращение
переполнения, а не медленный старт.
English     Русский Rules