seriouspirate
@seriouspirate

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

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

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

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

Похожие вопросы