多年来,我已经在很多事情上使用了TCP,并且对它有很好的理解。我现在有一个使用UDP的要求。
短版本:服务器允许少量客户端(5-10)连接。服务器正在运行模拟。客户端应该能够更新模拟的参数,并查看仿真结果的(子集)。
在这种情况下,定时(当参数变化时)非常重要,请求更改的客户端与正在实现的更改之间的延迟必须尽可能低。
我曾经是正在做什么 一个 地段 的 阅读,但我仍然没有“理解”。
有人能证实/否认我的理解吗..。
所以..。如果我想从客户机向服务器发送800字节的数据,我需要:
客户端
服务器
对于另一个方向的消息,我需要完全相反地做同样的事情。
我情不自禁地感觉到我遗漏了一些东西,也不太明白数据包碎片的含义。有人能澄清/指出更好的资源吗?
发布于 2013-12-01 21:11:23
不一定。
不正确。IP报头是20字节,而不是60字节,所以总报头是28字节。剩下的是576-28=548,但这个数字通常是534.
是。
不正确。碎片完全在IP级别处理。UDP中的碎片问题是,对于丢失的碎片没有ACK/重传机制,因此一个丢失的碎片意味着整个数据报丢失。您看到的要么是整个UDP数据报,要么什么也没有。
是。在W.R. Stevens中给出了一个简单的ACK/重试方案,Unix网络编程,第一卷。
发布于 2013-12-01 17:15:32
数据报存储在单个数据包中。
不是的。
我能可靠地发送的最大有效载荷是506字节(576 MTU - 60 IP报头-8 UDP报头)
“信实发送”指的是不同层次的事物。
发送的越多,可能会导致碎片。
与事实相吻合。
碎片不是在较低级别处理的,需要重新组合数据报(不确定这一点--如果它是自动处理的,为什么我会关心碎片?)
取决于你所处的水平。在应用程序级别,数据报要么全部接收,要么根本不接收。
子问题:太宽泛了,但听起来你应该用TCP来代替。
https://stackoverflow.com/questions/20314308
复制相似问题