Транспортный уровень Хабаровск, 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