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

advertisement
Транспортный уровень
Хабаровск, 2014
Содержание
•
•
•
•
•
ТРАНСПОРТНЫЙ УРОВЕНЬ МОДЕЛИ OSI
ТРАНСПОРТНЫЙ УРОВЕНЬ В ИНТЕРНЕТЕ
ПРОТОКОЛ UDP
ПРОТОКОЛ TCP
Список используемой литературы
Модель OSI
Прикладной
Д
А
Н
Н
Ы
Е
Доступ к сетевым службам
Сетевой
Определение пути и IP
Представления
И кодирование данных
Сеансовый
Управление сеансом связи
Б
Л
Б
О
Л
К О
К
И
П
А
К
Е
Т
Ы
Транспортный
Надежное соединение точка-точка
К
А
Д
Р
Ы
Б
И
Т
Ы
Канальный
Mac и LLC
Физический
Кабель, сигналы, бинарная передача
Транспортный уровень
• Транспортный уровень, расположенный между
прикладным и сетевым уровнями
коммуникационной модели, играет ключевую роль в
архитектуре Интернета.
• На данном уровне решается одна из наиболее
фундаментальных проблем компьютерных сетей —
надежная передача по линии связи, допускающая
искажения и потери данных.
Обеспечение логического
соединения между процессами
Прикладной
Транспортный
Сетевой
Сетевой
Канальный
Физический
Канальный
Физический
Сетевой
Канальный
Физический
Прикладной
Транспортный
Сетевой
Канальный
Физический
Протоколы транспортного уровня
• Протокол UDP (User Datagram Protocol — протокол
пользовательских дейтаграмм) предоставляет
приложениям службу ненадежной передачи данных без
установления логического соединения.
• Протокол TCP (Transmission Control Protocol — протокол
управления передачей), напротив, предоставляет службу
надежной передачи данных с установлением логического
соединения.
• Создавая новое приложение, разработчик должен
выбрать один из двух протоколов транспортного уровня
для своего продукта.
Задача транспортного уровня
• Основной задачей UDP и TCP является обеспечение обмена
данными между процессами, выполняющимися на оконечных
системах, при помощи службы обмена данными между
оконечными системами, предоставляемой протоколом сетевого
уровня.
• Такое «продолжение» соединения между оконечными
системами до уровня процессов называется
мультиплексированием и демультиплексированием на
транспортном уровне. Протоколы UDP и TCP также
обеспечивают отсутствие искажений данных при передаче,
включая в свои заголовки поля обнаружения ошибок.
Протокол UDP
• Протокол UDP, описанный в документе RFC 768,
выполняет минимум действий, необходимых для
протокола транспортного уровня.
• Фактически функции UDP сводятся к операциям
мультиплексирования и демультиплексирования, а также
несложной проверке наличия ошибок в данных. Таким
образом, при использовании UDP приложение почти
напрямую взаимодействует с протоколом сетевого уровня
IP.
Cведения о протоколах прикладного и
транспортного уровней, используемых
популярными Интернет-приложениями
Приложеие
Прикладной протокол
Транспортный проткол
Электронная почта
SMTP
TCP
Доступ с удаленного терминала
Telnet
TCP
Web
HTTP
TCP
Передача файлов
FTP
TCP
Удаленный файловый сервер
NFS
TCP или UDP
Потоковое мультимедиа
Нестандартный
TCP или UDP
Интернет-телефония
Нестандартный
Как правило, UDP
Сетевое администрирование
SNMP
Как правило, UDP
Протокол маршрутизации
RIP
Как правило UDP
Трансляция имен
DNS
Как правило UDP
Формат дейтаграммы протокола UDP
32 бита
Порт отправителя
Порт получателя
Длинна сообщения
Контрольная сумма
Данные
Контрольная сумма UDP сегмента
• Контрольная сумма UDP-сегмента
предназначена для обнаружения ошибок, то
есть определения, были ли какие-либо биты
сегмента искажены в процессе передачи
(например, в результате помех на линии
связи или промежуточного хранения в
маршрутизаторе).
Протокол TCP
• Протокол TCP обеспечивает сквозную
доставку данных между прикладными
процессами, запущенными на узлах,
взаимодействующих по сети. Стандартное
описание TCP содержится в RFC-793.
Базовая передача данных
• Модуль TCP выполняет передачу непрерывных потоков
данных между своими клиентами в обоих направлениях.
Клиентами TCP являются прикладные процессы,
вызывающие модуль TCP при необходимости получить
или отправить данные процессу-клиенту на другом узле.
• Протокол TCP рассматривает данные клиента как
непрерывный не интерпретируемый поток октетов. TCP
разделяет этот поток на части для пересылки на другой
узел в TCP-сегментах некоторого размера. Для отправки
или получения сегмента модуль TCP вызывает модуль IP.
Обеспечение достоверности
• Модуль TCP обеспечивает защиту от повреждения, потери,
дублирования и нарушения очередности получения данных.
• Для выполнения этих задач все октеты в потоке данных
сквозным образом пронумерованы в возрастающем порядке.
Заголовок каждого сегмента содержит число октетов данных в
сегменте и порядковый номер первого октета той части потока
данных, которая пересылается в данном сегменте.
• Также для каждого сегмента вычисляется контрольная сумма,
позволяющая обнаружить повреждение данных.
• Протокол TCP обеспечивает
работу одновременно нескольких
Разделение
каналов
соединений. Каждый прикладной процесс идентифицируется
номером порта. Заголовок TCP-сегмента содержит номера
портов процесса-отправителя и процесса-получателя. При
получении сегмента модуль TCP анализирует номер порта
получателя и отправляет данные соответствующему
прикладному процессу.
• Все распространенные сервисы Интернет имеют
стандартизованные номера портов. Совокупность IP-адреса и
номера порта называется сокетом. Сокет уникально
идентифицирует прикладной процесс в Интернет.
Управление соединениями
• Соединение - это совокупность информации о состоянии
потока данных, включающая сокеты, номера посланных,
принятых и подтвержденных октетов, размеры окон.
• Каждое соединение уникально идентифицируется в
Интернет парой сокетов.
• Соединение характеризуется для клиента именем,
которое является указателем на структуру TCB
(Transmission Control Block), содержащую информацию о
соединении.
• Открытие соединения клиентом осуществляется вызовом
функции OPEN, которой передается сокет, с которым
требуется установить соединение. Функция возвращает
имя соединения. Различают два типа открытия
соединения: активное и пассивное.
Установка соединения по TCP
Начало
прослушивания
Сервер
Клиент
Установска порта
сервера
Установка порта
клиента
Соединение
Ожидание запроса
соединения
Подтверждение
Установка
соединения
Обмен данными
Чтение/запись
Закрытие
Закрытие
соединения
Чтение/запись
Закрытие
соединения
Закрытие
Управление потоком
• Для ускорения и оптимизации процесса передачи больших объемов
данных протокол TCP определяет метод управления потоком, называемый
методом скользящего окна, который позволяет отправителю посылать
очередной сегмент, не дожидаясь подтверждения о получении в пункте
назначения предшествующего сегмента.
• Протокол TCP формирует подтверждения не для каждого конкретного
успешно полученного пакета, а для всех данных от начала посылки до
некоторого порядкового номера ACK SN (Acknowledge Sequence Number)
исключительно.
Метод скользящего окна
Окно 6000
Получение
данных
подтверждено
1
INS=0
IN S = 0
1001
Текущий
передаваемый
сегмент
2001
ACK
2001
A C K
2 0 0 1
3001
Т
4001
Текущий
е к у щ и й
SN
S N
4 0 0 1
4001
5001
6001
7001
Формат дейтаграммы TCP
4
Версия
8
IHL
16
Тип сервиса
Общий размер
Идентификация
Время жизни
32
Флаги
протокол
Смещение сегмента
Контрольная сумма заголовка
Адрес отправителя
Адрес получателя
Опции и заполнение
Данные
Заголовок TCP сегмента содержит 20-байтную фиксированную часть и
опциональную часть переменной длины
Процедура установления TCP
соединения
Хост А
Хост А
Хост В
Хост В
SYN, S
e
А
q_no =
m
SYN, Seq_no = k, ACK, Ack_no = m+1
Seq_no
= m+1
, ACK
, Ack_
no = k
+1
B
Действия по установке
соединения
• Хост А отправляет хосту Б запрос соединения посредством
установки флага SYN и инициализирует значение начального
номера нумерующей последовательности (Seq_no = m).
• Хост Б отвечает на этот запрос установкой флага ACK и определяет
поле «Порядковый номер подтверждения» значением на единицу
большим m (Ack_no = m+1); одновременно, хост Б в своем ответе А
отправляет запрос соединения (SYN) и также инициализирует
значение начального номера своей нумерующей
последовательности (Seq_no = k).
• Хост А отвечает на запрос соединения от хоста Б установкой флага
ACK и подтверждением ожидания следующего байта данных с
порядковым номером k+1 (Ack_no = k+1); при этом, значение поля
«Порядковый номер сегмента» устанавливается в значение m+1
(Seq_no = m+1).
Фаза передачи данных
• Предоставление приложениям сервиса надежной
доставки данных в протоколе ТСР обеспечивается
использованием алгоритма ARQ с выборочным
повторением и механизма скользящего окна.
• При этом, особенностью протокола ТСР является
реализация скользящего окна не на уровне сегментов, а
на уровне байтов. Протокол также обеспечивает
управление потоком в фазе передачи данных посредством
регулирования величины объявляемого окна и величины
окна передачи.
Передача данных по TCP соединению
ХостАА
Хост
ХостББ
Хост
t0
00
Seq_no=0, Ack_no=20
Win=2048, No data
t1
Seq_no=2000, Ack_no=1
t2
А
Seq_no=3024, Ack_no=1
048
Seq_no=1, Ack_no=4
t4
Seq_no=4048, Ack_
no=129
Win=1024, Data=2000-3023
Win=1024, Data=3024-4047
Win=512, Data=1-128
Win=1024, Data=
4048-4559
Б
Б
t3
Ликвидация соединения
• Протокол ТСР реализует процедуру поэтапной ликвидации
соединения, предполагающую независимое его закрытие в
обоих направлениях.
• Необходимость в закрытии соединения возникает, когда
приложение сообщает своему модулю TCP об отсутствии у него
данных для отправки. ТСР модуль завершает передачу данных,
находящихся в его буфере, ожидает получения подтверждения
об их успешном приеме и отправляет приемному модулю
сегмент с установленным флагом FIN.
• Получив этот сегмент, приемный модуль информирует свое
приложение о завершении поступления данных от
передающего приложения, но продолжает отсылать данные
(если они есть) в противоположном направлении. Получив
подтверждение на отправленные данные, модуль ТСР
отправляется сегмент FIN в противоположном направлении и,
после получения на него подтверждения ACK, соединение
считается ликвидированным.
Ликвидация TCP соединения
TCP-А
-А
TCP
TCP-Б
-Б
TCP
FIN, Seq_no=4386
=4387
Data=303-452, Ack_no
Доставлено
150 байт
А
Ack_no=453
FIN, Seq_no=453, Ac
k_no=4387
Ack_no=454
Б
Б
Web – серверы и TCP
• Как правило, для каждого нового соединения с клиентом
сервер либо порождает новый процесс, либо создает поток
выполнения в рамках существующего процесса. Каждый из
процессов имеет собственный сокет соединения, с помощью
которого сервер обменивается данными с клиентом.
• Современные высокопроизводительные web-серверы зачастую
используют единственный процесс, создающий потоки
выполнения для соединений с клиентами, при этом каждый
поток располагает собственным сокетом (поток выполнения
можно рассматривать как упрощенный процесс в рамках
«нормального» процесса).
Список литературы
•
•
•
•
•
Куроуз Д.Ф., Росс К.В. Компьютерные сети,
2е издание, - СПб.: Питер, 2004 г., - 764 с.
Олифер В. Г., Олифер Н. А. Компьютерные
сети. Принципы, технологии, протоколы, СПб.: Питер, 2006 г., - 672 с.
Стивенс У.Р. UNIX: Разработка сетевых
приложений, - СПб.:Питер, 2003г., - 1088 с.
Шайдо П.И. Использование интерфейса
сокетов, - Архангельск: 2001 г., - 20 с.
http://ru.wikipedia.org
Download