网络协议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电信级NATRFC 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/24TEST-NET-1,文档和示例RFC 5735
192.88.99.0/246to4中继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/24TEST-NET-2,文档和示例RFC 5737
203.0.113.0/24TEST-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(跳跃点到跳跃点选项)
1Internet控制消息 (ICMP)
2Internet组管理 (IGMP)
3网关到网关 (GGP)
41P中的IP(封装)
5
6传输控制 (TCP)
7CBT
8外部网关协议 (EGP)
9任何私有内部网关(Cisco在它的IGRP实现中使用) (IGP)
10BBNRCC监视
11网络语音协议
12PUP
13ARGUS
14EMCON
15网络诊断工具
16混乱(Chaos)
17用户数据报文 (UDP)
18复用
19DCN测量子系统
20主机监视
21包无线测量
22XEROXNSIDP
23Trunk-1
24Trunk-2
25leaf-1
261eaf-2
27可靠的数据协议
28Internet可靠交易
291SO传输协议第四类 (TP4)
30大块数据传输协议
31MFE网络服务协议
32MERIT节点之间协议
33序列交换协议
34第三方连接协议
35域之间策略路由协议
36XTP
37数据报文传递协议
38IDPR控制消息传输协议
39TP+ +传输协议
40IL传输协议
411Pv6
42资源命令路由协议
431Pv6的路由报头
441Pv6的片报头
45域之间路由协议
46保留协议
47通用路由封装
48可移动主机路由协议
49BNA
501Pv6封装安全有效负载
511Pv6验证报头
52集成的网络层安全TUBA
53带加密的IP
54NBMA地址解析协议
55IP可移动性
56使用Kryptonet钥匙管理的传输层安全协议
57SKIP
581Pv6的ICMP
591Pv6的无下一个报头
60IPv6的信宿选项
61任何主机内部协议
62CFTP
63任何本地网络
64SATNET和BackroomEXPAK
65Kryptolan
66MIT远程虚拟磁盘协议
67Internet Pluribus包核心
68任何分布式文件系统
69SATNET监视
70VISA协议
71Internet包核心工具
72计算机协议Network Executive
73计算机协议Heart Beat
74Wang Span网络
75包视频协议
76Backroom SATNET监视
77SUN ND PROTOCOL—临时
78WIDEBAND监视
79WIDEBAND EXPAK
80ISO Internet协议
81VMTP
82SECURE—VMTP(安全的VMTP)
83VINES
84TTP
85NSFNET—IGP
86不同网关协议
87TCF
88EIGRP
89OSPF IGP
90Sprite RPC协议
9]Locus地址解析协议
92多播传输协议
93AX.25帧
94IP内部的IP封装协议
95可移动网络互连控制协议
96旗语通讯安全协议
97IP中的以太封装
98封装报头
99任何私有加密方案
100GMTP
101Ipsilon流量管理协议
102PNNI over IP
103协议独立多播
104ARIS
105SCPS
106QNX
107活动网络
108IP有效负载压缩协议
109Sitara网络协议
110Compaq对等协议
111IP中的IPX
112虚拟路由器冗余协议
113PGM可靠传输协议
114任何0跳跃协议
115第二层隧道协议
116D-II数据交换(DDX)
117交互式代理传输协议
118日程计划传输协议
119SpectraLink无线协议
120UTI
121简单消息协议
122SM
123性能透明性协议
124ISIS over IPv4
125FIRE
126Combat无线传输协议
127Combat无线用户数据报文
128SSCOPMCE
129IPLT
130安全包防护
131IP中的私有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协议介绍的主要内容,如果未能解决你的问题,请参考以下文章

IPV4基本知识介绍

网络层协议介绍及概述

IPv4和IPv6的区别

IP协议简介

网络协议IPV6基础知识点集锦

网络层协议介绍