IP协议分析
网际协议(英语:Internet Protocol,缩写:IP),又称互联网协议,是用于分组交换数据网络的协议。
IP是在TCP/IP协议族中网络层的主要协议,任务仅仅是根据源主机和目的主机的地址来传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本为IPv4,目前仍然是广泛使用的互联网协议,尽管世界各地正在积极部署IPv6。——Wikipedia
IP路由表分析
网络目标 | 网络掩码 | 分析 |
---|---|---|
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数据报首部
- 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位
- 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
- 代码Code 1字节:选项的作用、类型和是否被复制
- Padding 填充
使用Wireshark工具抓取IP数据报并分析
从抓取结果中选择一个IP数据报,查看它的报文信息
-
版本号
0100
:IPv4 -
首部长度
0101
:5×4 =20 Bytes 首部长度为20字节 -
区分服务:
00000000
-
-
该报文未选择任何服务
-
总长度:
52
- 52×16=832 Bytes
-
数据报标识
0x0000
-
标志
010
-
片偏移
0000000000000
-
生存时间
01000000
:64 -
协议
00000110
: TCP(6) -
首部校验和
0x9477
-
源地址
192.168.137.159
-
目的地址
20.187.71.74
查找其他的IP数据包,发现出现了另外两种区分服务类型
Differentiated Services Codepoint :Assured Forwarding 41(34)
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为“每条较低努力行为”