假设:主机A把应用程序P1要发送的用户数据"abcd"填充到udp包,然后向主机B发送一条此udp包,接着主机B的应用程序P2收到了此udp包。请问,在主机B的程序P2里,收到的用户数据有可能不是"abcd"吗?如果有可能,是不是说明用户数据在传输的过程中式有可能损坏的,那么有什么方法来检测用户数据是否已经损坏。
解决方案 »
- 求助大神么,桌面歌词的实现
- SDK 关于窗口显示文本的问题(比较基础的问题)
- 类似flashget下载窗体的控件是什么阿?
- ■■■急需SMTP带验证的邮件发送代码,能使用sina或126的smtp服务器!■■■
- 谁有像qq那样的聊天源代码?(要有服务器和客户端的)帮帮我
- 各位大侠,谁能告诉我怎么解决这个问题???关于指针数组的
- 休闲问题
- 程序中ADO关闭数据连接后,程序退出有如下提示,帮我看看是什么原因?
- 用MFC写一个界面显示串口模块返回的变量值。求问
- 可不可以在vc编程中使用网上的msdn?
- 有哪个函数能捕获桌面发生变化的消息
- ShellExecute硬盘里面执行返回成功,CDROM里面执行返回5(E_ACCESS_DENIED)
http://download.csdn.net/detail/geoff08zhang/4571358
udp的不安全性:表现为不保证数据包送达目的,也不保证数据包到达的顺序
只要收到了数据包,那么这个数据包就一定是正确完整的这个说法正确吗?
和MTU无关。UDP有一个可选的校验选项,默认是打开的。
1、只要收到UDP包,那么在传输层,数据是保证完整、正确的。(当然,如果你提供的buf不够大,会出现WSAEMSGSIZE,那是应用层的问题了。)
2、UDP在发多个包时,不保证顺序到达。
3、接收缓冲区满时,再收到的包将被丢弃。
4、由于协议的限制,UDP的最大包容量为64k。(mtu只是链路层是否需要拆分的一个因素)
你在公网上发一个64KB的包试试看?你发个JB毛的,这然道和MTU也没有关系?64KB指的是在局域网内部,属于以太网,故而可以支持64KB以下的包大小。其他的你说的都是对的。
和MTU无关。UDP有一个可选的校验选项,默认是打开的。
1、只要收到UDP包,那么在传输层,数据是保证完整、正确的。(当然,如果你提供的buf不够大,会出现WSAEMSGSIZE,那是应用层的问题了。)
2、UDP在发多个包时,不保证顺序到达。
3、接收缓冲区满时,再收到的包将被丢弃。
4、由于协议的限制,UDP的最大包容量为64k。(mtu只是链路层是否需要拆分的一个因素)
假如我一次发送大于mtu的包,接收端会出现什么情况呢?
和MTU无关。UDP有一个可选的校验选项,默认是打开的。
1、只要收到UDP包,那么在传输层,数据是保证完整、正确的。(当然,如果你提供的buf不够大,会出现WSAEMSGSIZE,那是应用层的问题了。)
2、UDP在发多个包时,不保证顺序到达。
3、接收缓冲区满时,再收到的包将被丢弃。
4、由于协议的限制,UDP的最大包容量为64k。(mtu只是链路层是否需要拆分的一个因素)
假如我一次发送大于mtu的包,接收端会出现什么情况呢?
可以的,IP层会把它拆为一堆小包,接收端的UDP层再把小包组起来。不过如果丢了一个小包,你就什么也得不到。