Итак, я программирую для своего сетевого курса, и мне нужно реализовать проект на Java с использованием UDP. Мы реализуем HTTP-сервер и клиент вместе с функцией «гремлин», которая портит пакеты с заданной вероятностью. HTTP-сервер должен разбить большой файл на несколько сегментов на прикладном уровне, чтобы отправить его клиенту по протоколу UDP. Клиент должен повторно собрать полученные сегменты на прикладном уровне. Однако мне интересно, если UDP по определению ненадежен, почему я должен имитировать здесь ненадежность?
Моя первая мысль заключается в том, что, возможно, это просто потому, что мой инструктор считает, что в нашем случае и клиент, и сервер будут работать на одной машине, и что файл будет передан из одного процесса в другой со 100% надежностью даже по UDP, поскольку он находится между двумя процессами на одном компьютере.
Это заставило меня задаться вопросом, будет ли UDP терять пакет, повреждать пакет или доставлять его не по порядку, если сервер и клиент являются двумя процессами на одном компьютере, и ему не нужно выходить в реальную сеть.
Мне также интересно, каковы шансы на фактическую потерю пакета, его повреждение или доставку не по порядку на самом деле через Интернет между двумя географически удаленными хостами.
Большое спасибо всем, кто может пролить свет на любой из этих вопросов для меня.