- 主题:Qt UDP传输 校验和是怎么处理的?
如果校验不对的话,会被qt丢掉吗?
丢弃是路由的功能?所以端到端的传输的话不管,接收端还是能接收到错误数据?
qt本身不能设置丢掉还是不丢掉?
--
FROM 124.64.17.*
这个是网络层的功能。操作系统处理了。校验和不对就丢掉,Qt 本身无法控制。
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 如果校验不对的话,会被qt丢掉吗?
: 丢弃是路由的功能?所以端到端的传输的话不管,接收端还是能接收到错误数据?
: qt本身不能设置丢掉还是不丢掉?
: ...................
--
FROM 112.47.122.*
看了下源码,
win下的setsockopt调用里没有出现设置checksum的地方。
系统默认是进行checksum吗?
另外,win下,以太网卡可以设置是否进行 硬件校验和。如果校验错误,网卡会直接丢包吗?如果不丢,win会丢吗,还是会最终传给app?
其实就是想知道,qt的udp收发程序,如果收到了数据,是不是确定就是通过了校验和了?
【 在 hgoldfish 的大作中提到: 】
: 这个是网络层的功能。操作系统处理了。校验和不对就丢掉,Qt 本身无法控制。
:
: 【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: ...................
--
FROM 124.64.17.*
是的。。可以确定通过了检验和。
但是检验和并不能保证数据是对的。最好自己在应用层再搞个 sha256
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 看了下源码,
: win下的setsockopt调用里没有出现设置checksum的地方。
: 系统默认是进行checksum吗?
: ...................
--
FROM 112.47.122.*
请问,win下 如果设置网卡硬件校验和的话,win的协议栈本身还会做吗?
【 在 hgoldfish 的大作中提到: 】
: 是的。。可以确定通过了检验和。
:
: 但是检验和并不能保证数据是对的。最好自己在应用层再搞个 sha256
: ...................
--
FROM 124.64.17.*
网卡的检验不会做到UDP这一层的…
你找本TCP ip协议的书仔细读读就懂了
【 在 zhanghaoX 的大作中提到: 】
: 请问,win下 如果设置网卡硬件校验和的话,win的协议栈本身还会做吗?
--
FROM 223.104.219.*
硬件检验和是以太网帧的吧?
一共有有个 checksum,以太网帧、IP头、UDP包
一般说来,应用层接到的 UDP 包,checksum 都是被校验通过的。想接收到 checksum 不正常的,你得自己搞应用层的 TCP/IP 协议栈。
但是几个 checksum 算法是 CRC,强度不够,想要完全避免数据出错,还需要在应用层做 sha256 检验。
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 请问,win下 如果设置网卡硬件校验和的话,win的协议栈本身还会做吗?
--
FROM 112.47.122.*
你看下网卡高级设置,已经可以校验tcp udp了
【 在 dormouseBHU 的大作中提到: 】
: 网卡的检验不会做到UDP这一层的…
: 你找本TCP ip协议的书仔细读读就懂了
:
: ...................
--
FROM 124.64.17.*
网络层的东西, 跟语言没关系, 本身就不可靠传输
【 在 zhanghaoX 的大作中提到: 】
: 如果校验不对的话,会被qt丢掉吗?
: 丢弃是路由的功能?所以端到端的传输的话不管,接收端还是能接收到错误数据?
: qt本身不能设置丢掉还是不丢掉?
--
FROM 124.126.181.*
是的。如果网卡有offload能力并且驱动正确,那么就都算好了交给os的。
【 在 zhanghaoX (环顾四方有效) 的大作中提到: 】
: 看了下源码,
: win下的setsockopt调用里没有出现设置checksum的地方。
: 系统默认是进行checksum吗?
: ...................
--
FROM 220.205.232.*