IPv4概述
- IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议,提供不可靠的、无连接的、尽力而为的数据报传输服务。
IPv4报文格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| HL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Internet Protocol Version 4, Src: 192.168.43.184, Dst: 221.204.183.35
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 800
Identification: 0x9c7a (40058)
Flags: 0x40, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 128
Protocol: TCP (6)
Header Checksum: 0x0000 [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.43.184
Destination Address: 221.204.183.35
Options:
Padding:
字段 | 长度 | 字段说明 |
---|---|---|
Version | 4 bit | 版本号,0100(十进制4)表示IPv4,0110(十进制6)表示IPv6。 |
Header Length | 4 bit | IP头长度,取值范围[0101-1111]也就是[5-15],IP头长度[5-15]*4=[20-60Byte],在IPv4 options字段为空的情况下,IP头长度为20Byte。该值限制了记录路由选项。以4字节为一个单位。 |
DSCP/Tos | 1 Byte | 区分(差分)服务代码点,又叫服务类型,该字段表示该数据包的优先级,主要用于qos,RFC791中将数据流分为8个优先级,取值越大,优先级越高,而RFC2474中对该字段重新定义,把前6位定义成DSCP,可以标识64个优先级,后两位保留。 |
Total Length | 4 Byte | 数据包的总长度(MTU),包括IP头长度,单位为字节,最长为65535Byte,但以太网中最大MTU不得超过1500Byte(受网卡程序限制)。 |
Identification | 4 Byte | 标识符,简称ID字段,主机每发一个报文,加1,该字段主要用于报文分片重组,当MTU大于1500B时,数据包会被分片。该字段与Flags、Fragment Offset字段联合使用。 |
Flags | 1 Byte | 标记,Bit 0: 保留位,必须为0。Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。IP层没有重传机制,只能依靠传输层重传,只要有一片数据包丢失,后面的数据包都要再传一次。所以避免IP分片。 |
Fragment Offset | 2 Byte | 片偏移,分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。 |
Time to Live | 1 Byte | TTL生存周期,每经过一个3层节点该字段就会-1,如果该字段减为0,设备就会丢弃,该字段主要用于三层防环(防止路由环路导致数据包在网络中不停地转发)。 |
Protocol | 1 Byte | 协议,该字段用于标识上层(传输层)所使用地协议。例如常见的有:ICMP 为1,TCP为6,UDP为17,ospf为89,vrrp为112。 |
Header Checksum | 4 Byte | IP头部校验,只检验数据包的首部的正确性,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。wireshark可以设置是否进行校验,默认不校验。 |
Source Address | 4 Byte | 源地址,在网络中没有nat的情况下,在整个传输过程中该字段不会变化。 |
Destination Address | 4 Byte | 目的地址,在网络中没有nat的情况下,在整个传输过程中该字段不会变化。 |
Options | 可变 | 可选项,主要用于测试、排错、安全等,从1字节到40字节不等,主要包含1.松散源路由(Loose Sourece Routing)2.严格源路由(Strict Sourece Routing)3.路由记录 4.时间戳 |
Padding | 可变 | 填充字段,全填0,一般和Options字段搭配使用。因为IP报文头长度的单位是4B(32bit),所以IP报文头必须是32bit的整数倍,因此在可选项后面,该字段会填充若干个0,以达到32bit的整数倍。 |
extend
icmp分片
ping -l 1600 192.168.3.143(-l length 1600B),在客户端抓的报文。
因为ping 指定了发送数据的大小为1600B,data(1600B)+8B(icmp)+20B(ip)=1628B>1500B,实行分片
Packet:9,data(1480B)+20B(ip)+14B(Ethernet v2)=1500B
Packet:10,data(120B)+8B(icmp)+20B(ip)+14B(Ethernet v2)=162B
Packet11-12为reply包,和request包一样。
IPv4数量
- 因IPv4报文中Source Address/Destination Address只有32bit,可用地址2的32次方4294967296个,但是有几类特殊地址是无法使用的:
- 127.x.x.x 本地地址段
- 224.x.x.x 组播地址段
- 255.255.255.255 广播地址
- 10.0.0.0~10.255.255.255 A类地址
- 172.16.0.0 ~172.31.255.255 B类地址
- 192.168.0.0~192.168.255.255 C类地址
大多数公网IPv4地址被米国所申请占用,当前,推动IPv6的规模部署已成为建设网络强国的重要国家战略。“十四五”规划和2035年远景目标纲要强调全面推进IPv6商用部署。
TTL
- 判断网络距离
- 根据TTL字段数值减了多少来判断,目标与自己之间经过了多少三层设备。
- 判断操作系统
- 根据icmp返回来的ttl字段值来估略判断操作系统的类型。多数Linux操作系统ttl字段默认为64,微软win7、win10操作系统ttl字段默认为128。
C:\Users\jack>ping 192.168.3.1 //无线路由器(Linux内核)
正在 Ping 192.168.3.1 具有 32 字节的数据:
来自 192.168.3.1 的回复: 字节=32 时间=1ms TTL=64
C:\Users\jack>ping 192.168.3.143 //redhat(Linux内核)
正在 Ping 192.168.3.143 具有 32 字节的数据:
来自 192.168.3.143 的回复: 字节=32 时间=4ms TTL=64
C:\Users\jack>ping 192.168.3.209 //手机(Linux内核)
正在 Ping 192.168.3.209 具有 32 字节的数据:
来自 192.168.3.209 的回复: 字节=32 时间=7ms TTL=64
C:\Users\jack>ping 192.168.3.94 //win10
正在 Ping 192.168.3.94 具有 32 字节的数据:
来自 192.168.3.94 的回复: 字节=32 时间=3ms TTL=128
标签:字节,IP,192.168,ipv4,分片,Byte,32 From: https://www.cnblogs.com/wefjack/p/17184864.html华为IP 报文格式大全-https://support.huawei.com/hedex/hdx.do?docid=EDOC1000105967&id=ZH-CN_CONCEPT_0254009200