Размер окна передачи файлов TCP

Я пытаюсь выполнить обратное проектирование приложения, и мне нужна помощь, чтобы понять, как работает размер окна TCP. Мой MTU - 1460. Мое приложение передает файл по протоколу TCP из пункта А в пункт Б. Я знаю следующее:

  • Файл разбит на сегменты размером 8K
  • Каждый сегмент сжат
  • Затем каждый сегмент отправляется в точку B по TCP. Эти сегменты для текстового файла могут иметь размер 148 байт, а для PDF - 6000 байт.

Для текстового файла я должен видеть сегменты 148, соединенные друг с другом, чтобы сформировать один большой поток TCP? а потом он делится по размеру окна?

Любая помощь приветствуется.

1 ответ

Решение

Приложение-получатель должно видеть данные таким же образом, как и приложение отправителя. TCP использует потоковую передачу байтов, поэтому он собирает все байты в порядке и доставляет их приложению. MTU в значительной степени является внутренней семантикой TCP и не учитывает границы пакетов прикладного уровня. Если TCP имеет достаточно данных для отправки в своем буфере отправки (каждый сокет TCP имеет свой собственный буфер отправки, кстати), он упаковывает свой следующий сегмент размером MTU и отправляет его; точнее, он вычитает заголовки TCP и IP из размера MTU.

Другие вопросы по тегам