Управление потоком данных
Поле размера скользящего окна (Window) заголовка сегмента TCP (рис.2.6) определяет, сколько байт данных передается в одном сегменте. Пакеты данных нужно поставить получателю в том же порядке, в котором они были переданы. Сбой происходит, если какие-то пакеты данных потеряны, повреждены или получены в неверном порядке. Поэтому получатель должен подтвердить получение каждого пакета прежде, чем пошлет следующий.
Если бы отправитель ждал ответ ACK после посылки каждого пакета (рис.2.10), производительность была бы низкой. Поэтому, большинство надежных, ориентированных на предварительное соединение протоколов, например TCP, позволяют послать несколько пакетов прежде, чем получат подтверждение ACK.
Рис.2.10. Процесс передачи данных при размере окна равном 1
Размер окна (Window) определяет число пакетов (или байт данных), которые отправитель может передать до получения ответа ACK. Номер ACK относится к номеру следующего пакета, который ожидается. О размере окна узлы договариваются динамически в сеансе TCP. Узел-получатель сообщает о размере окна хосту источнику. Окно определяет число пакетов, которые хост адресат готов получить. При увеличении размера окна, например, до трех (рис.2.11) производительность передачи данных повышается.
Производительность сети повышается, поскольку адресат на три полученных пакета данных посылает только одно подтверждение исходному устройству, которое затем может передать следующие три пакета.
Рис.2.11. Процесс передачи данных при размере окна равном 3
Если адресат не получает три пакета, например, из-за переполнения буферов, он не посылает подтверждение. Поскольку источник не получает подтверждение, он знает, что пакеты должны быть повторно переданы, и что скорость передачи должна быть уменьшена. Например, согласно рис.2.12 отправитель посылает три пакета прежде, чем ожидает получить подтверждение ACK.
Рис.2.12. Процесс передачи данных при переполнении буферных устройств
Если получатель может обработать только 2 пакета, он в качестве следующего запрашивает пакет 3, при этом указывает новый размер окна, равный двум.
Положительное подтверждение ACK и повторная передача гарантируют надежную доставку данных. Отправитель ведет учет каждого пакета данных (сегмента TCP), который он посылает и ожидает ACK. Кроме того, отправитель запускает таймер, когда посылает сегмент, и повторно передает сегмент, если время таймера истекает прежде, чем прибывает положительное подтверждение ACK.
В устройстве-получателе протокол TCP собирает сегменты в целое сообщение в соответствии с последовательными номерами. Если какой-то порядковый номер отсутствует в полученном ряде, то этот пропущенный сегмент передается повторно.
Последовательность частей (порций) передаваемых данных обычно представляет собой последовательность байтов. Поэтому и размер окна в заголовке сегмента задается в количестве передаваемых байт. Узел-получатель передает отправителю подтверждение ACK, когда примет указанное в окне количество байт данных. На рис.2.13 приведен пример, когда размер окна составляет 3000 байт.
Рис.2.13. Процесс передачи байт данных
Каждый передаваемый пакет содержит 1500 байт, что соответствует максимальному размеру кадра Ethernet. Поэтому узел-отправитель передает два сегмента подряд, на которые узел-получатель посылает подтверждение ACK с номером следующего ожидаемого байта, т.е. ACK = 3001. После получения узлом-отправителем подтверждения процесс передачи данных повторяется.
Если какой-то сегмент в процессе передачи был потерян, например, из-за перегрузки сети, то узел-получатель в ответе укажет начальный номер потерянного сегмента (рис.2.14), чтобы этот сегмент был передан повторно. При этом размер окна уменьшается до 1500 байт, т.е. до размера одного передаваемого пакета.
Рис.2.14. Перегрузка в процессе передачи байт данных
Одним из механизмов контроля потока является посылка отправителю индикаторов «не готов» (not ready) и «готов» (ready). Процесс передачи данных может повторяться либо до окончания передачи всего сообщения, либо до момента перегрузки сети, которая может произойти по двум причинам:
Высокоскоростной узел-отправитель генерирует трафик быстрее, чем сеть может передать его, а узел-получатель принять.
Несколько узлов одновременно посылают пакеты одному узлу-получателю.
Когда данные прибывают на узел-получатель слишком быстро, то буферные устройства адресата могут быть перегружены и приходящие пакеты будут отбрасываться. Чтобы не потерять данные, процесс TCP на узле-получателе может послать отправителю транспортный индикатор «не готов» (not ready). Этот индикатор сообщает отправителю, что следует приостановить передачу данных. Когда получатель вновь сможет обработать дополнительные данные, он посылает транспортный индикатор «готов» (ready). Когда этот индикатор получен, отправитель может продолжить передачу.
Для завершения соединения в конце передачи данных, узел-отправитель, инициализировавший обмен данными, посылает сигнал конца передачи FIN, вместо сигнала синхронизации SIN в начале установления соединения. В ответ на это узел-получатель подтверждает (ACK) конец передачи и также посылает сигнал конца передачи FIN. Узел-отправитель подтверждает получение информации (ACK), на этом соединение заканчивается, т.е. завершение соединения происходит в четыре этапа.
Следует помнить ещё об одном различии между протоколами транспортного уровня TCP и UDP. При прохождении по сети пакеты одного большого сообщения могут двигаться по разным маршрутам. Поэтому на устройство назначения они могут приходить не в том порядке, в котором передавались. Протокол контроля передачи TCP, используя механизм нумерации последовательности, позволяет восстановить (реассемблировать) исходный порядок следования пакетов. Напротив, протокол дейтаграмм пользователя UDP не может выполнить операцию восстановления исходного порядка следования пакетов. При этом такая возможность реализуется только протоколом прикладного уровня.
- Федеральное агентство связи
- Государственное образовательное учреждение высшего профессионального образования «Поволжский государственный университет телекоммуникаций и информатики»
- Оглавление
- Предисловие Настоящий курс лекций предназначен для студентов дневной и заочной форм обучения, изучающих аналогичную дисциплину, специальностей:
- Введение
- Лекция 1. Основы построения сетей
- 1.1. Основы сетевых технологий
- 1.2. Классификация сетей передачи данных
- 1.3. Семиуровневая модель взаимодействия открытых систем
- Контрольный тест по Лекции 1
- Лекция 2. Верхние уровни моделей osi, tcp/ip
- 2.1. Прикладной уровень
- Система доменных имен dns
- Протокол http
- Протоколы передачи файлов ftp и tftp
- Протокол разделения сетевых ресурсов smb
- Приложение peer-to-peer (p2p)
- Протоколы передачи электронной почты
- Протокол удаленного доступа Telnet
- 2.2. Транспортный уровень моделей osi, tcp/ip
- Установление соединения
- Управление потоком данных
- Контрольный тест по Лекции 2
- Лекция 3. Нижние уровни модели сети
- 3.1. Физический уровень. Медные кабели
- 3. 2. Волоконно-оптические кабели
- 3.3. Беспроводная среда
- 3.4. Топология сетей
- Контрольный тест по Лекции 3
- Лекция 4. Канальный уровень. Локальные сети
- 4.1. Подуровни llc и mac
- 4.2. Локальные сети технологии Ethernet
- 4.3. Коммутаторы в локальных сетях
- Режимы коммутации
- Протокол охватывающего дерева (Spanning-Tree Protocol)
- Контрольный тест по Лекции 4
- Лекция 5. Ethernet-совместимые технологии
- 5.1. Технология Fast Ethernet
- 5.2. Технология Gigabit Ethernet
- 5.3. Технология 10-Gigabit Ethernet
- Контрольный тест по Лекции 5
- Лекция 6. Принципы и средства межсетевого взаимодействия
- 6.1. Маршрутизаторы в сетевых технологиях
- 6.2. Принципы маршрутизации
- Протокол arp
- Контрольный тест по Лекции 6
- Лекция 7. Адресация в ip - сетях
- 7.1. Логические адреса версии iPv4
- 7.2. Формирование подсетей
- 7.3. Частные и общедоступные адреса
- Контрольный тест по Лекции 7
- Лекция 8. Функционирование маршрутизаторов
- 8.1. Назначение ip-адресов
- 8.2. Передача данных в сетях с маршрутизаторами
- 8.3. Сетевые протоколы. Формат пакета протокола ip
- Контрольный тест по Лекции 8
- Лекция 9. Протоколы маршрутизации
- 9.1. Общие сведения о маршрутизирующих протоколах
- 9.2. Протоколы вектора расстояния и состояния канала
- Меры борьбы с маршрутными петлями
- Контрольный тест по Лекции 9
- Лекция 10. Основы конфигурирования маршрутизаторов
- 10.1. Режимы конфигурирования маршрутизаторов
- 10.2. Создание начальной конфигурации маршрутизатора
- 10.3. Конфигурирование интерфейсов
- Контрольный тест по Лекции 10
- Лекция 11. Конфигурирование маршрутизации
- 11.1. Конфигурирование статической маршрутизации
- Конфигурирование статической маршрутизации по умолчанию
- 11.2. Конфигурирование конечных узлов и верификация сети
- 11.3. Динамическая маршрутизация. Конфигурирование протокола rip
- Конфигурирование динамической маршрутизации по умолчанию
- Контрольный тест по Лекции 11
- Лекция 12. Протокол маршрутизации eigrp
- 12.1. Общие сведения о протоколе eigrp
- 12.2. Конфигурирование протокола eigrp
- Контрольный тест по Лекции 12
- Лекция 13. Протокол маршрутизации ospf
- 13.1. Общие сведения о протоколе ospf
- Метрика протокола ospf
- 13.2. Конфигурирование протокола ospf
- Контрольный тест по Лекции 13
- Лекция 14. Сетевые фильтры
- 14.2. Конфигурирование стандартных списков доступа
- 14.3. Конфигурирование расширенных списков доступа
- Для этого создается список доступа:
- Именованные списки доступа
- Контроль списков доступа
- Контрольный тест по Лекции 14
- Лекция 15. Конфигурирование коммутаторов
- 15.1. Общие вопросы конфигурирования коммутаторов
- Адресация коммутаторов, конфигурирование интерфейсов
- 15.2. Управление таблицей коммутации
- 15.3. Конфигурирование безопасности на коммутаторе
- Контрольный тест по Лекции 15
- Лекция 16. Виртуальные локальные сети
- 16.1. Общие сведения о виртуальных сетях
- 16.2. Конфигурирование виртуальных сетей
- 16.3. Маршрутизация между виртуальными локальными сетями
- Конфигурирование транковых соединений
- Контрольный тест по Лекции 16
- Заключение
- Список литературы
- Список терминов и сокращений