Книга: TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
10.5 Пересылка данных
10.5 Пересылка данных
Пересылка данных начинается после завершения трехшагового подтверждения создания соединения (см. рис. 10.9). Стандарт TCP позволяет включать в сегменты подтверждения обычные данные, но они не будут доставляться приложению, пока создание соединения не завершится. Для упрощения нумерации применяются 1000-байтные сообщения. Каждый сегмент заголовка TCP имеет поле ACK, идентифицирующее порядковый номер байта, который предполагается получить от партнера по соединению.
Рис. 10.9. Простой поток обмене данными и ACK
Первый посланный клиентом сегмент содержит байты от 1001 до 2000. В его поле ACK должно находиться значение 3001, что указывает порядковый номер байта, который предполагается получить от сервера.
Сервер отвечает клиенту сегментом, содержащим 1000 байт данных (начинающихся с номера 3001). В его поле ACK заголовка TCP будет указано, что байты с 1001 по 2000 уже успешно получены, поэтому следующий ожидающийся от клиента порядковый номер сегмента должен быть 2001.
Далее клиент посылает сегменты, начинающиеся с байтов 2001, 3001 и 4001 в указанной последовательности. Отметим, что клиент не ожидает ACK после каждого из посланных сегментов. Данные пересылаются партнеру до заполнения его буферного пространства (ниже мы увидим, что получатель может очень точно указать объем пересылаемых ему данных).
Сервер экономит пропускную способность соединения, используя единственный ACK для указания успешности пересылки всех сегментов.
На рис. 10.10 показана пересылка данных при потере первого сегмента. По завершении тайм-аута пересылка сегмента повторяется. Отметим, что, получив потерянный сегмент, приемник отправляет один ACK, подтверждающий пересылку обоих сегментов.
Рис. 10.10. Потеря данных и повторная трансляция
- 10.1 Введение
- 10.2 Концепции TCP
- 10.3 Механизм обеспечения надежности TCP
- 10.4 Установка соединения
- 10.5 Пересылка данных
- 10.6 Закрытие соединения
- 10.7 Управление потоком
- 10.8 Заголовок TCP
- 10.9 Пример сегмента TCP
- 10.10 Поддержка работы сеанса
- 10.11 Завершение сеанса
- 10.12 Производительность
- 10.13 Алгоритмы повышения производительности
- 10.14 Соответствие требованиям разработчика
- 10.15 Барьеры для производительности
- 10.16 Функции TCP
- 10.17 Состояния TCP
- 10.18 Замечания о реализациях
- 10.19 Дополнительная литература
- 2.3.1 Пересылка файлов
- 14.5 Типы данных, структуры файлов и методы пересылки
- 14.5.1 Типы данных
- 14.5.2 Пересылка текста ASCII
- 14.5.3 Пересылка текста EBCDIC
- 14.5.4 Пересылка двоичных данных
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.