LOnils风迷 's Blog

hacking for fun

0x02 IP协议分析

    网际协议(Internet Protocol,IP),或称互联网协议,是用于报文交换网络的一种面向数据的协议。

    IP是在TCP/IP协议网络层的主要协议,任务是仅仅根据源主机和目的主机的地址传送数据。为此目的,IP定义了寻址方法和数据报的封装结构 。第一个架构的主要版本,现在称为IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署IPv6

    IPV4地址是一个4byte*8bit/byte = 32 bit 的地址,我们常用点分十进制表示,其中还分为五类IP,具体的网络掩码、CIDR不多说,让我们分析下IPV4头(域前面的数字为其大小 比特为单位)


2.1 IP头

 

  • 版本号Version(4bit):指出当前使用的 IP 版本,IPV4。

  • 头部长度IP Header Length (IHL) (4bit): 指数据报协议头长度,表示协议头具有32位字长的数量。指向数据起点。正确协议头最小值为5bytes。

  • 服务类型Type-of-Service (8bit): 指出上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。

  • 总长度Total Length(16bit): 指定整个 IP 数据包的字节长度,包括数据和协议头。其最大值为65,535字节。典型的主机可以接收576字节的数据报。

  • 标识 Identification(16bit): 包含一个整数,用于识别当前数据报。该字段由发送端分配帮助接收端集中数据报分片。

  • 标志字段 Flags(3bit): 其中最低位(MF)控制分片,存在下一个分片置为1,否则置0代表结束分片。中间位(DF)指出数据包是否可进行分片。第三位即最高位保留不使用,但是必须为0。

  • 分片偏移 Fragment Offset(13bit): 指出与源数据报的起始端相关的分片数据位置,支持目标IP适当重建源数据报。

  • 生存时间 Time-to-Live(8bit): 是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据包无止境的环路过程(即TTL)。

  • 协议Protocol(8bit): 指出在 IP 处理过程完成之后,有哪种上层协议接收导入数据包

  • 校验和 Header Checksum(13bit): 帮助确保 IP 协议头的完整性。由于某些协议头字段的改变,如生存期(Time to Live),这就需要对每个点重新计算和检验。Internet 协议头需要进行处理。

  • 源地址Source Address(32bit): 源主机IP地址。

  • 目标地址Destination Address(32bit): 目标主机IP地址。

  • 选项Options:允许 IP 支持各种选项,如安全性。

  • 数据Data:包括上层信息


    从上图我们可以知道,其IP版本为IPV4及其标示,TTL值,上层协议为ICMP 等信息。


2.2 存活时间TTL

    生存时间指定数据包路由器丢弃之前允许通过的网段数量。它是IP协议包中的一个值,它告诉网络数据包在网络中的时间是否太长而应被丢弃(每经过一个路由器TTL值会至少减1)。

    我们常用ping命令(ICMP协议)测试网络的连通性:


    在第一个ICMP请求包发送时其TTL为128


    
   之后目标主机返回给发送者



    发现其TTL值减一了,说明两台主机10.10.0.3和192.168.0.128之间隔了1台路由器。

评论(1)
热度(4)