【网络协议详解】——IPv4(学习笔记)

🕒 1. IPv4地址概述

IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。

  • 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。
  • 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕。
  • 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。

lPv4地址的编址方法经历了如下三个历史阶段:分类编址(1981年)、划分子网(1985年)、无分类编址(1993年)

32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。

在这里插入图片描述

进制转换

  • 十进制→二进制:除2取余法、观察法
  • 二进制↔八进制:每3个二进制位对应一个八进制位
  • 二进制↔十六进制:每4个二进制位对应一个十六进制位

🕒 2. 分类编址

在这里插入图片描述

  • A类、B类和C类地址都是单播地址,只有单播地址可分配给网络中的主机或路由器的各接口
  • 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
  • 主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
网络类型第一个可指派的网络号最后一个可指派的网络号不能指派的网络号占总地址空间IP地址范围网络数量及主机数量
A类地址11260和1271/21.0.0.1~126.255.255.254126(28-1 -2)个,每个网络能容纳16,777,214(224 -2)个主机
B类地址128.0191.2551/4128.0.0.1~191.255.255.25416384(216-2 )个,每个网络能容纳65534(216 -2)个主机
C类地址192.0.0223.255.2551/8192.0.0.1~223.255.255.2542097152(224-3 )个,每个网络能容纳254(28 -2)个主机
D类地址多播地址1/16224.0.0.1~239.255.255.254
E类地址保留为今后使用1/16240.0.0.1~255.255.255.254
  • A类地址网络号第1位固定为0,网络号后面部分不能全0(保留不指派),也不能全1(作为本地环回测试地址),其中最小的本地环回测试地址为127.0.0.1,最大的本地环回测试地址为127.255.255.254。所以网络号范围是1~126
  • B类地址网络号前2位固定为10,网络号后面部分可以全取0(即128.0)或1(即191.255),所以网络号范围是128.0~191.255
  • C类地址网络号前3位固定为110,网络号后面部分可以全取0(即192.0.0)或1(即223.255.255),所以网络号范围是192.0.0~223.255.255
  • D类地址为多播地址,IP地址为224.0.0.0~239.255.255.255

注:

  • 地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0;
  • 以127开头且后面三个字节非“全0”或“全1”的IP地址是一类特殊的IPv4地址,既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址127.0.0.1
  • 地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。

一般不使用的特殊IP地址

网络号主机号IP地址作为源地址作为目的地址表示的意思
000.0.0.0可以不可以在本网络上的本主机(例如,DHCP协议)
0host-id0.host-id可以不可以在本网络上的某台主机host-id
全1全1255.255.255.255不可以可以只在本网络上进行广播(各路由器均不转发)
net-id全1A类:net-id.255.255.255;
B类:net-id.255.255;
C类:net-id.255
不可以可以对网络net-id上的所有主机进行广播
127非全0或全1的任何数127.0.0.1~127.255.255.254可以可以用于本地软件环回测试

【练习】请给出下图各网络的IPv4地址分配方案,要求尽量节约IP地址。
在这里插入图片描述

解析:1. 找出图中有哪些网络;2. 根据各网络中主机和路由器的接口总数量给各网络分配相应类别的网络号。3.依据所确定的网络号类别,为每个网络挑选一个网络号。

在这里插入图片描述

🕒 3. 划分子网

🕘 3.1 概述

为什么需要划分子网?

比如一个单位有300台主机,如果申请C类网络地址,只有254个,不够使用,此时需要申请一个B类网络地址,很容易得知,分配出去300个IP地址后,申请得到的B类网络还剩下很多IP地址。

当单位扩大规模,需要再添加两个子网的时,又要为这两个子网分别申请B类地址,这会花费一些不必要的支出,实际上子网1申请到的B类地址还有很多没用到,我们希望能够将这些剩余地址应用到其他子网中(节约地址),具体实现上可以从主机号部分借用一部分比特作为子网号。

🕘 3.2 如何实现

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

  • 子网掩码使用连续的比特1来对应网络号和子网号(子网号来自原先的一部分主机号);
  • 子网掩码使用连续的比特0来对应主机号
  • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算(即掩码是1的部分)就可得到IPv4地址所在子网的网络地址

【习题】已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。

