- •Организация вычислительных систем
- •Часть II «Сети эвм» Краткий конспект лекций Содержание
- •Эталонная модель взаимодействия открытых систем
- •Уровни эталонной модели
- •Функции уровней
- •Правила описания сервиса
- •Локальные вычислительные сети
- •Топологии локальных сетей
- •Среды передачи информации
- •Методы кодирования информации
- •Методы управления обменом в сети типа «активная звезда»
- •В сети типа «шина»
- •В лвс типа «кольцо»
- •Контроль правильности передачи
- •Функции аппаратуры локальных сетей
- •Сетевые адаптеры
- •Пример реализации сетевого адаптера Ethernet
- •Другие сетевые устройства
- •Аппаратура лвс
- •Аппаратура сети Ethernet
- •Аппаратура сети Fast Ethernet
- •Аппаратура сети Gigabit Ethernet
- •Аппаратура сети Token Ring фирмы ibm
- •Аппаратура сети Arcnet
- •Аппаратура сети fddi
- •Аппаратура сети 100vg-AnyLan
- •Уровни моделиOsi
- •Прикладной уровень
- •Уровень представления
- •Сеансовый уровеньOsi
- •Основные понятия.
- •Фазы и услуги сеансового сервиса
- •Функциональные группы и сервисные подмножества
- •Транспортный уровеньOsi
- •Сетевой уровень osi Структура системы передачи данных
- •Задачи сетевого уровня
- •Протоколы сетевого уровня
- •Протоколы сетевого уровня в сетях с коммутацией пакетов
- •Рекомендация х.25 мкктт
- •Уровень управления информационным каналом Типы протоколов
- •Протокол bsc
- •Протокол hdlc
- •Каналы t1/e1
- •Метод биполярного кодирования
- •Синхронизация
- •Кадровая синхронизация
- •Мультиплексирование
- •Типичная структура системы
- •Интерфейс bri
- •Интерфейс pri
- •Аппаратные средства абонентского комплекса
- •Дополнительные услуги сетей isdn
- •Сети Frame Relay
- •Формат кадра
- •Согласование скорости передачи
- •Типы каналов
- •Защита от ошибок
- •Сети atm
- •Быстрая коммутация пакетов
- •Типы каналов
- •Подуровни atm и режимы передачи
- •Сеть Интернет
- •Стек протоколов tcp/ip
- •Уровень I стекаTcp/ip
- •Уровень II стекаTcp/ip
- •Уровень III стекаTcp/ip
- •Уровень IV стека tcp/ip
- •Протокол ip
- •Протокол iPv6
- •Протокол tcp
- •Механизм тайм-аута ожидания подтверждения
- •Протокол udp
- •Протокол icmp
- •Маршрутизация
- •Маршрутизаторы
- •Примеры протоколов Протокол rip
- •Протокол ospf
- •Протокол igrp
- •Протокол политики маршрутизации egp
- •Протокол политики маршрутизации bgp
- •Протокол pnni
- •Литература
Механизм тайм-аута ожидания подтверждения
Когда протокол TCP передает сегмент с данными, он помещает его копию в очередь повторной передачи и запускает таймер. Когда приходит подтверждение (на данный сегмент) – сегмент стирается, а таймер выключается. Если таймер истек, а подтверждение не получено – сегмент передается повторно.
Выбор тайм-аута
Важной задачей является выбор величины этого тайм-аута Taожидания подтверждения. При малой величине Taувеличивается число повторных передач. При большой величине Taвозникают длительные простои ожидания «несуществующей» квитанции.
В протоколе TCP тайм-аут Taвыбирается с помощью достаточно сложного адаптивного алгоритма. Суть его следующая.
При каждой передаче засекается время до прихода квитанции (время оборота).
Получаемые значения усредняются с весовым коэффициентом, возрастающим от предыдущего замера к следующему. Таким образом стараются усилить влияние последних замеров времени оборота.
В качестве Taвыбирается среднее время оборота, умноженное на некоторый коэффициент. Практика показывает, что значение этого коэффициента должно превышать 2.
При большом разбросе времени оборота в алгоритме выбора тайм-аута учитывается также и дисперсия этой величины.
Приостановка передачи
При полном заполнении входного буфера перегруженный узел-приемник указывает в своей квитанции нулевое окно. Даже после этого его партнер по соединению может направить на этот порт сообщение. Для этого оно должно сопровождаться пометкой «срочно» (в поле заголовка — «указатель срочности»). При поступлении такого срочного пакета порт обязан принятьего даже путем вытеснения из буфера уже находящихся там данных.
После приема квитанции с нулевым окном узел-отправитель время от времени делает контрольные попытки продолжить обмен данными. Если порт-приемник уже готов принимать информацию, то в ответ на контрольный запрос он посылает квитанцию с указанием ненулевого размера окна.
Перегрузка сети может произойти и на промежуточных узлах-маршрутизаторах. В таких случаях они могут инициировать уменьшение размера окна посылкой управляющих сообщений ряду конечных узлов. Это позволяет им дифференцированно управлять интенсивностью потока данных в различных частях сети.
Протокол TCP описан в документе RFC 793.
Формат заголовка
Как показано на рисунке сегмент TCP состоит из заголовка и поля данных. Минимальная длина заголовка составляет 20 байт. Для определения назначения большинства полей предназначены специальные управляющие биты заголовка.
Формат и значения поля «управляющие биты» показаны в таблице.
URG — (Urgent) – сигнализация о срочных данных
ASK — (Acknowledgment) – указывает на то, что используется поле «подтверждения».
PSH — (Push) – включена функция проталкивания потока данных. Обычно используется для передачи последнего сегмента в потоке данных и этот сегмент будет без очереди доставлен к приложению-получателю.
RST — (Reset) – указывает на сброс и последующую перезагрузку данного соединения.
SYN — (Synchronization) – флаг синхронизации. Когда он установлен, поле «номер в последовательности» содержит начальный номер байта в последовательности.
FIN — (Final) – указывает на отсутствие данных для передачи.
Основные поля заголовка
«Номер в последовательности» (Sequence number) – номер первого байта в текущем сегменте.
«Номер подтверждения» (Acknowledgment number) – номер следующего байта, который ожидает приемник. Тем самым подтверждается получение байтов с номерами до {AN-1}.
«Смещение данных» (Data offset) – указывает количество 32-битных слов в заголовке TCP.
Номер бита |
1 |
2 |
3 |
4 |
5 |
6 |
Название |
URG |
ASK |
PSH |
RST |
SYN |
FIN |
Назначение |
Поле «указатель срочности» задейство-вано |
Поле «номер подтвер-ждения» задейст-вовано |
Включена функция протал-кивания |
Перезаг-рузка данного соедине-ния |
Синхро-низация номеров в очереди |
Данных для передачи нет |
«Резерв» (Reserved) – заполнено нулями и предназначено для будущего расширения протокола.
«Окно» (Window) – объявляет размер W окна в байтах.
«Контрольная сумма» (Checksum) – сумма всех 16 битовых слов заголовка и поля данных.
«Опции» (Options) – имеет переменную длину и может отсутствовать. Его размер всегда кратен 8 байтам. Здесь могут, к примеру, указываться: максимальный размер сегмента, дополнительные услуги и т.д.
Процедура установления соединения
В связи с крайней ненадежностью нижележащих протокольных уровней TCP использует процедуру троекратного рукопожатия для установления соединения (см. рис.).
На рисунке ПВУ – это один из протоколов вышележащего уровня (HTTP, FTP и т.д.). Последовательность следующая:
ПВУ А посылает в свой объект TCP примитив «Открыть», указав адрес и параметры.
TCP А посылает TCP B сегмент SYN с номером, к примеру, 55 (флаг SYN=1, «номер в последовательности» = 55). Этот начальный номер будет затем использоваться в процедуре передачи данных. Начальный порядковый номер устанавливается с помощью специального генератора случайных чисел, который увеличивает свои значения каждые 4 мкс, работая по модулю 232. Это значит, что следующий раз такой номер встретится через 4,5 часа.
TCP B подтверждает получение запроса на соединение посылкой пакета SYN-ACK (SYN=1, ACK-1) с собственным начальным номером (например, 202) и с установленным в поле подтверждения номером 56 (следующий ожидаемый на приеме номер).
TCP A посылает сегмент ACK с номером 203 (номер следующего ожидаемого байта).
TCP A уведомляет ПВУ А об открытии соединения.
Получив ACK 203 TCP B уведомляет примитивом «успешное открытие» ПВУ В.
Процедура передачи данных
Рассмотрим простейший случай. Из А в В передается 30 байт, а из В в А посылается 100 байт. Соединение является дуплексным. Последовательность обмена следующая:
ПВУ А выдает в TCP A примитив «Передать» и сообщение длиной 30 байт.
TCP A помещает 30 байт в сегмент. В заголовке указывается порядковый номер первого байта в сегменте — 56.
TCP B получает сегмент, передает его ПВУ В и посылает сегмент подтверждения (ACK 86). Последний полученный байт будет иметь номер 85 (55+50). Так как в ACK указывается номер следующего ожидаемого байта, то это будет 86.
ПВУ В выдает TCP B примитив «Передать» и сообщение длиной 100 байт.
TCP B отправляет сегмент с порядковым номером 203 (202+1) — номером первого байта в этом сегменте.
TCP A передает сообщение ПВУ А и посылает подтверждение ACK (303), т.е. с указанием номера следующего ожидаемого байта.
Так как протокол дуплексный и подтверждения могут включаться в состав передаваемого сегмента, то этапы 9 и 11 могут быть объединены (посылкой сегмента данных с N=203, ACK=86).
Завершение соединения
На рисунке показаны этапы процедуры разъединения.
ПВУ А посылает TCP A примитив «Завершить».
TCP A выдает пакет FIN (с порядковым номером 86, без данных).
О закрытии сообщается ПВУ В (примитивом «Закрытие») и посылается ACK (87).
ПРУ В посылает примитив «Завершить» и посылается FIN (303)
О закрытии извещается ПВУ А и выдается подтверждение ACK 304/
Об окончании процедуры извещается ПВУ В.
Особенности протокола TCP
С помощью флага URG могут передаваться срочные данные.
Соединение является надежным за счет: - использования режима обнаружения ошибок; - присвоения порядковых номеров каждому байту сообщения; - использования тайм-аута ожидания подтверждения, по его истечении сегмент передается повторно.
Управление потоком путем использования окна передачи W.