好的,所以我正在为我的网络课程编程,我必须使用 UDP 在 Java 中实现一个项目。我们正在实现一个 HTTP 服务器和客户端以及一个以指定概率破坏数据包的“gremlin”函数。HTTP 服务器必须在应用层将一个大文件分成多个段,然后通过 UDP 发送给客户端。客户端必须在应用层重新组装接收到的段。然而,我想知道的是,如果 UDP 根据定义是不可靠的,为什么我必须在这里模拟不可靠性?
我的第一个想法是,也许这仅仅是因为我的导师在我们的案例中计算,客户端和服务器都将在同一台机器上运行,并且即使通过 UDP,文件也会从一个进程传输到另一个进程 100% 可靠,因为它位于同一台计算机上的两个进程之间。
这使我首先质疑如果服务器和客户端被保证是同一物理机器上的两个进程,UDP 是否真的会丢失数据包、损坏数据包或无序传递数据包,保证严格路由仅在本地主机上,这样它就不会通过网络出去。
我还想知道,一般来说,对于给定的数据包,UDP 在用于促进两个地理位置相当的主机之间通过开放互联网进行通信时丢弃/损坏/或乱序传递数据包的大致概率是多少彼此相距很远(比如说类似于美国普通宽带用户与 Google 的 CDN 之一之间的路由)?我主要只是想大致了解通过 UDP 通信时所经历的情况,它是否会丢弃/损坏/错误排序大约 25% 的数据包,或者更像是大约 0.001% 的数据包数据包?
非常感谢任何可以为我解答这些问题的人。