解析:根据所给网络地址可知其为C类网络地址,网络号占3字节,主机号占1字节;根据所给子网掩码可知,从1字节主机号中借用1比特作为子网号。
在这里插入图片描述
划分出的子网数量:21 = 2
每个子网可分配的地址数量:2(8-1) – 2 = 126 (减2是去掉主机号为全0的网络地址和全1的广播地址)

在这里插入图片描述
【练习】已知某个网络的地址为145.13.0.0,使用子网掩码255.255.192.0对其进行子网划分,请给出划分细节。

解析:根据所给网络地址可知其为B类网络地址,网络号和主机号各占2字节;根据所给子网掩码可知,从2字节主机号中借用2比特作为子网号。

划分出的子网数量:22 = 4
每个子网可分配的地址数量:2(16-2) – 2

在这里插入图片描述

【2012年题39】某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,如该主机向其所在子网发送广播分组,则目的地址可以是()
A.180.80.76.0
B.180.80.76.255
C.180.80.
D.180.80.79.255

解析:由题目可知这是一个B类网络地址,将子网掩码的主机号部分转换为16个二进制比特,即1111 1100.0000 0000,其中有6个连续的比特1表示从主机号中借用6个比特作为子网号。将IP地址的主机号部分转换为二进制形式,即0100 1101.0011 0111,然后将子网掩码中连续6个比特1所对应的主机号部分作为子网号。
在这里插入图片描述
因此本题选D。

默认的子网掩码:是指在未划分子网的情况下使用的子网掩码。

在这里插入图片描述

🕘 3.3 无分类编址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。

为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。

1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC 1517~1519和1520。

  • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念

  • CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

  • CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量
    在这里插入图片描述

  • CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

  • 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节。

    • 地址块的最小地址
    • 地址块的最大地址
    • 地址块中的地址数量
    • 地址块聚合某类网络(A类、B类或C类)的数量
    • 地址掩码(也可继续称为子网掩码)

例1:请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。
解析:
在这里插入图片描述

使用无分类编址方法,可以根据客户的需要分配适当大小的CIDR地址块,因此可以更加有效地分配IPv4的地址空间。

在这里插入图片描述
在这里插入图片描述

使用无分类编址方法的另一个好处是路由聚合(也称为构造超网)。

路由聚合(构造超网)
【举例】

在这里插入图片描述

  • 网络前缀越长,地址块越小,路由越具体
  • 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

【2011年题38】在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是( )
A.0
B.1
C.2
D.4

解析:
在这里插入图片描述
因此选C。

【2018年题38】某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21和35.230.56.0/21,将该4条路由聚合后的目的网络地址为()
A.35.230.0.0/19
B.35.230.0.0/20
C.35.230.32.0/19
D.35.230.32.0/20

解析:路由聚合的方法:找共同前缀

在这里插入图片描述

🕘 3.4 应用规划

