UDP不可靠有哪些情况。。。。。。。。。。。。

IT_Young 2010-05-18 02:27:35
UDP可能出现 数据先发送的 晚收到情况

这种乱序是以字节为单位的还是以发送的时间点或者其他?


...全文
188 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabbler_zhu 2010-05-19
  • 打赏
  • 举报
回复
当然是以MTU为单位乱序。

另外一种不可靠的情况是丢包。

[Quote=引用 5 楼 power_yq 的回复:]

我发送1M数据包的话 这1M出现乱序 应该会以MTU为单位吧?
[/Quote]
UDX协议 2010-05-19
  • 打赏
  • 举报
回复
to楼上。

你的文件有多大,是用udp传的吗?
路人乙2019 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwwllg 的回复:]

对于MTU来说网上已经有很多说明,在局域网一个包可以达到64k之多,而对于公网,由于mtu的限制一般只有1500字节。除去开销,只能大约在1400个字节,所以对于需要在公网传输的网络程序,最好把包定在1024左右。

如果大于1500,在公司上,99%可能是直接丢掉,在你的第一个网关处。
[/Quote]局域网不只64K吧,我发过一个文件。
UDX协议 2010-05-19
  • 打赏
  • 举报
回复
对于MTU来说网上已经有很多说明,在局域网一个包可以达到64k之多,而对于公网,由于mtu的限制一般只有1500字节。除去开销,只能大约在1400个字节,所以对于需要在公网传输的网络程序,最好把包定在1024左右。

如果大于1500,在公司上,99%可能是直接丢掉,在你的第一个网关处。
UDX协议 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 power_yq 的回复:]
楼上说的都是废话。。。。。
UDP造成乱序是不是因为MTU?
[/Quote]
---------乱序是由中间设备引起的,这些设备有可能丢掉,复制经过路由的包。另外,对于一个socket发出去的不同的包,可能经过的路由也不一样,从而造成了,迟到,重复,或者丢掉,乱序。
周药师 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 power_yq 的回复:]
我发送1M数据包的话 这1M出现乱序 应该会以MTU为单位吧?
[/Quote]
你一次发1M 肯定会有问题
MSDN :
The size in bytes of the largest User Datagram Protocol (UDP) datagram that can be sent or received by a Windows Sockets application. If the implementation imposes no limit, iMaxUdpDg is zero. In many implementations of Berkeley sockets, there is an implicit limit of 8192 bytes on UDP datagrams (which are fragmented if necessary). A Windows Sockets implementation can impose a limit based, for instance, on the allocation of fragment reassembly buffers. The minimum value of iMaxUdpDg for a compliant Windows Sockets implementation is 512. Note that regardless of the value of iMaxUdpDg, it is inadvisable to attempt to send a broadcast datagram which is larger than the Maximum Transmission Unit (MTU) for the network. (The Windows Sockets API does not provide a mechanism to discover the MTU, but it must be no less than 512 bytes.)
IT_Young 2010-05-18
  • 打赏
  • 举报
回复
我发送1M数据包的话 这1M出现乱序 应该会以MTU为单位吧?
xiezonglin 2010-05-18
  • 打赏
  • 举报
回复
楼主的意思应该是说,这个数据先发送后到的情况有没可能是说我发一个数据包,这个数据包的第一个字节比第二个字节后到.
还是说这种所谓的先发后到只是会造成先发的整个数据包会比后发的数据包后到
如果后面那种情况的话可以通过在数据包里面添加发送时间来解决这个问题
周药师 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 power_yq 的回复:]
楼上说的都是废话。。。。。
UDP造成乱序是不是因为MTU?
[/Quote]
你告诉我你的标题 UDP不可靠有哪些情况
这是什么意思?
IT_Young 2010-05-18
  • 打赏
  • 举报
回复
楼上说的都是废话。。。。。
UDP造成乱序是不是因为MTU?
周药师 2010-05-18
  • 打赏
  • 举报
回复
3) UDP和TCP的对比:

  从上面的流程图比较我们可以很明显的看出UDP没有三次握手过程。


  简单点说。UDP处理的细节比TCP少。UDP不能保证消息被传送到(它也报告消息没有传送到)目的地。UDP也不保证数据包的传送顺序。UDP把数据发出去后只能希望它能够抵达目的地。

  TCP优缺点:

  优点:

  1.TCP提供以认可的方式显式地创建和终止连接。

  2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。

  3.TCP处理流控制。

  4.允许数据优先

  5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。

  6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道

  缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。

  UDP优缺点:

  1.UDP不要求保持一个连接

  2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。

  3.设计UDP的目的是用于短应用和控制消息

  4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TDP更小。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