seriouspirate
@seriouspirate

Как происходит разбиение данных на TCP сегменты?

Как происходит разбиение данных на TCP сегменты?
Если мы передаем большой массив текста по HTTP в кодировке UTF8, может ли случится так, что разделение сегментов пройдет через какой-нибудь символ?
(Т.е. первый байт символа окажется в первом сегменте, а последующие во втором?)
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
в случае двухбайтовых символов unicode/utf? Конечно может, по любому смещению может поделиться. Поэтому в заголовках http используется разделитель \r\n, а для тела указывается явный размер, чтобы принимающая сторона точно знала, что еще не весь http запрос принят и нужно принимать дальше, и не начинать парсить
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4 Куратор тега Сетевое администрирование
Внимание! Изменился адрес почты!
...и не произойдет ничего страшного. Читаем про семиуровневую модель. Каждый уровень посылает тот обьем, который может послать. TCP фрагментирует на свои единицы, IP - на свои, Ethernet - на свои. При приеме они так же соответственно собираются и на последний уровень - HTTP отдается полностью переданный массив.
Ответ написан
Комментировать
@pfg21
ex-турист
система управления TCP сама все сделает: и распилит входной поток байтов на пакеты и полноценно в правильной последовательности соберет все обратно, для этого ее и создавали. Как произведется распиловка пользователю не сообщают, сколько есть места в MTU столько посылают :)

сшивок между пакетами ты не увидишь, ибо это проблемы не пользователя, а системы управления передачей данных и они давно все продуманы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы