Чтобы ответить на ваш непосредственный вопрос, если вы используете SOCK_STREAM , то вы фактически используете TCP, который является реализацией транспортного уровня, который делает заботится о пакете порядок и честность для вас. Похоже, это то, что вы хотите использовать. SOCK_DGRAM на самом деле UDP, который не заботится о вашей целостности.
Нужно ли нам заботиться о порядке поступления пакетов? В уровнях модели ISO-OSI ниже транспортного уровня обрабатываются все пакеты связи. Все ли уровни ISO-OSI присутствуют в программе?
Просто чтобы прояснить это, в модели ISO-OSI все уровни ниже транспортного уровня обрабатывают отправку одного пакета с одного компьютера на другой и не "понимают" Концепция упорядочения пакетов (к ним это не относится).
В этой модели есть другой уровень (уровень сеанса над транспортным уровнем), который отвечает за определение поведения сеанса. Именно этот слой решает, следует ли размещать вещи для предотвращения переупорядочения, обеспечения целостности и т. Д.
В современном мире модель ISO-OSI является скорее идеалистическим шаблоном, нежели реальной моделью. TCP / IP - это фактическая реализация, которая используется практически везде.
В TCP / IP транспортный уровень - это роль, определяющая, существует ли какое-либо поведение сеанса или нет.