网络协议IPV4协议介绍
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议IPV4协议介绍相关的知识,希望对你有一定的参考价值。
💪本节内容:IPV4协议介绍、IPV4地址格式、IPV4数据格式及C++项目结构体设计
😏【Qt6网络抓包工具项目实战】总导航目录(建议收藏书签~~~)
✌️ part1
😏【Qt6网络抓包工具项目实战】1.1Qt6.2.2环境搭建(免费)
😏【Qt6网络抓包工具项目实战】1.2Qt6项目工程创建(免费)
😏【Qt6网络抓包工具项目实战】1.3NMap、NPacp、WinPacp库介绍(免费)
😏【Qt6网络抓包工具项目实战】1.4Qt6引用Npacp第三方库项目目录设计(免费)
😏【Qt6网络抓包工具项目实战】1.5封装通用线程安全单例模板
😏【Qt6网络抓包工具项目实战】1.6使用Npacp获取网卡信息
😏【Qt6网络抓包工具项目实战】1.7项目测试类设计与开发
😏【Qt6网络抓包工具项目实战】1.8多线程框架设计与开发
😏【Qt6网络抓包工具项目实战】1.9主界面显示抓包的16进制数据功能开发
✌️ part2
😙【Qt6网络抓包工具项目实战】2.1以太网帧结构介绍
😙【Qt6网络抓包工具项目实战】2.2ARP协议介绍(免费)
😙【Qt6网络抓包工具项目实战】2.3IPV4协议介绍(免费)
😙【Qt6网络抓包工具项目实战】2.4ICMP协议介绍
😙【Qt6网络抓包工具项目实战】2.5TCP协议介绍
😙【Qt6网络抓包工具项目实战】2.6UDP协议介绍
😙【Qt6网络抓包工具项目实战】2.7IPV6协议介绍
😙【Qt6网络抓包工具项目实战】2.8MAC帧、ARP、TCP、IPV4、IPV6、UDP、ICMP协议结构体汇总
😙【Qt6网络抓包工具项目实战】2.9网卡数据解析并显示
✌️ part3
😬【Qt6网络抓包工具项目实战】3.1选择网卡适配器界面开发
😬【Qt6网络抓包工具项目实战】3.2抓包过滤器功能开发
😬【Qt6网络抓包工具项目实战】3.3主界面数据包修改为Table显示
😬【Qt6网络抓包工具项目实战】3.4开发点击数据表格生成网络树形结构
😬【Qt6网络抓包工具项目实战】3.5python3 tcp客户端、服务端编写(免费)
😬【Qt6网络抓包工具项目实战】3.6python3 udp客户端、服务端编写(免费)
😬【Qt6网络抓包工具项目实战】3.7 TCP三次握手分析(免费)
😬【Qt6网络抓包工具项目实战】3.8 TCP四次挥手分析(免费)
😬【Qt6网络抓包工具项目实战】3.9 UDP数据分析分(免费)
😬【Qt6网络抓包工具项目实战】3.10 TCP数据分析分(免费)
1.IPV4协议介绍
网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。
2.IPV4地址
IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(2)个地址。不过,一些地址是为特殊用途所保留的,如专用网络(约1800万个地址)和多播地址(约2.7亿个地址),这减少了可在互联网上路由的地址数量。随着地址不断被分配给最终用户,IPv4地址枯竭问题也在随之产生。基于分类网络、无类别域间路由和网络地址转换的地址结构重构显著地减少了地址枯竭的速度。但在2011年2月3日,在最后5个地址块被分配给5个区域互联网注册管理机构之后,IANA的主要地址池已经用尽。
这些限制刺激了仍在开发早期的IPv6的部署,这也是唯一的长期解决方案。
2.1地址格式
IPv4地址可被写作任何表示一个32位整数值的形式,但为了方便人类阅读和分析,它通常被写作点分十进制的形式,即四个字节被分开用十进制写出,中间用点分隔。
例:
192.168.8.101
2.2地址分配
最初,一个IP地址被分成两部分:网上识别码在地址的高位字节中,主机识别码在剩下的部分中。
为了克服这个限制,在随后出现的分类网络中,地址的高位字节被重定义为网络的类(Class)。这个系统定义了五个类别:A、B、C、D和E。A、B和C类有不同的网络类别长度,剩余的部分被用来识别网络内的主机,这就意味着每个网络类别有着不同的给主机编址的能力。D类被用于多播地址,E类被留作将来使用。
-
A类地址
+(1)A类地址网络号第一位固定为0,其它7位可以分配,主机号长度为24位
+(2)网络号分配的数量为2^7 = 128,地址范围为:1.0.0.0—127.255.255.255
+(3)10.0.0.0-10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址,路由器接收到私有地址,不会向Internet转发该分组,私有地址与NAT相关)
(4)127.0.0.0-127.255.255.255是保留地址,用做循环测试用的
(5)0.0.0.0—0.255.255.255也保留用作特殊用途
(6)因此网络号可分配的只有125个,每个网络段的主机号可以分配的只有 2^24-2=16777214个(主机号全0和主机号全1保留) -
B类地址
+(1)B类地址网络号第1,2位固定为10,其它14位可以分配,主机号长度为16位
+(2)地址范围为:128.0.0.0—191.255.255.255
+(3)172.16.0.0—172.31.255.255是私有地址
+(4)169.254.0.0—169.254.255.255是保留地址(如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP)
(5)每个网络段可分配的主机号为2^16 - 2 = 65534(主机号全0和主机号全1保留) -
C类地址
+(1)C类地址网络号前3位固定为110,其它21位可以分配,主机号长度为8位
+(2)C类地址范围:192.0.0.0—223.255.255.255
+(3)192.168.0.0—192.168.255.255是私有地址
+(4)网络号可分配的块数为2^21 = 2097152,没块网络号可分配的主机号数为2^8-2 = 254(主机号全0和主机号全1保留) -
D类地址
D类IP地址不标志网络,前4位固定为1110,地址范围为:224.0.0.0—239.255.255.255,用作特殊用途,如多播地址 -
E类地址
E类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1111。E类地址范围:240.0.0.0—255.255.255.255,用于某些实验和将来使用
2.3特殊用途的地址
CIDR地址块 | 描述 | 参考资料 |
---|---|---|
0.0.0.0/8 | 本网络(仅作为源地址时合法) | RFC 5735 |
10.0.0.0/8 | 专用网络 | [RFC 1918](https://baike.baidu.com/item/RFC 1918) |
100.64.0.0/10 | 电信级NAT | RFC 6598 |
127.0.0.0/8 | 环回 | RFC 5735 |
169.254.0.0/16 | 链路本地 | RFC 3927 |
172.16.0.0/12 | 专用网络 | [RFC 1918](https://baike.baidu.com/item/RFC 1918) |
192.0.0.0/24 | 保留(IANA) | RFC 5735 |
192.0.2.0/24 | TEST-NET-1,文档和示例 | RFC 5735 |
192.88.99.0/24 | 6to4中继 | RFC 3068 |
192.168.0.0/16 | 专用网络 | [RFC 1918](https://baike.baidu.com/item/RFC 1918) |
198.18.0.0/15 | 网络基准测试 | RFC 2544 |
198.51.100.0/24 | TEST-NET-2,文档和示例 | RFC 5737 |
203.0.113.0/24 | TEST-NET-3,文档和示例 | RFC 5737 |
224.0.0.0/4 | 多播(之前的D类网络) | RFC 3171 |
240.0.0.0/4 | 保留(之前的E类网络) | RFC 1700 |
255.255.255.255 | 受限广播 | RFC 919 |
3.IPV4数据格式
- 图1
- 图2
Version(版本)
字段长度为4位,标识了数据包的IP版本号
0100表示IP版本4 0110表示IP版本6 (其他所有版本号仅作为“历史产物”)
IHL(头部长度)
字段长度为4位(单位为4个字节),ip报头的最小长度为20个八位组,最大可以扩展到60个八位组,通过这个字段可以描述32位字长的最大长度
Type of Service(服务类型)
字段长度为8位 用来指定特殊的数据包处理方式。该字段实际上被分为两个字段:优先权和Tos。
Total Length(总长度)
字段长度为16位(单位为一个八位组),其中包括IP报头。接受者用总长度减去IP报头长度,就可以确定数据包数据有效载荷的大小。(用十进制表示最大到65535个)
Identification(标识符)
字段长度为16位,通常与标记字段和分段偏移字段一起用于数据包的分段。 如果数据包原始长度超过数据包所要经过的数据链路的最大传输 单元( MTU),那么必须将数据包分段为更小的数据包。例如,一个大小为 5000 字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳 容纳大小为1500 字节的数据 包。路由器需要在数据成 帧之前将数据包分段成多个数据 包,其中每个数据包长度不得超过1500 字节;然后路由器在每片数据包的标识字段上打上相同的标记,以便接收设备可以识别出属于一个数据包的分段。
IP Flags(标记)
字段长度为3位,第1位没有使用。第二位不分段位(DF),置1之后路由器不能对其分段处理,如果超过MTU值则路由器不能对其转发将其丢弃,并向源点发送错误消息。
Fragment Offset(分片偏移)
字段长度为13位,以 8个八位组为单位,用于指明分段起始点相对于报头起始点的偏移量。由于分段到达时可能错序,所以分段 偏移字段可以使接收者按照正确的顺序重组数据包。请注意,如果一个分段在传输中丢失,那么必 在网络中同一点对整个数据 包重新分段并重新发送。 因此,容易发生故障的数据链路会造成时延不成比例。 另外,如果由于网络拥塞而造成分段丢失, 那么 重传整组分段会进一步加重网络拥塞。
Time To Live(生存时间)
字段长度为8位,以前为时间。现在为跳数,传输时,每台路由器都会将TTL值减一,到0会向源点发送错误信息。(用于防环,trace追踪工具)
Protocol(协议)
字段长度为8位,它给出了主机到主机层或传输层协议 的“ 地址” 或协议号,协议字指定了数据包中信息的类型。当前已分配了 100 多个不同的协议号。
比较有名的 1:ICMP 4:IP 6:TCP 17:UDP 21:ftp 22:ssh 23:telnet 80:http 88:eigrp 89:ospf
Header Checksum(头部校验)
是针对IP报头的纠错字段。校验和不计算被封装的数据,UDP、TCP和ICMP 都有各自的校验和。
Source Address(源地址) Destination Address(目的地址)
字段长度为32位,分别表示发送者数据包源点和目的地的 IP 地址。
IP Option(可选项)
-
松散源路由选择( Loose Source Routing)—— 它给出了一连串路由器接口的IP地址序列。数据包必须沿着IP地址序列传送, 但是允许在相继的两个地址之间跳过多台 路由器。
-
严格源路由选择( Strict Source Routing)—— 它也给出了一系列 路由器接口的IP地址序列。不同于松散源路由选择,数据 包必要严格按照路由转发。如果下一跳不再列表中,那么 将会发生错误。
-
记录路 由( Record Route)—— 当数据包离开时为每台路由器提供空间记录数据包的出站接口地址,以便保存数据包经过的 所有路由器的记录。记录路由选项提供了类似于路由追踪的功能,但是不同点在于这里记录了双向路径 上的出站接口信息。
-
时间戳( Timestamp)—— 每台路由器除了会记录一个时间戳之外,时间戳选项十分类似于记录路由选项, 这样数据包不仅可以知道自己到过哪里,而且还可以记录到达的时间。
4.IPV4中Protocol所有类型
数值 | 值描述 |
---|---|
0 | 保留字段,用于IPv6(跳跃点到跳跃点选项) |
1 | Internet控制消息 (ICMP) |
2 | Internet组管理 (IGMP) |
3 | 网关到网关 (GGP) |
4 | 1P中的IP(封装) |
5 | 流 |
6 | 传输控制 (TCP) |
7 | CBT |
8 | 外部网关协议 (EGP) |
9 | 任何私有内部网关(Cisco在它的IGRP实现中使用) (IGP) |
10 | BBNRCC监视 |
11 | 网络语音协议 |
12 | PUP |
13 | ARGUS |
14 | EMCON |
15 | 网络诊断工具 |
16 | 混乱(Chaos) |
17 | 用户数据报文 (UDP) |
18 | 复用 |
19 | DCN测量子系统 |
20 | 主机监视 |
21 | 包无线测量 |
22 | XEROXNSIDP |
23 | Trunk-1 |
24 | Trunk-2 |
25 | leaf-1 |
26 | 1eaf-2 |
27 | 可靠的数据协议 |
28 | Internet可靠交易 |
29 | 1SO传输协议第四类 (TP4) |
30 | 大块数据传输协议 |
31 | MFE网络服务协议 |
32 | MERIT节点之间协议 |
33 | 序列交换协议 |
34 | 第三方连接协议 |
35 | 域之间策略路由协议 |
36 | XTP |
37 | 数据报文传递协议 |
38 | IDPR控制消息传输协议 |
39 | TP+ +传输协议 |
40 | IL传输协议 |
41 | 1Pv6 |
42 | 资源命令路由协议 |
43 | 1Pv6的路由报头 |
44 | 1Pv6的片报头 |
45 | 域之间路由协议 |
46 | 保留协议 |
47 | 通用路由封装 |
48 | 可移动主机路由协议 |
49 | BNA |
50 | 1Pv6封装安全有效负载 |
51 | 1Pv6验证报头 |
52 | 集成的网络层安全TUBA |
53 | 带加密的IP |
54 | NBMA地址解析协议 |
55 | IP可移动性 |
56 | 使用Kryptonet钥匙管理的传输层安全协议 |
57 | SKIP |
58 | 1Pv6的ICMP |
59 | 1Pv6的无下一个报头 |
60 | IPv6的信宿选项 |
61 | 任何主机内部协议 |
62 | CFTP |
63 | 任何本地网络 |
64 | SATNET和BackroomEXPAK |
65 | Kryptolan |
66 | MIT远程虚拟磁盘协议 |
67 | Internet Pluribus包核心 |
68 | 任何分布式文件系统 |
69 | SATNET监视 |
70 | VISA协议 |
71 | Internet包核心工具 |
72 | 计算机协议Network Executive |
73 | 计算机协议Heart Beat |
74 | Wang Span网络 |
75 | 包视频协议 |
76 | Backroom SATNET监视 |
77 | SUN ND PROTOCOL—临时 |
78 | WIDEBAND监视 |
79 | WIDEBAND EXPAK |
80 | ISO Internet协议 |
81 | VMTP |
82 | SECURE—VMTP(安全的VMTP) |
83 | VINES |
84 | TTP |
85 | NSFNET—IGP |
86 | 不同网关协议 |
87 | TCF |
88 | EIGRP |
89 | OSPF IGP |
90 | Sprite RPC协议 |
9] | Locus地址解析协议 |
92 | 多播传输协议 |
93 | AX.25帧 |
94 | IP内部的IP封装协议 |
95 | 可移动网络互连控制协议 |
96 | 旗语通讯安全协议 |
97 | IP中的以太封装 |
98 | 封装报头 |
99 | 任何私有加密方案 |
100 | GMTP |
101 | Ipsilon流量管理协议 |
102 | PNNI over IP |
103 | 协议独立多播 |
104 | ARIS |
105 | SCPS |
106 | QNX |
107 | 活动网络 |
108 | IP有效负载压缩协议 |
109 | Sitara网络协议 |
110 | Compaq对等协议 |
111 | IP中的IPX |
112 | 虚拟路由器冗余协议 |
113 | PGM可靠传输协议 |
114 | 任何0跳跃协议 |
115 | 第二层隧道协议 |
116 | D-II数据交换(DDX) |
117 | 交互式代理传输协议 |
118 | 日程计划传输协议 |
119 | SpectraLink无线协议 |
120 | UTI |
121 | 简单消息协议 |
122 | SM |
123 | 性能透明性协议 |
124 | ISIS over IPv4 |
125 | FIRE |
126 | Combat无线传输协议 |
127 | Combat无线用户数据报文 |
128 | SSCOPMCE |
129 | IPLT |
130 | 安全包防护 |
131 | IP中的私有IP封装 |
132 | 流控制传输协议 |
133~254 | 未分配 |
255 | 保留 |
👀👀👀👀👀👀👀下面是重点,敲黑板
Protocol字段值 | 重点程度 | 含义 |
---|---|---|
1 | ⭐️⭐️⭐️⭐️⭐️ | ICMP |
6 | ⭐️⭐️⭐️⭐️⭐️ | TCP |
17 | ⭐️⭐️⭐️⭐️⭐️ | UDP |
5.IPV4C++结构体定义
struct ip_header
#if defined(LITTLE_ENDIAN)
u_char ihl:4; //长度
u_char version:4; //版本
#elif defined(BIG_ENDIAN)
u_char version:4;
u_char ihl:4;
#endif
u_char tos; //TOS 服务类型
u_short tlen; //包总长 u_short占两个字节
u_short id; //标识
u_short frag_off; //片位移
u_char ttl; //生存时间
u_char proto; //协议
u_short check; //校验和
u_char saddr[4]; //源地址
u_char daddr[4]; //目的地址
u_int op_pad; //选项等
;
以上是关于网络协议IPV4协议介绍的主要内容,如果未能解决你的问题,请参考以下文章