前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你懂什么叫IPv4么?

你懂什么叫IPv4么?

作者头像
葆宁
发布于 2019-04-28 12:34:26
发布于 2019-04-28 12:34:26
1.5K00
代码可运行
举报
文章被收录于专栏:FREE SOLOFREE SOLO
运行总次数:0
代码可运行

1.1 IPV4的生命

近年来Internet呈指数级的飞速发展,导致IPv4地址空间几近耗竭。IP地址变得越来越珍稀,迫使许多企业不得不使用NAT将多个内部地址映射成一个公共IP地址。地址转换技术虽然在一定程度上缓解了公共IP地址匮乏的压力,但它不支持某些网络层安全协议以及难免在地址映射中出现种种错误,这又造成了一些新的问题。而且,靠NAT并不可能从根本上解决IP地址匮乏问题,随着连网设备的急剧增加,IPv4公共地址总有一天会完全耗尽。

IP层安全需求的增长。在Internet这样的公共媒体上进行专用数据通信一般都要求加密服务,以此保证数据在传输过程中不会泄露或遭窃取。虽然目前有IPSec协议可以提供对IPv4数据包的安全保护,但由于该协议只是个可选标准,企业使用各自私有安全解决方案的情况还是相当普遍。

更好的实时QoS支持的需求。IPv4的QOS标准,在实时传输支持上依赖于IPv4的服务类型字段(TOS)和使用UDPTCP端口进行身份认证。但IPv4的TOS字段功能有限,而同时可能造成实时传输超时的因素又太多。此外,如果IPv4数据包加密的话,就无法使用TCP/UDP端口进行身份认证。

为了解决上述问题,Internet工程任务组(IETF)开发了IPv6。这一新版本,也曾被称为下一代IP,综合了多个对IPv4进行升级的提案。在设计上,IPv6力图避免增加太多的新特性,从而尽可能地减少对现有的高层和低层协议的冲击。

1.2 IPV6与IPV4

IPv4从出生到如今几乎没什么改变的生存了下来。1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发 。

IPv6与IPv4相比有以下特点和优点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(1)更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1
 个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。 
⑵更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 
(3)增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。 
(4)加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 
(5)更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,这极大地增强了网络安全。

1.3 IPV4包首部格式

IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展)。

IP包头字段说明:版本:4位,指定IP协议的版本号。包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5(5x4=20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。服务类型:定义IP协议包的处理方法,它包含如下子字段::过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~7(网络控制)::延迟字段:1位,取值:0(正常)、1(期待低的延迟)::流量字段:1位,取值:0(正常)、1(期待高的流量)::可靠性字段:1位,取值:0(正常)、1(期待高的可靠性)::成本字段:1位,取值:0(正常)、1(期待最小成本)::未使用:1位长度:IP包的总长标识:唯一地标识主机所发送的一个数据段,通常每发送一个数据段后加一。但IP包被分割后,分割得到的IP包拥有相同的标识标志:是一个3位的控制字段,包含:::保留位:1位::不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段)::更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)段偏移量:当数据段被分割时,它和更多段位(MF,Morefragments)进行连接,帮助目的主机将分段的包组合。TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。校验和:16位,是IPv4数据报包头的校验和。

1.4 IPV4路由

Ipv4并不区分作为网络终端的主机(host) 和网络中的中间设备如路由器中间的差别。每台电脑可以即做主机又做路由器。路由器用来联结不同的网络。所有用路由器联系起来的这些网络的总和就是互联网。 IPv4技术即适用于局域网(LAN) 也适用于广域网。一个IP包从发送方出发,到接送方收到,往往要穿过通过路由器连接的许许多多不同的网络。每个路由器都拥有如何传递IP包的知识,这些知识记录在路由表中。路由表中记录了到不同网络的路径,在这儿每个网络都被看成一个目标网络。路由表中记录由路由协议管理,可能是静态的记录比如由网络管理员写入的,也有可能是由路由协议动态的获取的。有的路由协议可以直接在IP协议上运行。 常用的路由协议有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 - 路由信息协议(Routing Information Protocol, RIP),   
- 开放式最短路径优先协议,Open Shortest Path Fast, OSPF) ,  
 - 中介系统对中介系统协议(Intermediate System – Intermediate System, IS-IS) ,   
