IP包头的协议类型居然="00" ???

arm720 arm720 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这两天调试一个使用TCP通讯的代码, 发现一个奇怪的问题:
软件实现的功能是:连接远程的服务器,连接成功后,发送一个请求给服务器.服务器响应该请求,回送一个应答给本机.

本机上的TCP/IP协议栈是自己写的.

建立连接正常,服务器响应连接请求;
但是...
本机向服务器发送请求数据包后,服务器应答过来的ACK包异常.检查发现IP包头的协议字段内容居然="00"(正常的应该是"06",代表这是个TCP包).因此导致:我的协议栈把该应答包丢弃.

过了一段时间,服务程序把该Socket断开. 服务器发送一个关闭连接的请求给我. 这个IP包的包头的协议字段居然又正常了(="06").

后来,我只好把驱动中,关于协议字段的判断功能屏蔽掉.即使接收到的协议字段类型="00", 我也当做是TCP包. 这样一来,整个Socket通讯就正常了.

为什么Socket通讯过程中,协议字段会出现异常, 我以前从来没有发现过类似的的现象. 谁能给我解释一下.
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
arm720
通信技术 4,397 成员 28,909 内容