请教下UDP的发送原理
cqsfd 2010-03-24 05:23:19 先说一下自己的理解:
我认为我们平时使用UDP发送,在程序中调用send方法,只不过是应用程序把数据包PUSH到系统的UDP发送缓冲栈,之后操作系统会向网卡发送指令,使其把UDP发送缓冲栈的东西发送到网络上去。如果应用程序PUSH数据包的速度过快,发送缓冲区满了后又没有及时发送出去,新的数据包到来的话就会被系统悄悄丢弃。这样理解是否正确?
能否通过程序修改我使用的UDP的发送缓冲栈的大小?改了之后会不会有什么不良后果?
还有一个关于UDP如何分包的问题。
假如为了做到UDP的可靠传输,我将其分为每个最长1000字节的包,并且给每个UDP包加入包头序号发送出去。但不幸的是,网络上的MTU很小,只有500,我的每个1000字节的UDP包是不是会被分成2个500的包发出去?但是我的UDP包只在开始位置有序号标识,如果被分为2个包,恰好第二个包在传输过程中丢失了,岂不是造成接收信息不全,但应用程序又检测不到?
个人愚见,望高手解答。