Кафедра телекомунікаційних систем Лекція 5. ЗАГАЛЬНІ ВІДОМОСТІ ПРО ПРОТОКОЛИ ТРАНСПОРТНОГО РІВНЯ Навчальні питания: 1.Загальні відомості про UDP протокол. 2. Протокол TCP.
PDHSDHATMКабель, радио, оптоволокно Физический Звена данных Сетевой Транспортный UDPTCP ICMPIGMP RARPARP Протоколы маршрутизации RIP, OSPF, BPG IP EthernetIGMPPPPFDDI Протоколы определяются основными технологиями сетей Прикладной SMTP FTP DNS SNMP HTTP NFS TFTP
USER DATAGRAM PROTOCOL
Таким образом, если на уровне IP для определения места доставки пакета используется адрес, то на уровне UDP - номер порта. Протокол UDP (User Datagram Protocol, RFC-768) является одним из основных и старейших, расположенных непосредственно над IP. Протокол UDP обеспечивает доставку дейтаграмм, но не требует подтверждения их получения. К заголовку IP-пакета UDP добавляет поля порт отправителя и порт получателя, которые обеспечивают мультиплексирование информации между различными прикладными процессами, а также поля длина UDP- дейтаграммы и контрольная сумма, позволяющие поддерживать целостность данных.
UDP NFS (Network File System) TFTP (Trivial File Transfer protocol, RFC-1350) RPC (Remote Procedure Call, RFC- 1057) SNMP (Simple Network Management Protocol, RFC-1157) Малые накладные расходы, связанные с форматом UDP, а также отсутствие необходимости подтверждения получения пакета делают этот протокол наиболее популярным при реализации приложений мультимедиа, но главное его место работы - локальные сети и мультимедиа.
Сервер Клиент Прикладные процессы и модули UDP взаимодействуют через UDP-порты. Порт 161 (SNMP) Порт 161 (SNMP) 1. Запрос по порту Ответ сервера Таблицы для стандартных значений номеров портов можно найти по адресу: htm
Данные, отправляемые прикладным процессом через модуль UDP, достигают места назначения как единое целое. Например, если процесс-- отправитель производит 5 записей в порт, то процесс--получатель должен будет сделать 5 чтений. Размер каждого записанного сообщения будет совпадать с размером каждого прочитанного. Протокол UDP сохраняет границы сообщений, определяемые прикладным процессом. Он никогда не объединяет несколько сообщений в одно и не делит одно сообщение на части. Формат UDP-дейтаграммы 8 байт!
Модуль IP передает поступающий IP-пакет модулю UDP, если в заголовке этого пакета указан код протокола UDP. Заголовок IP-пакета
ОБОЗНАЧЕНИЕ НЕКОТОРЫХ ПРОТОКОЛОВ (в заголовке IP-пакета, поле Протокол) Значение Протокол 1ICMP 2IGMP 6TCP 17UDP 89OSPF UDP
? Пример 1 Учитывая, что максимальная длина IP-дейтаграммы равна байтам, определить, чему равна максимальная протяженность информационного поля UDP-дейтаграммы, инкапсулированной в ІР?
TRANSMISSION CONTROL PROTOCOL
Протокол TCP (Transmission Control Protocol протокол управления передачей) разработан для обеспечения надежного сквозного байтового потока по ненадежной сети. При разработке TCP основное внимание уделялось способности протокола адаптироваться к свойствам объединенной сети и отказоустойчивости при возникновении различных проблем. Протокол TCP описан в RFC 793. Расширения протокола приведены в RFC Ключевым свойством TCP, определяющим всю структуру протокола, является то, что в TCP-соединении у каждого байта есть свой 32- разрядный порядковый номер.
Протокол TCP используется в тех случаях, когда требуется надежная доставка сообщений. Он освобождает прикладные процессы от необходимости использовать таймауты и повторные передачи для обеспечения надежности. Прикладные процессы взаимодействуют с модулем TCP через порты. Комбинация IP адреса и номера порта называется сокетом (socket). Пара сокетов (содержащая IP адрес клиента, номер порта клиента, IP адрес сервера и номер порта сервера) указывает две конечные точки, которые уникально идентифицируют каждое TCP соединение. При отслеживании подтверждения доставки в TCP реализуется алгоритм "скользящего" окна.
TCP FTP (file transfer protocol) TELNET SMTP HTTP Xwindow RCP
Ethernet IP TCP FTP FTP - пример прикладного процесса, использующего TCP
модуль TCP модуль IP процессы модуль IP модуль TCP процессы Модули TCP выполняют функции мультиплексоров/ демультиплексоров между прикладными процессами и IP- модулем
Формат TCP-сегмента
ЗНАЧЕНИЯ БИТОВ ПОЛЯ ФЛАГИ обозначение битов (слева на право) поля флаги значение бита, если он равен 1 URGФлаг важной информации, поле Указатель важной информации имеет смысл, если urg=1 ACKНомер октета, который должен прийти следующим, правилен PSHЭтот сегмент требует выполнения операции push. Получатель должен передать эти данные прикладной программе как можно быстрее RSTПрерывание связи SYNФлаг для синхронизации номеров сегментов, используется при установлении связи FINОтправитель закончил посылку байтов
Данные поля уникально идентифицируют номеров портов отправителя и получателя (по 16 бит на номер порта). В приложениях передатчика и приемника этому полю соответствуют 32-разрядные счетчики числа байт, которые при переполнении обнуляются. При значении флага syn=1 в этом поле лежит код ISN (Initial Sequence Number), выбираемый для конкретного соединения. Первому байту, передаваемому через созданное соединение, присваивается номер ISN+1. В RFC рекомендуется увеличивать счетчик ISN на 1 каждые 4 микросекунды.
32-битовое поле номер октета, который должен прийти следующим, содержит код, который на единицу больше номера последнего успешно доставленного (принятого) байта. Содержимое этого поля интерпретируется получателем сегмента, только если присутствует флаг ACK. Это поле заполняется в заголовках всех сегментов, передаваемых после установления соединения, а флаг AСK=1. Поле HLEN определяет длину заголовка сегмента, которая измеряется в 32-разрядных словах. Это поле необходимо, так как в заголовке могут содержаться поля опций переменной длины.
Поле резерв, предназначенное для будущего использования, в настоящее время должно обнуляться Поле размер окна сообщает, сколько октетов готов принять получатель (флаг ACK=1) вслед за байтом, указанным в поле номер октета, который должен прийти следующим. Окно имеет принципиальное значение, оно определяет число сегментов, которые могут быть посланы без получения подтверждения.
Поле указатель важной информации представляет собой указатель последнего байта, содержащий информацию, которая требует немедленного реагирования. Поле имеет смысл лишь при флаге URG=1, отмечающем сегмент с первым байтом "важной информации" Поле контрольная сумма предназначено для обеспечения целостности сообщения. Перед контрольным суммированием к TCP- сегменту добавляется псевдо заголовок (как и в случае протокола UDP), который включает в себя адреса отправителя и получателя, код протокола и длину сегмента, исключая псевдо заголовок.
Поле опции зарезервировано на будущее и в заголовке может отсутствовать, его размер переменен и дополняется до кратного 32-бит с помощью поля заполнитель. Поле данные в TCP-сегменте может и отсутствовать, характер и формат передаваемой информации задается исключительно прикладной программой, теоретически максимальный размер этого поля составляет в отсутствии опций байт (на практике, помимо MSS (Maximum Segment Size), нужно помнить, например, о значении MTU для Ethernet, которое немногим больше 1500 байт).
ПОРЯДОК УСТАНОВЛЕНИЯ СОЕДИНЕНИЯ КЛИЕНТ-СЕРВЕР Клиент посылает SYN-сегмент с указанием номера порта сервера, который предлагается использовать для организации канала связи (active open). Сервер откликается, посылая свой SYN-сегмент, содержащий идентификатор (ISN - Initial Sequence Number). Начальное значение ISN не равно нулю. Процедура называется passive open. Клиент отправляет подтверждение (ACK) получения SYN- сегмента от сервера с идентификатором равным ISN(сервера)+1.
Алгоритм установления связи
Существует проблема при пересылке данных по каналам TCP, которая называется синдром узкого окна (silly window syndrome; Clark, 1982). Такого рода проблема возникает в том случае, когда данные поступают отправителю крупными блоками, а интерактивное приложение адресата считывает информацию побайтно. Предположим, что в исходный момент времени буфер адресата полон и передающая сторона знает об этом (window=0). Интерактивное приложение считывает очередной октет из TCP-потока, при этом TCP-агент адресата посылает отправителю уведомление, разрешающее ему послать один байт. Этот байт будет послан и снова заполнит до краев буфер получателя, что вызовет отправку ACK со значением window=0. Процесс может продолжаться сколь угодно долго, понижая коэффициент использования канала.
МЕХАНИЗМ СКОЛЬЗЯЩЕГО ОКНА Рис. Идея скользящего окна. Предполагается, что ширина окна равна 7 (k=7; это число может меняться в очень широких пределах, обычно оно равно нескольким тысячам).
ПРОЦЕССЫ УПРАВЛЕНИЯ ТРАФИКОМ cwnd (congestion window) – отслеживает заполнение входного буфера получателя ssthresh (slow start threshold) – регистрирует перегрузку канала, а также связанные с этим потери и понижает уровень трафика.
ТАЙМЕРЫ ТСР-ПРОТОКОЛА Таймер повторных передач (retransmission; RTO) контролирует время прихода подтверждений (ACK). Таймер запускается в момент посылки сегмента. При получении отклика ACK до истечения времени таймера - он сбрасывается. Если же время таймера истекает до прихода ACK, сегмент посылается адресату повторно, а таймер перезапускается. Таймер запросов (persist timer), контролирующий размер окна даже в случае, когда приемное окно закрыто. Таймер контроля работоспособности (keepalive), который регистрирует факты выхода из строя или перезагрузки ЭВМ-партнеров 2MSL-таймер (Maximum Segment Lifetime) контролирует время пребывания канала в состоянии TIME_WAIT.
RTT - время путешествия пакета до адресата и обратно ВЫЧИСЛЕНИЕ СРЕДНЕГО RTT RTT m = a*RTT m + (1-a)*RTT i, где RTT i - результат очередного измерения, RTT m - величина, полученная в результате усреднения предыдущих измерений, а - коэффициент сглаживания, обычно равный 0.9.
УПРАВЛЕНИЕ ТАЙМ-АУТОМ RTO=RTT m *b RTO (Retransmission TimeOut) - время таймаута для ретрансмиссии; b=2. RTT m = RTT m + g(RTT i - RTT m ) D = D + d(|RTT i - RTT m | - D) RTO = RTT m + 4D, где D - среднее отклонение RTT от равновесного значения; g = 0,125, d = 0,25.
Модели реализации протокола TCP В TCP-reno [1990 г; RFC-2581] при нормальной ситуации размер окна меняется циклически. Размер окна увеличивается до тех пор, пока не произойдет потеря сегмента. TCP-Vegas [1994 г] контролирует размер окна путем мониторирования отправителем RTT для пакетов, посланных ранее. Если обнаруживается увеличение RTT, система узнает, что сеть приближается к перегрузке, и сокращает ширину окна. Алгоритм TCP-Tahoe является наиболее старым и широко распространенным. Основной вариант - медленный старт. Смысл этого алгоритма заключается в удержании значения CWND в области максимально возможных значений. Алгоритм TCP-Tahoe является наиболее старым и широко распространенным. Основной вариант - медленный старт. Смысл этого алгоритма заключается в удержании значения CWND в области максимально возможных значений.