IP协议报文详解
目录
- IP报文
- Version(版本)
- IHL(Internet Header Length IP表头的长度)
- Type of Service(服务类型)
- Total Length(总长度)
- Identification(标识符)
- Flag(分片标志)
- Fragment Offset(片偏移)
- Time To Live(生存周期)
- Protocol
- Header Checksum
- Source Address
- Destination Adress
- Options (其他参数)
- Padding(补齐项目)
前言
之前一直在纠结要不要写这个,因为网上已经有很多较棒的文章,后来想想还是写一下吧,主要用来加深自己的印象,毕竟已经忘了很多次
IP报文
Version(版本)
标识目前采用的 IP 协议的版本号。一般的值为 0100(IPv4),0110(IPv6)
IHL(Internet Header Length IP表头的长度)
- IHL指IP首部占32bit字节的数目(可以按照上图理解为占了几行)。另外首部长度本身为4位,能表示的二进制最大数为1111,换算成十进制为15,而且因为上图每一行是4个字节,所以IHL最大长度为15*4=60个字节
- 在上图中因为除了Options和Pading部分其他都是必须的,所以IHL最小长度为5*4=20个字节
Type of Service(服务类型)
共八位,由3位优先权字段(现已被忽略) + 4位TOS字段 + 1位保留字段(须为0)组成。4位TOS字段分别表示最小延时、最大吞吐量、最高可靠性、最小费用,其中最多有一个能置为1。应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务。 字段解析如下:
PPP:表示此IP封包的优先度,目前很少使用
D:若为 0 表示一般延迟(delay),若为 1 表示为低延迟;
T:若为 0 表示为一般传输量 (throughput),若为 1 表示为高传输量;
R:若为 0 表示为一般可靠度(reliability),若为 1 表示高可靠度。
M: 传输成本:0:普通,1:成本尽量小
O: 最后一位被保留,恒定为 0
Total Length(总长度)
指这个 IP 封包的总容量,包括表头与内容 (Data) 部分。最大可达 65535 bytes
Identification(标识符)
因为IP是无可靠服务,报文不可以按序接收(TCP可以实现按序接收),但当报文长度超过MTU而必须分片时,这字段来标识多个分片是否属于同一个报文,比如A报文被分成A1和A2,那么A1和A2的Identification是相同的。该字段Flags和Fragment Offest 结合实现在接受端组合分片报文
Flag(分片标志)
这个地方的内容为『0DM』,其意义为:
0: 不可用
D:若为 0 表示可以分片,若为 1 表示不可分片
M:若为 0 表示此 IP 为最后分片,若为 1 表示非最后分片。
Fragment Offset(片偏移)
表示该 IP 包在该组分片包中位置,接收端靠此来组装还原 IP 包
Time To Live(生存周期)
表示这个 IP 封包的存活时间,范围为 0-255。当这个 IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃。说实在的,要让 IP 封包通过 255 个路由器,还挺难的
Protocol
通过协议号标识上层使用的是哪一层协议,常用的协议号有:TCP=6,UDP=17,ICMP=1
Header Checksum
报头检验码,检查报头的正确性,checksum这种校验非常弱,规则都是透明的,所以不要相信这个校验和可以帮你防止恶意篡改,它仅仅用来应对网络传输中的干扰信号
Source Address
源IP地址,指的是公网地址
Destination Adress
目标IP地址,指的也是公网地址
Options (其他参数)
这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳、严格与宽松之来源路由等。
Padding(补齐项目)
Options和Padding一共有32位,由于Options字段不是固定的,所以需要Padding 字段来加以补齐
IP协议报文详解
目录
- IP报文
- Version(版本)
- IHL(Internet Header Length IP表头的长度)
- Type of Service(服务类型)
- Total Length(总长度)
- Identification(标识符)
- Flag(分片标志)
- Fragment Offset(片偏移)
- Time To Live(生存周期)
- Protocol
- Header Checksum
- Source Address
- Destination Adress
- Options (其他参数)
- Padding(补齐项目)
前言
之前一直在纠结要不要写这个,因为网上已经有很多较棒的文章,后来想想还是写一下吧,主要用来加深自己的印象,毕竟已经忘了很多次
IP报文
Version(版本)
标识目前采用的 IP 协议的版本号。一般的值为 0100(IPv4),0110(IPv6)
IHL(Internet Header Length IP表头的长度)
- IHL指IP首部占32bit字节的数目(可以按照上图理解为占了几行)。另外首部长度本身为4位,能表示的二进制最大数为1111,换算成十进制为15,而且因为上图每一行是4个字节,所以IHL最大长度为15*4=60个字节
- 在上图中因为除了Options和Pading部分其他都是必须的,所以IHL最小长度为5*4=20个字节
Type of Service(服务类型)
共八位,由3位优先权字段(现已被忽略) + 4位TOS字段 + 1位保留字段(须为0)组成。4位TOS字段分别表示最小延时、最大吞吐量、最高可靠性、最小费用,其中最多有一个能置为1。应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务。 字段解析如下:
PPP:表示此IP封包的优先度,目前很少使用
D:若为 0 表示一般延迟(delay),若为 1 表示为低延迟;
T:若为 0 表示为一般传输量 (throughput),若为 1 表示为高传输量;
R:若为 0 表示为一般可靠度(reliability),若为 1 表示高可靠度。
M: 传输成本:0:普通,1:成本尽量小
O: 最后一位被保留,恒定为 0
Total Length(总长度)
指这个 IP 封包的总容量,包括表头与内容 (Data) 部分。最大可达 65535 bytes
Identification(标识符)
因为IP是无可靠服务,报文不可以按序接收(TCP可以实现按序接收),但当报文长度超过MTU而必须分片时,这字段来标识多个分片是否属于同一个报文,比如A报文被分成A1和A2,那么A1和A2的Identification是相同的。该字段Flags和Fragment Offest 结合实现在接受端组合分片报文
Flag(分片标志)
这个地方的内容为『0DM』,其意义为:
0: 不可用
D:若为 0 表示可以分片,若为 1 表示不可分片
M:若为 0 表示此 IP 为最后分片,若为 1 表示非最后分片。
Fragment Offset(片偏移)
表示该 IP 包在该组分片包中位置,接收端靠此来组装还原 IP 包
Time To Live(生存周期)
表示这个 IP 封包的存活时间,范围为 0-255。当这个 IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃。说实在的,要让 IP 封包通过 255 个路由器,还挺难的
Protocol
通过协议号标识上层使用的是哪一层协议,常用的协议号有:TCP=6,UDP=17,ICMP=1
Header Checksum
报头检验码,检查报头的正确性,checksum这种校验非常弱,规则都是透明的,所以不要相信这个校验和可以帮你防止恶意篡改,它仅仅用来应对网络传输中的干扰信号
Source Address
源IP地址,指的是公网地址
Destination Adress
目标IP地址,指的也是公网地址
Options (其他参数)
这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳、严格与宽松之来源路由等。
Padding(补齐项目)
Options和Padding一共有32位,由于Options字段不是固定的,所以需要Padding 字段来加以补齐