tcp: перекомпоновка данных в конце - PullRequest
0 голосов
/ 25 марта 2012

Как TCP узнает, какой последний пакет большого файла (который был сегментирован tcp) в сценарии, в котором поддерживается постоянное соединение. (например, ftp или отправка mp3 на Yahoo Messenger)

Я имею в виду, как узнать, какой пакет содержит данные одного .mp3, а какой - данные другого .mp3 ??

Кто-нибудь?

Спасибо

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Существует как минимум 2 возможных подхода.

  • Объявите заранее, сколько данных вы собираетесь отправить.Что-то вроде пакета, который объявляет отправку сообщения длиной 4008 байт
  • Второй подход заключается в использовании завершающей последовательности (более неприятной для обработки)

Так чтополучатель:

  • Пытается прочитать объявленную сумму или
  • Сканирует на завершающую последовательность
0 голосов
/ 25 марта 2012

TCP является потоковым протоколом, и фрагментация должна быть прозрачной для приложения TCP.Он работает с потоками данных, а не с пакетами.Поток собирается в назначенном порядке с использованием порядковых номеров.Последовательность байтов, отправляемых приложением, инкапсулируется в сегменты tcp.Поток воссоздается на стороне получателя, прежде чем данные будут доставлены в приложение.

Протокол IP может выполнять фрагментацию.

Каждый сегмент TCP переходит на уровень IP и может быть там фрагментирован.Сегмент повторно собирается путем сбора всех пакетов, а поле смещения из заголовка используется для размещения его в нужном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...