Протокол управления передачей (TCP — Transmission Control Protocol) предназначен для использования в качестве транспортного средства при взаимодействии удаленных устройств, работающих в пакетных сетях. Функционируя на транспортном уровне, он устанавливает логическое соединение между приложениями и обеспечивает надежную транспортировку данных.
Для надежной транспортировки данных протокол управления передачей должен обеспечивать выполнение следующих основных задач:
• передачу данных;
• поддержку достоверности данных при передаче;
• управление потоком данных;
• разделение каналов передачи данных;
• обслуживание установленных соединений;
• установку приоритетов пользователей;
• обеспечение безопасности при передаче данных.
Единицей данных протокола управления передачей является сегмент. Изначально каждая прикладная программа вызывает программу протокола управления передачей и передает ей буфер данных, из которых формируются сегменты, т.е. некоторая непрерывная часть данных. Далее для передачи каждого сегмента вызывается Интернет-протокол, который осуществляет фрагментацию и сборку сегментов, необходимые для их передачи через множество сетей. Сегменты не обязательно должны быть одного размера, но в любом случае сегмент максимального размера должен полностью помещаться в дейтаграмму.
На приемном конце адресатом является соответствующий модуль протокола управления передачей, который помещает данные сегмента в буфер прикладной программы получателя. С каждым модулем TCP связан модуль IP, обеспечивающий передачу данных по локальной сети. При этом сегмент TCP помещается в дейтаграмму IP, которая, в свою очередь, помещается в кадр канального уровня.
Надежность передачи обеспечивается механизмом подтверждения после приема блоков данных, а также использованием нумерации очередей, в которые выстраиваются передаваемые байты данных. Для этого первому байту в сегменте присваивается некоторый номер, называемый номером очереди для сегмента. Нумерация байтов в сегменте осуществляется в пределах диапазона 0...(232 - 1) таким образом, что первый байт после заголовка имеет наименьший номер, а последующие байты нумеруются по возрастанию.
Правильность передачи каждого сегмента должна подтверждаться квитанцией получателя, а в случае искажения или потери данных должна быть предусмотрена повторная передача. Когда TCP передает сегмент данных, он создает его копию, которая помещается в очередь повторной передачи, после чего запускается таймер. Если в пределах назначенного срока приходит подтверждение передачи, то сохраненная копия удаляется из очереди, в противном случае сегмент посылается повторно.
Несмотря на достаточный диапазон номеров он оказывается мал для исключения появления так называемых дублей, которые возникают в случаях, когда весь диапазон номеров исчерпан, а отправленные сегменты не получили подтверждения. Так, в существующих сетях при скорости передачи 100 Мбит/с цикл использования всего диапазона номеров составляет около 5 мин. Если за это время не пришло подтверждение передачи, то двум разным сегментам могут быть назначены одинаковые номера, что, разумеется, может вызвать коллизии. Для решения таких проблем используется механизм опознавания, основанный на накоплении, т. е. опознание N - ro номера означает, что получены и распознаны все байты с номерами N — l , N —2 и т.д.
Маршрутизация дейтаграмм
Рассмотренный ранее стек протоколов TCP/IP разработан для обеспечения взаимодействия удаленных систем, но корректная и эффективная пересылка пакетов данных невозможна без наличия ряда промежуточных устройств — маршрутизаторов. В процессе пересылки сообщений между двумя абонентами, расположенными в различных сетях, формируемые блоки данных после отработки протоколов всех уровней оказываются в маршрутизаторе сети отправителя. Далее происходит их передача по некоторому, заранее не определенному маршруту, пока они не окажутся в маршрутизаторе сети получателя, который и передает эти блоки получателю по известному физическому адресу. При этом сами промежуточные маршрутизаторы передают блоки данных, основываясь не на физическом адресе, а на номере сети получателя.
Выделяют два типа маршрутизации: прямую и косвенную. Прямая маршрутизация может быть реализована, когда отправитель и получатель расположены в пределах одной сети. Поскольку в этом случае IP-адрес получателя известен, то дейтаграмма помещается в кадр канального уровня, затем с помощью протокола разрешения адресов определяется физический адрес получателя, после чего дейтаграмма доставляется по назначению с использованием ресурсов одной сети.
Если отправитель и получатель располагаются вне пределов одной сети, то возникает необходимость использования косвенной маршрутизации, т.е. выполняемой на уровне IP. Решение о выборе пути для каждой дейтаграммы принимается на основе анализа таблицы маршрутизации, содержащей информацию о топологии системы сетей. При этом всегда ставится задача по оптимизации маршрута, т.е. доставке сообщения с наименьшей задержкой в условиях текущего трафика.
Существующие методики оптимизации маршрута можно условно разделить на два класса: одношаговую и многошаговую.
В случае одношаговой оптимизации каждый маршрутизатор принимает решение о выборе только одного шага, т.е. о выборе пути до соседнего маршрутизатора. При этом в таблице маршрутизации содержатся не полные маршруты в виде цепочек IP-адресов, а только совокупность IP-адресов до соседнего маршрутизатора. Такой подход к оптимизации маршрута, снимая ограничения на максимальное число промежуточных узлов, формирует Распределенную ответственность за выбор пути доставки сообщения.
Построение таблицы маршрутизации при одношаговой оптимизации возможно путем использования:
• алгоритмов фиксированной маршрутизации, применяемых в Простых сетях. Таблица маршрутизации и оптимальные маршруты
доставки сообщений между различными устройствами сети в этом случае составляются сетевым администратором вручную;
• алгоритмов простой маршрутизации. Таблица маршрутизации в данном случае составляется на основании данных, содержащих-ся в проходящих через маршрутизатор дейтаграмм. При этом возможна либо случайная маршрутизация (когда дейтаграммы передаются в любом случайном направлении кроме исходного), либо лавинная (когда дейтаграммы передаются во всех направлениях кроме исходного), либо, наконец, маршрутизация по предыдущему опыту;
• алгоритмов адаптивной маршрутизации. В этом случае маршрутизаторы периодически обмениваются между собой информацией о текущем состоянии сетевой топологии и трафика, что на практике используется наиболее часто.
При использовании алгоритмов многошаговой оптимизации выбор маршрута пересыпки данных производится первым маршрутизатором, а все остальные только отрабатывают выбранный маршрут. На практике такие алгоритмы используются, как правило, только на этапе отладки.
Управление таблицей маршрутизации во всех промежуточных узлах должно осуществляться динамически, что в большой распределенной сети является весьма сложной задачей. Решение этой задачи основано на использовании семейства протоколов маршрутизации:
протокола маршрутной информации (RIP — Routing Information Protocol);
протокола первоочередного открытия кратчайшего маршрута (OSPF — Open Shortest Path First);
протокола связи между промежуточными системами (IS-IS — Intermediate System to Intermediate System);
внешнего шлюзового протокола (EGP — Exterior Gateway Protocol);
пограничного межсетевого протокола (BGP — Border Gateway Protocol).
В зависимости от топологии сети маршрутизаторы могут поддерживать один или несколько протоколов маршрутизации. В табл.
Номер сети получателя 195.209.0.0 | |||
Следующий маршрутизатор | Число переходов | Протокол маршрутизации | Таймер |
195.209.3.1 | 3 | RIP | 235 |
195.209.1.7 | 3 | RIP | 210 |
195.209.0.9 | 5 | RIP | 98 |
[4.3 приведен пример простой таблицы маршрутизации, содержащей типичные записи:
• следующий маршрутизатор — адрес маршрутизатора, которому необходимо переслать дейтаграмму, чтобы доставить ее получателю;
• число переходов — число маршрутизаторов, которые должны [обработать дейтаграмму прежде, чем она попадет к получателю; • протокол маршрутизации — определяет протокол, с помощью которого данная запись появилась в таблице маршрутизации;
• таймер — показывает время, прошедшее с момента последнего обновления данной записи.
Контрольные вопросы
1. Что означает термин «открытая система»?
2. Опишите семиуровневую модель взаимодействия открытых систем. i
3. Почему возникла необходимость введения LCC- и МАС-подуровней?
4. В чем состоят основные задачи TCP/IP?
5. Что такое дейтаграммный принцип передачи данных?
6. Чем отличается динамический IP-адрес от статического?
7. Каковы основные задачи ТСР-протокола?
8. Опишите принцип косвенной маршрутизации и назовите типы таблиц маршрутизации.
|
Глава 15
Дата: 2019-12-22, просмотров: 225.