Транспортный уровень Хабаровск, 2014
Содержание ТРАНСПОРТНЫЙ УРОВЕНЬ МОДЕЛИ OSI ТРАНСПОРТНЫЙ УРОВЕНЬ В ИНТЕРНЕТЕ ПРОТОКОЛ UDP ПРОТОКОЛ TCP Список используемой литературы
Модель OSI
Транспортный уровень Транспортный уровень, расположенный между прикладным и сетевым уровнями коммуникационной модели, играет ключевую роль в архитектуре Интернета. На данном уровне решается одна из наиболее фундаментальных проблем компьютерных сетей надежная передача по линии связи, допускающая искажения и потери данных.
Обеспечение логического соединения между процессами
Протоколы транспортного уровня Протокол UDP (User Datagram Protocol протокол пользовательских дейтаграмм) предоставляет приложениям службу ненадежной передачи данных без установления логического соединения. Протокол TCP (Transmission Control Protocol протокол управления передачей), напротив, предоставляет службу надежной передачи данных с установлением логического соединения. Создавая новое приложение, разработчик должен выбрать один из двух протоколов транспортного уровня для своего продукта.
Задача транспортного уровня Основной задачей UDP и TCP является обеспечение обмена данными между процессами, выполняющимися на оконечных системах, при помощи службы обмена данными между оконечными системами, предоставляемой протоколом сетевого уровня. Такое «продолжение» соединения между оконечными системами до уровня процессов называется мультиплексированием и демультиплексированием на транспортном уровне. Протоколы UDP и TCP также обеспечивают отсутствие искажений данных при передаче, включая в свои заголовки поля обнаружения ошибок.
Протокол UDP Протокол UDP, описанный в документе RFC 768, выполняет минимум действий, необходимых для протокола транспортного уровня. Фактически функции UDP сводятся к операциям мультиплексирования и демультиплексирования, а также несложной проверке наличия ошибок в данных. Таким образом, при использовании UDP приложение почти напрямую взаимодействует с протоколом сетевого уровня IP.
Cведения о протоколах прикладного и транспортного уровней, используемых популярными Интернет-приложениями Приложеие Прикладной протокол Транспортный протокол Электронная почтаSMTPTCP Доступ с удаленного терминалаTelnetTCP WebHTTPTCP Передача файловFTPTCP Удаленный файловый серверNFSTCP или UDP Потоковое мультимедиа НестандартныйTCP или UDP Интернет-телефония НестандартныйКак правило, UDP Сетевое администрированиеSNMPКак правило, UDP Протокол маршрутизацииRIPКак правило UDP Трансляция именDNSКак правило UDP
Формат дейтаграммы протокола UDP
Контрольная сумма 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) исключительно.
Метод скользящего окна
Формат дейтаграммы TCP Заголовок TCP сегмента содержит 20-байтную фиксированную часть и опциональную часть переменной длины
Процедура установления TCP соединения
Действия по установке соединения Хост А отправляет хосту Б запрос соединения посредством установки флага 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 соединению
Ликвидация соединения Протокол ТСР реализует процедуру поэтапной ликвидации соединения, предполагающую независимое его закрытие в обоих направлениях. Необходимость в закрытии соединения возникает, когда приложение сообщает своему модулю TCP об отсутствии у него данных для отправки. ТСР модуль завершает передачу данных, находящихся в его буфере, ожидает получения подтверждения об их успешном приеме и отправляет приемному модулю сегмент с установленным флагом FIN. Получив этот сегмент, приемный модуль информирует свое приложение о завершении поступления данных от передающего приложения, но продолжает отсылать данные (если они есть) в противоположном направлении. Получив подтверждение на отправленные данные, модуль ТСР отправляется сегмент FIN в противоположном направлении и, после получения на него подтверждения ACK, соединение считается ликвидированным.
Ликвидация TCP соединения
Web – серверы и TCP Как правило, для каждого нового соединения с клиентом сервер либо порождает новый процесс, либо создает поток выполнения в рамках существующего процесса. Каждый из процессов имеет собственный сокет соединения, с помощью которого сервер обменивается данными с клиентом. Современные высокопроизводительные web-серверы зачастую используют единственный процесс, создающий потоки выполнения для соединений с клиентами, при этом каждый поток располагает собственным сокетом (поток выполнения можно рассматривать как упрощенный процесс в рамках «нормального» процесса).
Список литературы Куроуз Д.Ф., Росс К.В. Компьютерные сети, 2 е издание, - СПб.: Питер, 2004 г., с. Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы, - СПб.: Питер, 2006 г., с. Стивенс У.Р. UNIX: Разработка сетевых приложений, - СПб.:Питер, 2003 г., с. Шайдо П.И. Использование интерфейса сокетов, - Архангельск: 2001 г., - 20 с.