- •Лекция “алгоритмы передачи данных”
- •Fast Ethernet и 100vg-AnyLan как развитие технологий Ethernet
- •Правила построения сегментов Fast Ethernet при использовании повторителей
- •Особенности технологии 100vg-AnyLan:
- •Технология Gigabit Ethernet
- •Базовые протоколы tcp/ip Порты и сокеты
- •Протокол udp и udp дейтаграммы
- •Tcp и tcp сегменты
- •Логические соединения
- •Повторная передача и скользящее окно
- •Реализация метода скользящего окна в протоколе tcp
- •Управление потоками
- •Общие свойства и классификация протоколов маршрутизации
- •Протокол rip. Построение таблицы маршрутизации
- •Адаптация маршрутизаторов rip к изменениям состояния сети
- •Пример зацикливания пакетов (самостоятельно!!!)
- •Методы борьбы с ложными маршрутами в протоколе rip
- •Построение таблицы маршрутизации с помощью протокола ospf
- •Метрики протокола ospf (самостоятельно!!!)
- •Маршрутизация в неоднородных сетях Взаимодействие протоколов маршрутизации
- •Внутренние и внешние шлюзовые протоколы
- •Протокол bgp (самостоятельно!!!)
- •Протокол icmp (самостоятельно!!!)
- •Утилита ping (самостоятельно!!!)
- •Утилита traceroute
Логические соединения
Логические соединения – это основа надёжности TCP. Основным отличием TCP от UDP является то, что на протокол TCP возложена задача обеспечения надёжной доставки сообщения, используя в качестве основы ненадёжный дейтаграммный протокол IP. Для решения этой задачи протокол TCP использует метод продвижения данных с установлением логического соединения, которое даёт возможность участникам соединения (или участникам обмена) следить за тем, чтобы данные не были потеряны, искажены, продублированы, а также чтобы они пришли к получателю в том порядке, в котором были отправлены.
Протокол TCP устанавливает логические соединения между прикладными процессами, причём в каждом соединении участвуют только 2 процесса. TCP соединение является дуплексным, т.е. каждый из участников соединения может одновременно получать и отправлять данные.
При установлении логического соединения модули TCP договариваются между собой о параметрах процедуры обмена данными.
В протоколе TCP каждая сторона соединения посылает противоположной следующие параметры:
Максимальный размер сегмента, который она готова принимать
Максимальный объём данных (возможно несколько сегментов), которые она разрешает другой стороне передавать в свою сторону, даже если там ещё не получила квитанцию на предыдущую порцию данных (размер окна)
Начальный порядковый номер байта, с которого она начинает отсчёт потока данных в рамках данного соединения.
В результате переговорного процесса модулей TCP с двух сторон соединения определяются параметры соединения, одни из них остаются постоянными в течение всего сеанса связи, а другие адаптивно изменяются, например, в зависимости от загрузки буфера принимающей стороной, а также от надёжности работы сети динамически изменяется размер окна отправителя.
Соединение устанавливается по инициативе клиентской части приложения. При необходимости выполнить обмен данными с серверной частью приложение-клиент обращается к нижележащему протоколу TCP, который в ответ на это обращение посылает сегмент-запрос на установление соединения протокола TCP, работающему на стороне серверов. Флаг SYN установлен в 1. Получив запрос модуль TCP на стороне сервера пытается создать инфраструктуру для обслуживания нового клиента, он обращается к операционной системе с просьбой о выделении определённых системных ресурсов для организации буферов, таймеров, счётчиков. Эти ресурсы закрепляются за соединением с момента создания и до момента разрыва. Если на стороне сервера все необходимые ресурсы были получены и все необходимые действия выполнены, то модуль TCP посылает клиенту сегмент с флагами ACK и SYN. В ответ клиент посылает сегмент с флагом ACK и переходит в состояние установленного логического соединения. Когда сервер получает флаг ACK, то он переходит в то же состояние. На этом процедура установления соединения заканчивается, и стороны переходят к обмену данными. Соединение может быть разорвано в любой момент по инициативе любой стороны (для этого клиент и сервер обмениваются сегментами ACK и FIN). Соединение считается завершённым тогда, когда сторона – инициатор получает подтверждение, что завершающий сигнал ACK дошёл нормально и не вызвал никаких аварийных сообщений со стороны сервера. Логическое TCP соединение однозначно идентифицируется парой сокетов, определённых для этого соединения двумя взаимодействующими процессами.
Сокет одновременно может участвовать в нескольких соединениях. Пусть некоторый поставщик услуг оказывает услугу по веб-хостингу, т.е. на его сервере клиенты могут разворачивать свои веб-серверы. Веб-сервер основан на протоколе прикладного уровня HTTP, который передаёт свои сообщения в TCP сегментах. Модуль TCP ожидает запросы от веб-клиентов, которые поступают на порт 80. Пользователь браузером обращается одновременно к 2-м серверам. Наличие отдельных соединений для работы с каждым из этих серверов обеспечивает надёжную доставку и разделение информационных потоков, т.е. когда к этим серверам обратится ещё 1 клиент – их логические соединения будут изолированы (потому что в адресе запроса будет стоять не только номер порта, но и другой IP адрес).
Количество буферов на сервере (имеется в виду сервер поставщика услуг) определяется не числом веб-серверов и не числом клиентов, а числом логических соединений. Сообщения в буферы направляются в зависимости от значений сокетов как отправителя, так и получателя, т.е. протокол TCP осуществляет демультиплексирование информации, поступающей на прикладной уровень, на основе соединений процессов, т.е. на основе идентифицирующих эти процессы пар сокетов.