- 边界网关协议(Border Gateway Protocol, BGP) .
  • 在网络负荷很重或者出错的情况下,路由器可以将收到的IP包丢弃。在网络负荷重的时候,同样一个IP包有可能由路由器决定走了不同的路径。路由器对每一个IP包都是单独选择路由的。这也提高了IP通信的可靠性。但单是IP层上的包传输,并不能保证完全可靠。IP包可能会丢失; 可能会有重复的IP包被接受方收到; IP包可能会走不同的路径,不能保证先发的先到; 接受方收到的可能是被分割了的IP包。在IP之上再运行TCP协议则解决这些缺点提供了一个可靠的数据通路。

一份IP报文包含一个首部和一份数据

4.1 首部

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IPv4报文的首部包含14个字段,其中13个是必须的,第14个是可选的(在表中用红色标出),并贴切地命名为:“选项”。首部中的字段均以大端序包装,在以下的图表和讨论中,最高有效位被标记为0,因此例如版本字段实际上可在第一个字节的前四高有效位中被找到(详见图003-点击可看大图)。 

版本 IP报文首部的第一个字段是4位版本字段。对IPv4来说,这个字段的值是4。

首部长度(IHL) 第二个字段是4位首部长度,说明首部有多少32位字长。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(RFC 791),最大值是15。

DiffServ(DSCP) 最初被定义为服务类型字段,但被RFC 2474重定义为DiffServ。新的需要实时数据流的技术会应用这个字段,一个例子是VoIP。

显式拥塞通告(ECN) 在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。

全长 这个16位字段定义了报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据),最大值是65,535。所有主机都必须支持最小576字节的报文,但大多数现代主机支持更大的报文。有时候子网会限制报文的大小,这时报文就必须被分片。

标识符 这个字段主要被用来唯一地标识一个报文的所有分片。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。

标志 这个3位字段用于控制和识别分片,它们是: 位0:保留,必须为0; 位1:禁止分片(DF); 位2:更多分片(MF)。 如果DF标志被设置但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。 当一个报文被分片,除了最后一片外的所有分片都设置MF标志。不被分片的报文不设置MF标志:它是它自己的最后一片。

分片偏移 这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8位块作单位。 存活时间(TTL) 这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减一,当此字段等于0时,报文不再向下一跳传送并被丢弃。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。

协议 这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表(最初由RFC 790定义)。

首部检验和 这个16位检验和字段用于对首部查错。在每一跳,计算出的首部检验和必须与此字段进行比对,如果不一致,此报文被丢弃。值得注意的是,数据区的错误留待上层协议处理——用户数据报协议和传输控制协议都有检验和字段。 因为生存时间字段在每一跳都会发生变化,意味着检验和必须被重新计算,RFC 1071这样定义计算检验和的方法: The checksum field is the 16-bit one’s complement of the one’s complement sum of all 16-bit words in the header. For purposes of computing the checksum, the value of the checksum field is zero.

源地址 一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。 例如,10.9.8.7是00001010000010010000100000000111。 这个地址是报文的发送端。但请注意,因为NAT的存在,这个地址并不总是报文的真实发送端,因此发往此地址的报文会被送往NAT设备,并由它被翻译为真实的地址。

目的地址 与源地址格式相同,但指出报文的接收端。

选项 附加的首部字段可能跟在目的地址之后,但这并不被经常使用。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。下表列出了可能的选项(详见图004):

①注:如果首部长度大于5,那么选项字段必然存在并必须被考虑。 ②注:备份、类和数字经常被一并称呼为“类型”。 宽松的源站选路(LSRR)和严格的源站选路(SSRR)选项不被推荐使用,因其可能带来安全问题。许多路由器会拒绝带有这些选项的报文。

4.2 数据

数据字段不是首部的一部分,因此并不被包含在检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议。

一些常见协议的协议字段值被列在下面:

分片和组装

互联网协议是整个互联网架构的基础,使得不同的网络间交换流量成为可能。其设计容纳了物理条件不同的网络:其独立于其下的链路层传输技术。不同的链路层经常不仅在传输速度上有差异,还在结构和帧尺寸上有不同,这一整个被MTU参数描述。为了实现IP横越网络的角色,有必要实现一种自动调整传输单元大小的机制来适应其下的技术限制。这带出了IP报文的分片。在IPv4中,这个功能被放置在网络层,并由IPv4路由器完成。 与此不同的是,下一代互联网协议IPv6不要求路由器执行分片操作,而是将检测路径最大传输单元大小的任务交给了主机。

分片

