Я знаю, что TCP обеспечивает потоковую передачу данных, но главный вопрос - какие ситуации могут возникнуть при отправке данных по TCP?
1. Сообщение может быть разделено на N фрагментов, чтобы соответствовать размеру MTU.
2. Два сообщения могут быть прочитаны в 1 вызове recv.
Может ли быть следующая ситуация?
MTU, например, 1500 байт.
Клиентские звонки отправляются с данными размером 1498 байт.
Клиентские звонки отправляются с данными размером 100 байт.
Сервер вызывает recv и получает 1500 байт данных.
Сервер вызывает recv и получает 98 байт данных.
Таким образом, возникает ситуация, когда 2 байта от второй клиентской посылки будут получены в первом сервере recv.
Мой протокол определен как следующие:
4 байта - длина данных
содержание данных.
Интересно, могу ли я придумать ситуацию, когда 4 байта (длина данных) будут разделены на 2 блока?