流量分析四之IP协议
IP协议
Internet Protocol网际互连协议,是网络层中最为重要的协议。网络层提供了IP路由功能,解决如何将数据从一台主机送到另一台主机的问题。
IP报文格式
- 4位版本字段(Version),用于标识IPV4或IPV6;
- 4位IP报文头长度字段(Header Length),用于标识IP报文头部的长度,最小20字节,最大60字节;
- 8位区分服务字段(Differentiated Services,DS),也叫服务类型(Type of Service,TOS)。只有当网络设备能够支持识别该字段时,才有设置的意义,主要用于支持QoS中的差分服务模型,实现网络流量优化,其余时候默认8位全为0。前3位是优先权字段,现已弃用,默认值是000。中间4位是标识最小延迟(1000,minimize delay)、最大吞吐量(0100,maximize throughput)、最高可靠性(0010,maximize reliability)、最小费用(0001,minimize monetary cost)、一般服务(0000,normal service)。最后1位是保留字段,未使用,必须设置为0;
- 16位总长度字段(Total Length),统计IP首部和data数据之和,单位为字节,数据包的最大字节数为2^16-1=65535字节;
- 16位的标识符字段(Identification),用于唯一标识数据报。当报文长度超过了数据链路所支持的最大长度,则报文要分割成若干个较小的片段才能在链路上传输,将报文分割成多个片段的过程叫做分片。当一个数据报备被分片,每个分片的标识都是相同的,保证同一个数据报的分片能正确重新组合;
- 3位的标志字段(Flags),第一位未使用,设置为0。第二位是DF位(Don't fragment,不分片),取值为0则代表允许分片,取值为1则代表不允许分片。第三位是MF位(More fragments,更多分片),取值为0则代表没有更多分片需要发送,或数据报没有分片;
- 13位的片偏移字段(Fragment Offset),该字段的单位是8字节。片偏移表示每个分片在原始报文中的位置,第一个分片的片偏移为0,第二个片偏移表示紧跟在第一个分片后的第一个比特的位置。除最后一个分片,其他分片的偏移值都是8字节的整数倍。例如,当一个长度为4000字节的IP数据报传输时,超过了链路层的1500字节的MTU,需要进行分片。4000字节中,20字节是IP报头,3980字节是数据,需要分片成3个IP数据报。第一个分片的片偏移是0,表示该分片在数据字段3980的第0位开始,第1479位结束。第二个分片的片偏移是185(1480/8),表示该分片开始的位置在原IP数据报的第1480位,结束在2959。第三分片的片偏移为370(2960/8),表示开始的时候是2960位,结束在3979位;
- 8位的生成时间字段(Time to Live),每经过一台三层设备,TTL值减1,防止可能出现环路,导致无限循环,TTL值最大为255,降为0时则丢弃该报文,并向源IP地址反馈ICMP错误消息;
- 8位的协议号字段(Protocol),用于标识数据报文所携带数据所使用的协议类型。1是ICMP ,6 是TCP ,17是UDP,2是IGMP,89是OSPF;
- 16位的首部校验和(Header Checksum),根据IP首部计算的校验和码,用于校验IP报文头部在传输过程中是否出错。如果结果不是全1(即校验和错误),则丢弃收到的数据报,但不会生成差错报文,由上层去发现是否有丢失数据并进行重传;
- 32位的源IP地址、32位的目的IP地址,在传输过程中,一般都不会改变;
- 可选字段(IP Options),很少使用。
实验环境
在eNSP上搭建模拟环境,三层交换机上配置2个网关地址192.168.2.254、192.168.3.254。
PC1的ip地址是192.168.2.2子网掩码255.255.255.0,网关是192.168.2.254。
PC2的ip地址是192.168.3.3子网掩码255.255.255.0,网关是192.168.3.254。
PC1 ping PC2。
抓包分析
内容与报文结构一致: