Опубликован: 03.02.2017 | Уровень: для всех | Доступ: свободно
Лекция 9:

Транспортный уровень моделей OSI, TCP/IP

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >

9.3. Передача данных

При установлении соединения задается начальное значение номера байта передаваемых данных. Этот номер увеличивается по мере передачи байт. Поэтому на приемной стороне можно отследить потерянные сегменты.

Сегменты данных нужно предоставить пользователю получателю в том же порядке, в котором они были переданы. Сбой происходит, если какие-то сегменты данных потеряны, повреждены или получены в неверном порядке. Поэтому получатель должен подтвердить получение каждого сегмента. Однако если бы отправитель ждал ответ ACK после посылки каждого сегмента, то производительность сети была бы низкой. Поэтому, надежный, ориентированный на предварительное соединение протокол TCP, позволяет послать несколько сегментов прежде, чем отправитель получит подтверждение ACK.

Размер окна (Window Size) заголовка сегмента TCP определяет, сколько байт передается в одной порции подтверждаемых данных. Последовательность сегментов передаваемых данных представляет собой последовательность байтов. Поэтому и размер окна в заголовке сегмента задается в количестве передаваемых байтов. Узел-получатель передает отправителю подтверждение ACK, когда примет указанное в окне количество байтов данных.

На рис. 9.5 приведен пример, когда размер окна составляет 3000 байт.

Процесс передачи байт данных

Рис. 9.5. Процесс передачи байт данных

Каждый передаваемый сегмент содержит 1500 байт, что соответствует размеру поля данных кадра Ethernet. Поэтому узел-отправитель передает два сегмента подряд, на которые узел-получатель посылает подтверждение ACK с номером следующего ожидаемого байта, т.е. ACK = 3001. После получения узлом-отправителем подтверждения процесс передачи данных повторяется.

Если какой-то сегмент в процессе передачи был потерян, например, из-за перегрузки сети, то узел-получатель в ответе укажет начальный номер потерянного сегмента ( рис. 9.6), чтобы этот сегмент был передан повторно. При этом размер окна может быть уменьшен до 1500 байт, т.е. до размера одного передаваемого сегмента.

Перегрузка в процессе передачи данных

Рис. 9.6. Перегрузка в процессе передачи данных

Перегрузка буферов данных может произойти по следующим причинам:

  1. Высокоскоростной узел-отправитель генерирует трафик быстрее, чем сеть может передать его, а узел-получатель принять.
  2. Несколько узлов одновременно посылают сообщения одному узлу-получателю.

Когда данные прибывают на узел-получатель слишком быстро, то буферные устройства адресата могут оказаться перегружены и приходящие пакеты будут отбрасываться. Чтобы не потерять данные, процесс TCP на узле-получателе может послать отправителю индикатор "не готов", чтобы отправитель приостановил передачу данных.

Когда получатель вновь сможет обрабатывать дополнительные данные, он посылает индикатор "готов". Когда этот индикатор получен, отправитель может продолжить передачу.

При передаче срочных сообщений используется бит URG в поле кода передаваемых сегментов. Такие сегменты передаются в первую очередь, даже за счет впереди стоящих в очереди сегментов.

Завершение соединения

Завершение соединения в конце передачи данных происходит в 4 этапа:

  1. Узел-отправитель, инициализировавший обмен данными, посылает сегмент конца передачи с установленным флагом FIN, сигнализирующий, что данных для передачи больше нет;
  2. В ответ на это узел-получатель подтверждает (ACK) конец передачи;
  3. Узел-получатель также посылает сигнал конца передачи FIN.
  4. Узел-отправитель подтверждает получение информации (ACK).

На этом соединение заканчивается, т.е. завершение соединения происходит в четыре этапа.

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >
Игорь Курьянов
Игорь Курьянов

 Поэтому протоколы сетевого уровня и выше инвариантны к сетевой физической среде.

Николай Дулевский
Николай Дулевский

Почему столько граматических ошибок в тексте? Их очень много ошибок слитного написания текста, проверьте пожалуйста текст на наличие данных ошибок и исправьте их...

Алексей К
Алексей К
Россия
Алексей Л
Алексей Л
Россия, Свердловская область