完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位好,我最近在调试LWIP的TCP功能。运行环境:STM32H743开发板,DP83848I芯片,rt-thread4.1.0,LWIP2.1.2。 最近发现的问题比较奇怪:首先是电脑能够ping通板子,但是板子ping不通电脑,电脑的wireshark上也能抓到板子发过来的数据。后来发现是电脑的入站规则设置得有问题。 这个解决了之后,我打算在此基础上尝试和电脑建立TCP连接。然而现在又遇到了类似的问题:板子(192.168.198.17)已经发过来握手请求了,wireshark上也抓到了,但是电脑(192.168.198.16)始终不应答。请问这个可能是什么原因?还是入站规则导致的吗?有没有大佬遇到过类似的问题? |
|
相关推荐
7个回答
|
|
昨天研究了下,应该是握手的报文段长度太短了(60个字节,小于64字节),导致电脑认为它是个无效数据,就直接丢弃了。现在尝试一下怎么填充数据,目前还没找到这个功能是在哪里开启的。
我觉得应该不是防火墙的问题,目前防火墙已经全部卸载/关闭了,如果是这里的问题,ping功能也不会正常的 |
|
|
|
不够长的真改长即可,有些EMAC有自动填充功能,填充的数据没啥要求。
|
|
|
|
老哥,这个“EMAC填充”是在哪里做的?是单片机的ETH外设吗?我摸索了一阵,还是没什么头绪,方便展开描述下吗?
|
|
|
|
|
|
|
|
我又研究了下,我认为我之前的想法是错误的:Wireshark的长度信息应该是不包括MAC帧头部的前导码、帧起始,以及尾部的FCS数据的,也就是说真正的数据长是60+8+4 = 72字节,长度应该是没有问题的。
填充域的配置确实是在ETH外设这里:一个是发送描述符:TDES3的CPC字段,决定了MAC帧是否开启填充功能;另一个是ETH_MTLTxQOMR寄存器的TTC字段,它决定了发送数据帧的最小长度,这两个都配置过了,并没有解决上述问题。 目前的想法是从MAC帧开始,按照wireshark的解析逐步核对,看看是不是帧的内容错误导致电脑不应答,如果数据的内容没有问题,可能真的就没什么方向了 |
|
|
|
特别奇怪,这个问题今天它自己就消失了:我尝试过更换电脑、更换网线,结果问题都没有解决。然而我尝试不通过板子和电脑直连,使用路由器中转的方式操作,结果TCP连接每次都成功,两者互相做client端、sever端都没问题。然后我试着去掉路由器,电脑和板子直连,结果也可以了——这个问题它自己就消失了,目前还是没找到原因是什么
|
|
|
|
电脑做服务器的话试试关闭防火墙,做客户端的话不用关
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1696 浏览 0 评论
1559 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6834 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1899 浏览 0 评论
4655 浏览 0 评论
79325 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-13 19:41 , Processed in 0.972726 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191