如果我打开一个原始套接字,并发送校验和错误的 udp 数据包,这些数据包是否会被 tcp/ip 堆栈丢弃到另一侧?
是的,它们会被丢弃。 如果您需要更可靠的通信,最好使用 TCP。
有关更多信息,请查看:http://www.diffen.com/difference/TCP_vs_UDP
在 UDP 中,甚至无法保证数据包会被发送,更不用说接收了。 如果确实收到,则会进行检查。 如果它们校验和失败,它们就会被丢弃。
编辑:还要补充一点,UDP 默认情况下不会在发送数据包时对数据包进行排序,这必须在应用程序级别完成。 如果您仍打算使用 UDP,请记住这一点。
如果数据包的校验和错误,操作系统将在将其传递到套接字之前将其丢弃。
目标应用程序无法确定数据包是否丢失或校验和错误。 我认为它也不能强迫其他行为。