lwip 中tcp能与内网通信,但不能和外网通信的解决方法

来源:互联网 发布:漱口水 酒精 知乎 编辑:程序博客网 时间:2024/06/11 08:30

引言


 笔者之前在做lwip TCP内网通信的时候,比较顺利。但最近要访问到外网(阿里云香港)的服务器的时候,TCP一直连接不上,在经过了检查程序是否有BUG,lwip协议栈是否有问题,ip地址问题,但都没有发现问题后,笔者开始怀疑设置的MAC地址是否会有问题。

MAC地址

 在网上查阅了相关资料,发现了MAC地址是有相应的规范的,如下图所示:

MAC地址


 MAC地址中,前24位为组织唯一标识符,后24位由厂家自行定义。也就是说前24位是有规定的,其中48位MAC中的前几位也是有着对应的含义的。MAC地址详细的介绍,大家可以在网上搜得到。

 在这里笔者就怀疑可能是外网中某个节点,把我的包过滤了,因为之前笔者的MAC地址是随便写的,可能不符合规范。

解决办法

 在发现有可能是我的MAC地址不合法后,我就直接使用我电脑的MAC地址做测试,因为我电脑的网卡是正规厂商生产的,MAC地址是符合规范的。
 在电脑中的cmd中敲入ipconfig/all,可以查看得到电脑的MAC地址,我的地址如下图所示。

我的MAC地址


 将我电脑中MAC地址的前24位作为开发板的MAC地址的前24位,即0x309C23,后24位我随便填,为0x564F12,再次和外网服务器进行TCP通信,就连接上了。

结语

 最后在这里,验证了确实是我开发板MAC地址设置的问题,影响到了数据包在外网的传输,笔者在这里怀疑可能是外网某个节点做了过滤,将非法的mac地址的数据包给过滤了,也有可能是其他不明原因。

原创粉丝点击