目录
一、IP包头
1、涵义详解
1、IP大小范围
--当Options=0时,1行是4字节 共4×5=20字节
--当IHL=1111(15)时,15×4=60字节
所以IPv4的大小范围为 20字节~60字节
2、第一行(32Bit)
- Version(版本)——4Bit
表示IP的版本号
默认值为0100表示IPv4 如果为0110表示IPv6
- IHL(首部长度)——4Bit
表示IP首部的总长度。
默认值0101=5 5X32/8=20字节 表示普通的IP报头长度为20字节
当首部长度最大15(1111)时, 15×32/8=60 字节
- Type of Service(服务类型)——8Bit
对我们的数据或流量进行一个标记
也称为TOS
标记流量后,可以进行QOS QOS差分服务用该字段
QOS:可以做数据过滤、数据限速——这种叫服务质量
针对一些用户,牺牲掉一部分用户的资源,为更重要的用户提供更优质的服务。
对流量标记有三种方法
1、IPP 8bit标记流量只用了前3个(只能区分8种流量),后5个bit没用
2、DSCP 区分服务代码点 标记流量用来前6个(可以区分64种服务),后2个bit用于ECN
3、PHB 前两者兼容,21种(8+12+1)
- Total Length(总长度)——16Bit
IP报头 + data
表示整个IP数据包的长度,以字节为单位,最长为65535
3、第二行(32Bit)
- Identification (标识符)——16Bit
在3层对流量进行区分、标记。 (如果数据是基于UDP传输的,因为UDP没有序列号不能进行差错控制,所以需要在IP报文中支持差错控制——要把所有分片的数据进行重组)
通常每发送一份报文该值+1,该值在数据分片时,会复制到每一个片中。所以在重组分片包的时候会观察该值。
把该值相同的分片收集到一起重组。
- Flags(标记位)——3Bit
该字段主要用来分片和重组。
第一位Bit:R:保留位(Reserved Bit) ——该位一般置位0
第二位BIt:DF:不分片位(Don‘t Fragment)——能否分片位 该位置1(不分片) 置0(分片)
第三位Bit:MF:更多分片位 (More Fragment)——表示是否该报文为最后一片 0表示最后一片 该位置1表示后面还有更多分片
- Fragment Offset(分片偏移)——13Bit
每一个分片的数据字段偏移原始数据报开始处的位置。
例:原始数据报的数据字段总长为1461bytes,使用TCP传输,对该数据报分片,第一片
的offset字段为0,第二片的offset字段就应该为1460
4、第三行
- Time to Live(生存时间)——8Bit
三层防环机制(数据包的防环机制)
每查看一次路由表TTl减一
可经过最多的路由数,即数据包在网络中可通过的路由器数的最大值,一般为255,减到0下一个路由器丢弃该数据包
表示该IP数据包可以经过的路由器的最大数量,最大为256表示可以穿越256台路由,该字段
采用减法的方式赋值,如果该字段减到了0还没有传送目的地,那么该IP数据包将被丢弃。
最初设计这个字段就是为了防止IP报文在网络中循环无线传输,占用带宽等问题
单位:s 默认255s
防环工具 每经过一个路由题,TTL-1,当TTL=0 数据包丢弃
- Protocol(协议号)——8Bit
范围:1~255
描述上层使用什么协议 Tcp=6 UDP=17 ICMP=1 OSPF=89
- Header Checksum(头部校验)——16Bit
只计算IP数据包的头部有没有被改过,不检验数据部分
肯定不检验TTL,这里不采用ORC检验码,而采用简单的计算方法
用来使接收端检验收到的报文是否正确。
该字段只对IP首部计算校验和 不包含后面的数据字段。
5、第四行
- Source Address(源IP地址)——32Bit
6、第五行
- Destination Address(目标IP地址)——32Bit
7、第六行
- Options
一般不使用该字段,该字段的值以32Bit为单位,不足时以0补充。
特殊功能
定义数据的严格路由(IP严格路由最多定义9个IP地址-Option字段只有40个字节,还有控制字符等需要占位所有就不足40【一个IP地址4个字节】)、松散路由、记录路由、时间戳。
严格路由:源到达目标必须按照指定的路由进行转发,走其他路是不允许的
写严格路由的时候:源ping目标所经过所有路由器的出接口IP地址依次写入到路由控制表中(ping包中),数据才能转发出去,数据转发出去的过程中每到一个路由器都要检测出接口IP地址,如果检测到的顺序跟列表顺序一样,则可以转发。如果中途多个路由器或少个路由器则数据包丢弃。
松散路由:写松散路由的时候:只写中间可能会产生影像数据转发方式的路由出接口地址
记录路由:将数据包传递过程中所经过的所有路由器的出接口IP地址全记录下来
时间戳:记录时间
- Padding(填充项)
可变 全填0
只是为了保证option+padding的大小是32bit或者是32bit的倍数
注:
- 服务类型service type可以保证服务质量
- ip报头的第二行(标志、标识、分片偏移)是为了实现跨层封装
- TTL生产时间0~255,默认每经过一台路由器减一,并且可以防止环路
- 协议protocol,为了标识上层协议:tcp-6 udp-17 OSPF-89
二、TCP报头
注:其中resv可以保证QOS(服务质量);标志位(fin/syn/ack/urg)生效是1不生效0
ACK:确认序号有效。
SYN:发起一个新连接。
FIN:释放一个连接。
URG:紧急位
Burgent pointer紧急指针为了打标签。
三、UDP报头