发帖
20 1 0
2024-10-21 09:34:27
WildboarG 发表于 2024-10-16 15:48
协议不可靠,需要在应用层设计协议来规避

协议是不可靠,一般丢了直接就丢了,但是重发就会有点奇怪。
测试了Ai-M61、ESP32、ESP8266,信号弱UDP是会丢数据,但是不会重发数据。
2024-10-26 15:54:13
赞*6
我一开始使用tcp传输数据(每一帧数据比较打几K)没问题,改用udp后超过1472个字节就发送失败使用的接口都是write(sockect_fd, data, size),整个连接流程我看除了socket(AF_INET, SOCK_DGRAM, 0)和socket_fd = socket(AF_INET, SOCK_STREAM, 0)外没有区别,这是什么原因
2024-11-14 15:32:59
厉害,感谢分享!!
2024-11-14 22:02:22
学习了
2024-11-17 23:59:44
2024-11-20 16:57:27
学习了
2024-12-16 10:49:26
2025-1-17 17:27:34
胖胖的杰瑞鼠 发表于 2024-11-12 15:49
我一开始使用tcp传输数据(每一帧数据比较打几K)没问题,改用udp后超过1472个字节就发送失败使用的接口都 ...

以太网的标准MTU一般是1500字节,这意味着每个数据包的大小通常不能超过1500字节。UDP报文除了数据本身,还包含UDP头和IP头(IPv4头部为20字节,UDP头部为8字节)。因此,UDP数据部分的最大大小为1500字节 - 20字节(IP头) - 8字节(UDP头)= 1472字节。由于MTU的限制发送的数据包超过1472字节,导致IP层就分片,或直接丢失数据包,具体情况取决于网络设备的配置和是否启用了IP分片
2025-1-17 19:24:53
UDP广播包发送出去,自己接收不到,可能是因为底层(可能是网络层或数据链路层?)给过滤了吧,类似以太网(数据链路层)交换机的过滤功能;

查到“现代操作系统和网络接口卡(NIC)通常会过滤掉自己发送的广播包”,具体不清楚)

书上提到对于分片与TCP与UDP,从需求、设计上 要避免让数据过大、UDP分片因为无序号,可能确定是发送UDP时,网络层的ipv4协议号字段与分片MF/DF字段 都被设置为合适值?
您需要登录后才可以回帖 立即登录
高级模式
统计信息
  • 会员数: 28220 个
  • 话题数: 40145 篇