IP包头的协议类型居然="00" ???
这两天调试一个使用TCP通讯的代码, 发现一个奇怪的问题:
软件实现的功能是:连接远程的服务器,连接成功后,发送一个请求给服务器.服务器响应该请求,回送一个应答给本机.
本机上的TCP/IP协议栈是自己写的.
建立连接正常,服务器响应连接请求;
但是...
本机向服务器发送请求数据包后,服务器应答过来的ACK包异常.检查发现IP包头的协议字段内容居然="00"(正常的应该是"06",代表这是个TCP包).因此导致:我的协议栈把该应答包丢弃.
过了一段时间,服务程序把该Socket断开. 服务器发送一个关闭连接的请求给我. 这个IP包的包头的协议字段居然又正常了(="06").
后来,我只好把驱动中,关于协议字段的判断功能屏蔽掉.即使接收到的协议字段类型="00", 我也当做是TCP包. 这样一来,整个Socket通讯就正常了.
为什么Socket通讯过程中,协议字段会出现异常, 我以前从来没有发现过类似的的现象. 谁能给我解释一下.
软件实现的功能是:连接远程的服务器,连接成功后,发送一个请求给服务器.服务器响应该请求,回送一个应答给本机.
本机上的TCP/IP协议栈是自己写的.
建立连接正常,服务器响应连接请求;
但是...
本机向服务器发送请求数据包后,服务器应答过来的ACK包异常.检查发现IP包头的协议字段内容居然="00"(正常的应该是"06",代表这是个TCP包).因此导致:我的协议栈把该应答包丢弃.
过了一段时间,服务程序把该Socket断开. 服务器发送一个关闭连接的请求给我. 这个IP包的包头的协议字段居然又正常了(="06").
后来,我只好把驱动中,关于协议字段的判断功能屏蔽掉.即使接收到的协议字段类型="00", 我也当做是TCP包. 这样一来,整个Socket通讯就正常了.
为什么Socket通讯过程中,协议字段会出现异常, 我以前从来没有发现过类似的的现象. 谁能给我解释一下.
...全文
相关推荐
IP包头结构详解.doc
IP 包头结构详解IP 包头结构是 Internet 协议(IP)的核心组件之一,它提供了基本的寻址、路由和数据传输机制。
ip包头分析
本篇文章将根据提供的文件信息对IP包头进行深入解析。#### 一、IP包头概述IP数据包头是用于描述数据包属性的信息区域,它对于数据包在网络中的传输至关重要。
IPv4包头详解
IP包头长度(Header Length)- **长度**:4比特- **作用**:指示IP包头的长度。因为IPv4包头中包含了一个可变长度的选项字段,所以这一字段对于确定包头的确切长度至关重要。
解析IP数据包程序的设计与实现
其次,解析IP数据包的内容是程序的重点。IP数据包头包含了关键信息,如版本(IPv4或IPv6)、服务类型、总长度、标识符、标志、片偏移、生存时间、协议类型、头部校验和、源IP地址和目的IP地址。
TCP/IP协议的数据包头格式
**ARP(地址解析协议)头部**ARP用于将IP地址转换为物理(MAC)地址,头部包含:1. **操作类型**:请求或响应。2. **硬件类型和协议类型**:如以太网和IPv4。3.


