Мне задали интересный вопрос о дейтаграммах и о том, как они фрагментированы, а именно о том, что используется для повторной сборки исходной дейтаграммы.
- Я знаю, что идентификационный номер в каждом фрагменте будет одинаковым, чтобы показать, что все они принадлежат одной большой датаграмме.
- Я знаю, что FragFlag, установленный в 1, означает, что есть еще фрагменты на пути, однако фрагмент с FragFlag, равным 0, означает, что это последний фрагмент.
Есть еще одна вещь, которую мне не хватает, и я предполагаю, что должны использоваться порядковые номера, чтобы фрагменты знали, в каком порядке они должны быть возвращены. Однако, если это правда, это меня смущает, потому что датаграммы используют UDP, который предполагается быть ненадежным и может привести к потере пакетов в пути или их отправке в неправильном порядке.
Напротив, TCP должен быть надежным и лучшим способом гарантировать отправку пакетов в правильном порядке. Здесь все работает по-другому, потому что мы имеем дело с дейтаграммами, а не с пакетами? Или порядковые номера были созданы только для того, чтобы сделать UDP более «надежным».
Спасибо за любую помощь.