当一个设备收到一个IP报文时,它阅读其目的地址并决定要在哪个设备上发送它。设备有与其关联的MTU来决定其载荷的最大长度,如报文长度比MTU大,那么设备必须进行分片。 设备将整个报文数据分成数片,每一片的长度都小于等于MTU减去IP首部长度。接下来每一片均被放到独立的IP报文中,并进行如下修改: 1、总长字段被修改为此分片的长度; 2、更多分片(MF)标志被设置,除了最后一片; 3、分片偏移量字段被调整为合适的值; 4、首部检验和被重新计算。 例如,对于一个长20字节的首部和一个MTU为1,500的以太网,分片偏移量将会是:0、(1480/8)=185、(2960/8)=370、(4440/8)=555、(5920/8)=740、等等。 如果报文经过路径的MTU减小了,那么分片可能会被再次分片。

组装

当一个接收者发现IP报文的下列项目之一为真时: 1、更多分片标志被设置; 2、分片偏移量字段不为0。 它便知道这个报文已被分片,并随即将数据、标识符字段、分片偏移量和更多分片标志一起储存起来。

当接受者收到了更多分片标志未被设置的分片时,它便知道原始数据载荷的总长。一旦它收齐了所有的分片,它便可以将所有片按照正确的顺序(通过分片偏移量)组装起来,并交给上层协议栈。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
20张图说清楚 IP 协议
轻解网络系列又来了,今天咱们说说 IP 协议,这可是网络协议中最最核心的一个协议了,还记得我们刚刚知道什么是IP地址、怎么给电脑修改 IP 的时候吗?今天我们就来探究一下 IP 协议。
古时的风筝
2023/03/24
9910
20张图说清楚 IP 协议
IPv4协议
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/86914470
zy010101
2019/05/25
1.4K0
图解 IP 基础知识! 「入门知识」
路由器对分组进行转发后,就会把数据包传到网络上,数据包最终是要传递到客户端或者服务器上的,那么数据包怎么知道要发往哪里呢?起到关键作用的就是 IP 协议。
睡魔的谎言
2020/12/22
1.2K0
ipv4和ipv6对比(IPV4)
IP相当于OSI参考模型中的第三层——网络层。而网络层的作用是实现终端节点之间的通信。这种终端节点之间的通信也叫‘点到点’通信。IP地址用于连接在网络中的所有主机中识别出进行通信的目标地址。谷在tcp/ip通信的所有主机中必须设置IP地址。
全栈程序员站长
2022/07/31
1.7K0
ipv4和ipv6对比(IPV4)
我画了 40 张图就是为了让你搞懂计算机网络层
前面我们学习了运输层如何为客户端和服务器输送数据的,提供进程端到端的通信。那么下面我们将学习网络层实际上是怎样实现主机到主机的通信服务的。几乎每个端系统都有网络层这一部分。所以,网络层必然是很复杂的。下面我将花费大量篇幅来介绍一下计算机网络层的知识。
网络工程师笔记
2021/05/17
7410
我画了 40 张图就是为了让你搞懂计算机网络层
IP协议 头部格式
Version(版本号):IP 协议版本号。目前只有两个版本:IPv4 和 IPv6
java404
2020/04/09
5.8K0
IPv4格式、首部各字段意义及地址分类简单理解
版本:占4位。指IP协议是IPv4还是IPv6,通信双方的版本必须一致。 首部长度:占4位。以4B为单位,最大值为60B。默认情况下首部长度看成20B,此时不使用任何选项(即可选字段)。 总长度:占16位。指首部和数据之和的长度,以1B为单位,因此数据报最大长度为216−1 2^{16}-12  16  −1=65535B。以太网的最大传送单元(MTU)为1500B,因此当一个IP数据包封装成帧时,数据包总长度一定不能超过数据链路层的MTU值。 标识:占16位。它是一个计数器,每产生一个数据报就加1,但它并不是“序号”(IP是无连接服务)。当一个数据报长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号以便能重装成原来的数据报。重装数据报是在目的端主机完成的。 标志:占3位。目前只有前两位有效,即MF和DF。MF=1表示后面还有分片;MF=0表示这是最后一个分片。DF=0允许分片;DF=1不允许分片。 片偏移:占13位。指明了每个分片相对于原始报文开头的偏移量,以8B为单位,即每个分片的长度必须是8B的整数倍。 生存时间(TTL):占8位。报文经过的每个路由器都将此字段减1,当此字段等于0时,丢弃该报文,确保报文不会永远在网络中循环。 协议:占8位。指出携带的数据应交给那个传输层协议,值为6表示TCP;值为17表示UDP。 首部检验和:占16位。只检验数据报首部,不检验数据部分。 源地址:占32位。表示发送方的IP地址。 目的地址:占32位。表示接收方的IP地址。 相关总结
zhangjiqun
2024/12/16
6440
IPv4格式、首部各字段意义及地址分类简单理解
【计算机网络】网络层 : 总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★
① 路由与转发 : 路由选择 与 分组转发 ; 根据路由选择算法 , 选择最佳路径 , 将分组转发出去 ;
韩曙亮
2023/03/28
2.1K0
【计算机网络】网络层 :  总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★
Wireshark过滤规则笔记,附软件
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
SingYi
2022/07/14
9840
Wireshark过滤规则笔记,附软件
IPv4部分协议信息汇总
ARP(Address Resolution Protocol,RFC 826)是根据IP地址获取物理地址的一个TCP/IP协议。主机通过将ARP请求广播到网络上的所有主机并接收返回消息来确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存中,下次请求时直接查询ARP缓存。
十二惊惶
2024/02/28
2610
IPv4部分协议信息汇总
IP协议详解
当IP数据报的长度超过帧的MtU时,它将被分片传输。分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。
玖柒的小窝
2021/12/15
9790
IP协议详解
tcp/ip系列--IP协议
上一篇(tcp/ip系列--数据链路):https://blog.csdn.net/qq_19968255/article/details/83832035
Dlimeng
2023/06/29
2300
tcp/ip系列--IP协议
tcpdump命令高级过滤方式
​ 长度4比特。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(84),因此,一个IP包头的长度最长为“1111”,即154=60个字节。IP包头最小长度为20字节。
吴易娃
2024/01/12
8450
IPv4和IPv6
IP地址(IPV4)由32位正整数来表示,IP地址在计算机中是以二进制的方式处理,但为了方便记忆采用点十进制的标记方式(8位为一组,分四组,每一组都转换为十进制)如下:
shysh95
2021/12/27
1.1K0
IPv4和IPv6
漫话:全球IPv4地址正式耗尽?到底什么是IPv4和IPv6?
导读:近日欧洲网络协调中心(RIPE NCC)宣布,全球所有 43 亿个 IPv4 地址已在11 月 25 日分配完毕,完全耗尽。那么什么是IPv4,耗尽了会怎样?
IT阅读排行榜
2019/12/10
2.2K0
漫话:全球IPv4地址正式耗尽?到底什么是IPv4和IPv6?
网络层协议:IP协议详解
IP协议属于网络层协议,所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种不可靠,无连接的数据包交付服务。依赖其他层的协议进行差错控制。 不可靠: IP数据报不保证能成功的到达目的地,如果出现错误则选择丢弃该数据,然后发送ICMP消息报给信源端 无连接: IP不提供任何后续数据报的状态信息,每个数据报处理都是独立的。如果一个信源发送了连续的两个数据报,每个数据报选择独立的路由,两个数据可能不同时到达。IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。
用户7557625
2020/07/15
2.6K0
网络层协议:IP协议详解
硬核科普:从IPv4到IPv6
IPv4又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。IPv4是互联网的核心,也是使用最广泛的网际协议版本。 IPv4使用32位地址,2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商。 IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展,IPv6的地址长度为128位,是IPv4地址长度的4倍。IPv6的使用,能够解决网络地址资源数量的问题。此外,IP
SDNLAB
2022/05/31
1.4K0
硬核科普:从IPv4到IPv6
TCP/IP 之IP数据报ip分片ip分片过程
我们将在这篇文章详细介绍ip数据报的格式 首先,ip数据报分为两部分,首部和数据
desperate633
2018/08/22
5.7K0
TCP/IP 之IP数据报ip分片ip分片过程
【Linux网络编程】IP协议格式,解包步骤
对于IP,每次先去看前二十个字节。也就是说这二十字节里面的东西是固定的,每个IP报头都是如此,不会改变。
用户11396661
2025/02/22
2080
【Linux网络编程】IP协议格式,解包步骤
【Linux网络#13】:网络层(IP 协议 & 网络通信 & 全球网络 & 路由转发)
🔥个人专栏:Linux—登神长阶 最后的最后,这里送大家一句话,希望大家于2025年一起奋斗,诸君共勉 💫
IsLand1314
2025/06/02
1200
【Linux网络#13】:网络层(IP 协议 & 网络通信 & 全球网络 & 路由转发)
相关推荐
20张图说清楚 IP 协议
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档