IP协议分析

TCP/IP协议

Posted by Pele on March 6, 2022

IP协议分析

网际协议(英语:Internet Protocol,缩写:IP),又称互联网协议,是用于分组交换数据网络的协议。

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

IP路由表分析

image-20220311212114299

网络目标 网络掩码 分析
0.0.0.0 0.0.0.0 默认网关,当路由表中未找到IP地址时默认从该接口转发
10.136.0.0 255.255.240.0 子网号为10.136.0.0的子网
10.136.5.155 255.255.255.255 子网掩码为全255,这是一个特定主机路由
127.0.0.0 255.0.0.0 回环地址
192.168.137.0 255.255.255.0 子网号为192.168.137.0的子网
240.0.0.0 240.0.0.0 多播地址
255.255.255.255 255.255.255.255 广播地址
192.168.0.1 255.255.255.0 子网号为192.168.0.1的子网

IP数据包分析

IP数据报首部

IMG_1B94228CB3FB-1

  • Version 版本号:占4位,IPv4的值为4,IPv6的值为6
  • IHL Internet Header Length 首部长度 :占4位,首部以4字节为单位,所以IHL的范围为5~15,首部长度的范围为20~60
  • 区分服务:占8位,3位优先等级位+4位服务类型参数+1位保留位
    • 优先等级 Precedence:取值为0~7,0代表优先级为”一般”,7代表最大优先级。当路由器出现拥塞必须放弃一些数据报,具有低优先级的数据报将丢弃
    • 服务类型 Service Type :分别为DTRCDTR(低延迟、高吞吐率、可靠性、成本)
      • 1000 最小时延
      • 0100 最高可靠性
      • 0010 最大吞吐量
      • 0001 最小代价
  • Total Length 数据报总长度:占16位,以16字节为单位,所以报文的最大长度为2^16-1=65535字节
  • Identification 数据报标识
  • Flags 标志:占3位
    • 最高位为预留位0
    • 第二位为DF(不可分割),为0时表示可分割,为1时表示不可分割
    • 第三位为MF(更多分割),为0时表示是最后一个数据报,为1时表示后面还有数据报
  • Fragment Offset 片偏移:占13位,以8字节为单位
  • Time to Live ttl 生存时间:在IP网络中存在的最长时间(跳数),占8位,所以最长生存时间为255
  • Protocol 协议 :占8位
    • image-20220306213633480
  • Header Checksum 首部校验和:占16位
  • Source Address 源地址:占32位4字节,发送方主机的IP地址
  • Destination Address 目的地址:占32位4字节,目的主机的IP地址
  • IP选项 :分为3部分
    • 代码Code 1字节:选项的作用、类型和是否被复制
      • EOL 选项结束
      • NOP 无操作
      • RR 记录路由: 记录数据在Internet中传送的路由。分割时不复制
      • SSRR 严格的源路由:用于源主机预先指定数据报在Internet中传送的路由,并且记录传送过程中经过的路由。分割时必须复制
      • LSRR 宽松的源路由:对传送路由的要求不及SSRR严格,允许数据报经过任何非指定的路由器
      • TS 时间戳 :记录数据报每经过一个网关时记录下当地时间。分割时不需复制,仅存在于第一个数据报中
    • 长度Length 1字节:选项的总长度
    • 数据Data
  • Padding 填充

使用Wireshark工具抓取IP数据报并分析

从抓取结果中选择一个IP数据报,查看它的报文信息

image-20220308154126531

image-20220308154216167

  1. 版本号 0100 :IPv4image-20220308154623724

  2. 首部长度 0101 :5×4 =20 Bytes 首部长度为20字节

  3. 区分服务:00000000

  • image-20220308154729932

  • 该报文未选择任何服务

  1. 总长度:52

    • image-20220308155125851
    • 52×16=832 Bytes
  2. 数据报标识 0x0000

    • image-20220308155420387
  3. 标志 010

    • image-20220308155550506
    • image-20220308155800972
  4. 片偏移 0000000000000

  5. 生存时间 01000000 :64

    • image-20220308155743055
  6. 协议 00000110 : TCP(6)

    • image-20220308155827033
  7. 首部校验和 0x9477

    • image-20220308155932281
  8. 源地址 192.168.137.159

    • image-20220308160114831
  9. 目的地址 20.187.71.74

    • image-20220308160207867image-20220308160222285

查找其他的IP数据包,发现出现了另外两种区分服务类型

image-20220308225802574

Differentiated Services Codepoint :Assured Forwarding 41(34)

image-20220308223027732

Differentiated Services Codepoint :Lower Effort(1)

我发现这里的服务类型和书上讲的3+4+1的结构不太一致,所以就到网上查找到了关于DSCP的相关信息。

IP优先级(IP Precedence)方案可以粗略地将数据分为8个优先级(0~7),并还可以使用紧随优先级比特之后的4比特进一步的数据分类。当出现拥塞时,优先级低的数据被优先丢弃。但是这样的分类任然有太多局限性。因此,IETF提出了一种通用的、取代IP优先级分类的方案,即用6比特取代原来3比特,称这6比特为DSCP(Differentiated Service Codepoint,差分服务代码点)。

Differentiated services or DiffServ is a computer networking architecture that specifies a simple and scalable mechanism for classifying and managing network traffic and providing quality of service (QoS) on modern IP networks. DiffServ can, for example, be used to provide low-latency to critical network traffic such as voice or streaming media while providing simple best-effort service to non-critical services such as web traffic or file transfers.

DiffServ uses a 6-bit differentiated services code point (DSCP) in the 8-bit differentiated services field (DS field) in the IP header for packet classification purposes. The DS field replaces the outdated IPv4 TOS field.[[1]] —— Wikipedia

而在抓取的数据报中出现的Assured Forward和Lower Effort时DSCP的两种优先级

  • Assured Forward为保证转发
  • Lower Effort为“每条较低努力行为”

RFC 2597

RFC 8622