以太网首部
目地 MAC地址( 8 字节)
源 MAC地址( 8 字节)
类型( 2 字节)
- 1 -
1、IP 头的结构
版本( 4 位) 头长度( 4 位) 服务类型( 8 位) 封包总长度( 16 位)
封包标识( 16 位) 标志( 3 位) 片断偏移地址( 13 位)
存活时间( 8 位) 协议( 8 位) 校验和( 16 位)
来源 IP 地址( 32 位)
目的 IP 地址( 32 位)
选项(可选) 填充(可选)
数据
(1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到
右,依次从低位到高位。
(2 )版本:占第一个字节的高四位。头长度:占第一个字节的低四位。
(3 )服务类型:前 3 位为优先字段权,现在已经被忽略。接着 4 位用来表示最小延迟、最
大吞吐量、最高可靠性和最小费用。
(4 )封包总长度:整个 IP 报的长度,单位为字节。
(5 )存活时间:就是封包的生存时间。通常用通过的路由器的个数来衡量,比如初始值设
置为 32 ,则每通过一个路由器处理就会被减一,当这个值为 0 的时候就会丢掉这个包,
并用 ICMP消息通知源主机。
(6 )协议:定义了数据的协议,分别为: TCP、UDP、 ICMP和 IGMP。定义为:
#define PROTOCOL_TCP 0x06
#define PROTOCOL_UDP 0x11
#define PROTOCOL_ICMP 0x06
#define PROTOCOL_IGMP 0x06
(7 )检验和:校验的首先将该字段设置为 0,然后将 IP 头的每 16 位进行二进制取反求和,
将结果保存在校验和字段。
(8 )来源 IP 地址:将 IP 地址看作是 32 位数值则需要将网络字节顺序转化位主机字节顺序。
转化的方法是:将每 4 个字节首尾互换,将 2、3 字节互换。
(9 )目的 IP 地址:转换方法和来源 IP 地址一样。
在网络协议中, IP 是面向非连接的,所谓的非连接就是传递数据的时候,不检测网络
是否连通。所以是不可靠的数据报协议, IP 协议主要负责在主机之间寻址和选择数据
包路由。
2 、ICMP协议的头结构
类型( 8 位) 代码( 8 位) 校验和( 8 位)
类型或者代码
(1)类型:一个 8 位类型字段,表示 ICMP数据包类型。
(2 )代码: 一个 8 位代码域, 表示指定类型中的一个功能。 如果一个类型中只有一种功能,
代码域置为 0。
(3 )检验和:数据包中 ICMP部分上的一个 16 位检验和。
- 2 -
3、TCP协议的头结构
来源端口( 2 字节) 目的端口( 2 字节)
序号( 4 字节)