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

arm720 2008-04-10 09:48:28
这两天调试一个使用TCP通讯的代码, 发现一个奇怪的问题:
软件实现的功能是:连接远程的服务器,连接成功后,发送一个请求给服务器.服务器响应该请求,回送一个应答给本机.

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

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

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

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

为什么Socket通讯过程中,协议字段会出现异常, 我以前从来没有发现过类似的的现象. 谁能给我解释一下.
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanghehong 2009-07-01
  • 打赏
  • 举报
回复
服务器使用的操作系统是什么,服务器端的TCP/IP协议栈用的是操作系统的吗?


- 千里孤行
kesx20032781 2009-07-01
  • 打赏
  • 举报
回复
遇到同样怪异的问题了......
CathySun118 2008-11-03
  • 打赏
  • 举报
回复
是否你接收数据的方式不对?
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
不会,帮顶

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