IPv4地址的应用规划是指将给定的IPv4地址块(或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机和路由器的接口分配IPv4地址。

🕤 3.4.1 定长的子网掩码FLSM(Fixed Length Subnet Mask)

  • 使用同一个子网掩码来划分子网。
  • 子网划分方式不灵活:只能划分出2n个子网(n是从主机号部分借用的用来作为子网号的比特数量)
  • 每个子网所分配的IP地址数量相同,造成lP地址的浪费。

【举例】假设申请到的C类网络为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。

在这里插入图片描述

应用需求:将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求。即网络1需要IP地址数量为9,网络2需要IP地址数量为28,网络3需要IP地址数量为15,网络4需要IP地址数量为13,网络5需要IP地址数量为4。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🕤 3.4.2 变长的子网掩码VLSM(Variable Length Subnet Mask)

  • 使用不同的子网掩码来划分子网。
  • 子网划分方式灵活:可以按需分配
  • 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费。

【举例】假设申请到的地址块为218.75.230.0/24,请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。

在这里插入图片描述

应用需求:从地址块218.75.230.0/24中取出5个地址块(1个“/27”地址块,3个“/28”地址块,1个“/30"地址块),按需分配给上图所示的5个网络。

在218.75.230.0/24地址块中给上图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。

在这里插入图片描述

如果从小的开始分配:
在这里插入图片描述

🕒 4. IPv4数据报的首部格式

  • IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础。
  • 在TCP/IP标准中,各种数据格式常常以32比特(即4字节)为单位来描述。
  • 固定部分是指每个IPv4数据报都必须要包含的部分
  • 某些IPv4数据报的首部,除了包含20字节的固定部分,还包含一些可选的字段来增加IPv4数据报的功能。
  • IPv4数据报首部中的各字段或某些字段的组合,用来表达IPv4协议的相关功能。

在这里插入图片描述

  • 版本
    • 4比特,表示IP协议版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本为号为4IPv4
  • 首部长度
    • 4比特,表示IP数据报首部长度。该字段取值以4字节为单位
    • 最小十进制取值为5,表示IP数据报首部只有20字节(4字节单位,所以取值5对应20字节)固定部分
    • 最大十进制取值为15,表示IP数据报首部包含20字节固定部分 + 最大40字节可变部分
  • 可选字段
    • 长度从140个字节不等。用来支持排错、测量及安全等措施
    • 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
  • 填充字段
    • 确保首部长度为4字节长度的整数倍,使用全0进行填充
  • 区分服务
    • 8比特,利用该字段的不同数值可提供不同等级的服务质量,只有在使用区分服务时,该字段才起作用。一般情况下不使用该字段
  • 总长度
    • 16比特,表示IP数据报的总长度(首部+数据载荷),最大取值为十进制65535以字节为单位
  • 标识
    • 16比特,属于同一个数据报的各分片数据报应该具有相同的标识(可理解为ID)
    • IP软件维持一个计数器,每产生一个数据报,计数器值+1,并将此值赋给标识字段
  • 标志
    • 3比特,各比特含义如下
      • DF位:1表示不允许分片,0表示允许分片
      • MF位:1表示"后面还有分片",0表示"这是最后一个分片"
      • 保留位:必须为0
  • 片偏移(必须是8的整数倍)
    • 13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少单位
    • 片偏移以8个字节为单位

以上三个字段共同用于IP数据报分片:

在这里插入图片描述

【举例】某个IPv4数据报总长度为3820字节,采用20字节固定首部,根据数据链路层要求,需要将该IPv4数据报分片为长度不超过1420字节的数据报片。

在这里插入图片描述

总长度标识MFDF片偏移
原始数据报3800+2012345000 / 8 = 0
分片1的数据报1400+2012345100 / 8 = 0
分片2的数据报1400+2012345101400 / 8 = 175
分片3的数据报1000+2012345002800 / 8 = 350
  • 生存时间TTL
    • 8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段值减去IP数据报在本路由器上耗费的时间,若不为0(说明路由器消耗时间后还活着)就转发,否则丢弃
    • 现在以"跳数"为单位,路由器转发IP数据报时,将IP数据报首部中的该字段值减1,若不为0就转发,否则丢弃(防止兜圈)
  • 协议
    • 8比特,指明IPv4数据报的数据部分是何种协议数据单元PDU
    • 常用的一些协议和相应的协议字段值如下:
       协议名称   ICMP   IGMP   TCP   UDP   IPv6   OSPF   协议字段值  1 2 6 17 41 89 \begin{array}{|c|c|c|c|c|c|c|} \hline \text { 协议名称 } & \text { ICMP } & \text { IGMP } & \text { TCP } & \text { UDP } & \text { IPv6 } & \text { OSPF } \\ \hline \text { 协议字段值 } & 1 & 2 & 6 & 17 & 41 & 89 \\ \hline \end{array}  协议名称  协议字段值  ICMP 1 IGMP 2 TCP 6 UDP 17 IPv6 41 OSPF 89
  • 首部检验和
    • 16比特,用来检测首部在传输过程中是否出现差错,比CRC检验码简单,称为因特网检验和
    • IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化
    • 由于IP层本身不提供可靠传输服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报
  • 源IP地址和目的IP地址
    • 各占32比特,用来填写发送该IP数据报的源主机IP地址和接收该IP数据报的目的主机

【2018年题47】某公司网络下图所示。IP地址空间192.168.1.0/24被均分给销售部和技术部两个子网,并已分别为部分主机和路由器接口分配了IP地址,销售部子网的MTU=1500B,技术部子网的MTU=800 B.
(2)假设主机192.168.1.1向主机192.168.1.208发送一个总长度为1500B的IP分组,IP分组的头部长度为20B,路由器在通过接口F1转发该IP分组时进行了分片。若分片时尽可能分为最大片,则一个最大IP分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?

在这里插入图片描述

解析:

在这里插入图片描述
具体方法:向下取整

⌊ ( 780 ÷ 8 ) ⌋ × 8 = 97 × 8 = 776 \lfloor (780 \div 8) \rfloor \times 8 = 97 \times 8 = 776 ⌊(780÷8)⌋×8=97×8=776

在这里插入图片描述
在这里插入图片描述
从图中可知,主机的默认网关就是路由器R,主机会将Web请求发送给默认网关,由默认网关将Web请求转发到因特网。
因此,以太网帧头中的目的MAC地址字段,封装的就是默认网关的MAC地址。具体为00-21-27-21-51-ee

IP分组经过路由器R时,生存时间字段被减1;首部检验和会被重新计算;若IP分组总长度大于MTU,则需要进行分片。

此时总长度字段、标志字段、片偏移字段都需要修改。

🕒 5. 网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP

  • 主机或路由器使用ICMP来发送差错报告报文询问报文
  • ICMP报文被封装在IP数据报中发送
    在这里插入图片描述

🕘 5.1 差错报告报文类型

ICMP差错报告报文共有以下五种:

🕤 5.1.1 终点不可达

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络位置、目的主机未知等13种错误

在这里插入图片描述

🕤 5.1.2 源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢
在这里插入图片描述

🕤 5.1.3 时间超过

当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文

当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
在这里插入图片描述

🕤 5.1.4 参数问题

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文
在这里插入图片描述

🕤 5.1.5 改变路由(重定向)

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

如主机1的默认路由是R1,信息经过R1时,R1发现最佳路由不是自己,而是R2,所以通过ICMP告知主机1
在这里插入图片描述

🕘 5.2 询问报文类型

🕤 5.2.1 回送请求和回答

  • ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问
  • 收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文
  • 这种询问报文用来测试目的站是否可达及了解其有关状态

🕤 5.2.2 时间戳请求和回答

  • ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间
  • 在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒
  • 这种询问报文用来进行时钟同步和测量时间

🕘 5.3 不发送ICMP的情况

  • ICMP差错报告报文不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  • 对具有多播地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

🕘 5.4 ICMP应用举例

  • 分组网间探测PING(Packet InterNet Groper)
    • 用来测试主机或路由器间的连通性(如ping www.baidu.com
    • 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
    • 使用ICMP回送请求和回答报文
  • 跟踪路由tracerouce
    • 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
    • Windows版本
      • tracert命令
      • 应用层直接使用网际层ICMP
      • 使用了ICMP回送请求和回答报文以及差错报告报文
    • Unix版本
      • traceroute命令
      • 在运输层使用UDP协议
      • 仅使用ICMP差错报告报文
    • 实现方法
      • 由主机发送出去的数据包中的生存时间字段TTL由1开始逐渐增加,每个路由器都会返回一个时间超过报文,由此达到跟踪路由器的目的

🕒 6. 实验:IP组网规划设计

实验背景:假设你是某高校的网络管理员。该高校申请到了一个公网地址102.3.1.1/30。现在要为该高校进行IP组网规划。假设使用172.16.0.0/16地址块。应如何规划才能尽量不浪费IP地址?请给出IP地址规划方案,并用下图实验拓扑进行模拟实验。

在这里插入图片描述

该校区有教学办公楼、图书馆、南区学生宿舍、英东楼北区学生宿舍公有5个区域需要分配IP地址。其中南区学生宿舍有1500台主机,英东楼中有700台主机,北区学生宿舍有500台主机,教学办公楼有100台主机,图书馆有50台主机。

实验步骤:
1、根据学校需求分配IP网段(理论方案)

区域主机数网段子网掩码(前缀)网关
南区学生宿舍1500172.16.0.0/21255.255.248.0172.16.7.254
英东楼700172.16.8.0/22255.255.252.0172.16.11.254
北区学生宿舍500172.16.12.0/23255.255.254.0172.16.13.254
教学办公楼100172.16.14.0/25255.255.255.128172.16.14.126
图书馆50172.16.14.128/26255.255.255.192172.16.14.190
外网网段2102.3.1.0/30255.255.255.252102.3.1.2

注:网关为网段内可用的最大主机地址。

2、完成出口路由器R1和ISP的接口配置
路由器所用主要配置命令:

# R1
<Huawei>sys			# 进入系统视图
[Huawei]sysname R1	# 修改设备名称
[R1]int g0/0/0		# 进入接口视图
[R1-GigabitEthernet0/0/0]ip add 172.16.7.254 21
[R1-GigabitEthernet0/0/0]quit
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 172.16.11.254 22
[R1-GigabitEthernet0/0/1]q
[R1]int g0/0/2
[R1-GigabitEthernet0/0/2]ip add 172.16.13.254 23
[R1]int g2/0/0
[R1-GigabitEthernet4/0/0]ip add 172.16.14.126 25
[R1]int g2/0/1
[R1-GigabitEthernet4/0/1]ip add 172.16.14.190 26
[ISP]int s2/0/0
[ISP-Serial2/0/0]ip add 102.3.1.1 30
# ISP
[ISP]int s4/0/0
[ISP-Serial4/0/0]ip add 102.3.1.2 30
# 查看接口信息
[R1]dis ip int b

在这里插入图片描述

3、五个区域的IPv4地址配置
以PC1为例:
在这里插入图片描述

4、验证内网连通

在这里插入图片描述

5、出口路由配置
在R1配置:

[R1]ip route-static 0.0.0.0 0.0.0.0 102.3.1.2

在ISP上配置:

[ISP]ip route-static 172.16.0.0 20 102.3.1.1

6、验证ISP与内网连通

在这里插入图片描述

思考题:如果设备R1上不做默认路由的配置,对本次实验是否有影响?
A:没有影响,对R1而言,所有网段均是直连网段,均已生成。可以使用 display ip routing-table查看R1路由表


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

03-15
### IPv4协议详解 #### 数据报头格式 IPv4数据报头是一个固定长度的结构,通常为20字节,但如果存在选项字段,则可能会扩展到更大的尺寸。IPv4头部主要包括版本号、首部长度、服务类型(TOS)、总长度、标识符、标志位、片偏移量、生存时间(TTL)、协议、校验和以及源IP地址和目标IP地址等字段[^1]。 #### 特殊地址部分 IPv4定义了一些特殊的地址类别用于特定用途。例如: - **环回地址**:`127.0.0.1` 是保留给本地测试使用的地址。 - **广播地址**:如 `255.255.255.255` 表示向局域网内的所有设备发送消息。 - **私有地址**:某些范围被分配作为专用网络内部通信使用,不会出现在公共互联网上,比如 `192.168.x.x`, `172.16.x.x ~ 172.31.x.x`, 和 `10.x.x.x`. #### 子网掩码与网络地址计算 子网划分通过应用子网掩码实现。子网掩码用来区分IP地址中的网络部分和主机部分。对于一个给定的IP地址及其对应的子网掩码,可以通过按位逻辑AND操作得出所属的具体网络地址。例如,假设有一个 IP 地址 `192.168.1.10` 及其子网掩码 `255.255.255.0` ,那么它的网络地址将是 `192.168.1.0` [^1]. #### 数据分片方法 当数据包大小超过链路层最大传输单元 (MTU) 的限制时,IPv4允许将较大的数据包分割成较小的部分以便于传送。每个片段都具有独立的IP头部信息并包含原始数据的一部分;其中最重要的是“标识”、“标志”和“片偏移”三个字段共同作用完成这一过程。接收端依据这些参数重新组装完整的数据流 [^1]. #### 隧道技术概述 为了使不同类型的网络之间可以互相通讯,在一些场景下会采用隧道机制。具体来说就是在一种协议的数据载荷里嵌套另一种协议的内容来进行传递。例如在IPv4环境中要传输IPv6流量的时候,就可以利用上述提到的方法把整个IPv6封包当作IPv4的有效负载来对待直到抵达最终的目的节点后再还原出来继续按照正常的IPv6流程执行下去 [^2]. #### ECN功能介绍 显式拥塞通知(ECN, Explicit Congestion Notification),是一种改进型的服务质量(QoS)方案。它允许路由器在网络变得拥挤之前主动告知终端减少它们之间的数据交换速度而不是等到不得不丢弃过多的数据包包才做出反应。这种方式依赖双方的支持——既包括发出请求的一侧也包括回应的一侧,并且只有在整个路径上的每一个环节都能够理解如何解释相应的标记才有意义 [^4]. ```python def calculate_network_address(ip, subnet_mask): ip_octets = list(map(int, ip.split('.'))) mask_octets = list(map(int, subnet_mask.split('.'))) network_address = '.'.join(str(i & j) for i,j in zip(ip_octets,mask_octets)) return network_address ip_example = '192.168.1.10' subnet_mask_example = '255.255.255.0' print(calculate_network_address(ip_example, subnet_mask_example)) # Output should be: 192.168.1.0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值