В какой момент передачи сообщения от клиента к хосту (или наоборот) является сообщение, фактически нарезанное пакетами?Когда именно создаются сетевые пакеты?
Из моего нынешнего понимания приложение помещает весь файл в сокет и передает его полностью TCP. TCP сначала буферизует файл/сообщение, а когда время прав (когда это правильно?) Сокращает куски данных буфера (создает пакеты) и добавляет заголовки TCP для преобразования фрагментов в сегменты.
Почему мы говорим о пакетах на прикладном уровне, если на уровне приложения нет пакетов? Просто целые файлы ... Это не добавляет права.
Может кто-нибудь подтвердить мое понимание?
Использование термина _message_ с потоковым протоколом легко смутит новичков. _message_ слишком часто неправильно воспринимается как _datagram_ из связанных протоколов (например, UDP). С потоковыми протоколами вы - на уровне приложения - отправляете (последовательности) байтов. Тем не менее, вы можете пометить каждую прохождение такой последовательности байтов на нижнем уровне (обычно API операционной системы) _message_ в терминологии вашего объяснения. – rpy
Какой термин вы используете для единицы информации, переданной из приложения на транспортный уровень? Мне нравится * сообщение *, и я считаю, что этот термин является стандартным, но я вполне согласен изменить свое мнение, если у вас есть лучший термин. – jch
Я не уверен, какой был бы хороший термин. Я бы пошел с _message_, но добавил бы, что этот прикладной уровень может отправлять произвольные последовательности байтов в уровень API, и эти вызовы будут формировать _messages_ в общем смысле. Вы могли бы также добавить некоторое замечание, поясняющее, что с помощью TCP a_message_ также можно было бы объединить с более ранними или более поздними сообщениями, прежде чем их рубили в сегменты. Таким образом, сообщение не является естественной границей для дальнейшего формирования сегментов (и пакетов). – rpy