Re[5]: Максимальная длина TCP пакета в сети
От: Stanislav V. Zudin Россия  
Дата: 10.02.20 16:00
Оценка: +1
Здравствуйте, AlexGin, Вы писали:

AG>Да, передавать полный размер в нвчале — также неплохая идея. Может стоит совместить это с маркером конца пакета? На случай потери промежуточных фрагментов, например.


В протоколе TCP не может быть потерянных пакетов. Восстановление последовательности выполняется на нижнем уровне.
На твоём прикладном уровне все пакеты на месте и в нужном порядке.

SVZ>>Размер кусков, вычитываемых за один раз из сокета, это вообще дело тёмное, отдано на откуп системе и с MTU никак не связано.

SVZ>>Скорость приема данных на уровне драйвера и скорость чтения прикладной программой из сокета разные, поэтому за одно чтение ты можешь зачитать сразу несколько пакетов.

AG>Следующий пакет от сервера — не приходит, пока клиент не подтвердил (не квитировал) предшествующий.


Там всё немного сложнее. Подтверждаться может не каждый пакет, а целая цепочка.

SVZ>>Максимум — ты можешь порулить размером буфера, выделяемого под сокет. В 99.9% дефолтных значений хватит за глаза.

SVZ>>А размер буфера в прикладной программе — полностью под твоим контролем, хоть по одному байту читай.

AG>Вот это интересно.

AG>Где подробнее об этом почитать? Какие ключевые слова гуглить?

setsockopt

AG>Ну и отдельный вопрос — возможно уже не к тебе — реализовано ли это как-то в Qt5?


Какая-нибудь ручка наружу обязательно торчит.
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.