• 4-3网络层-IPv4


    网际协议版本4(Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。

    一.IPv4分组的格式及IP数据报分片

    在这里插入图片描述
    1.版本:指IP版本,目前广泛使用的版本号是4(IPv4)
    2.首部长度:占4位,基本单位为4B。4位从0000-1111,若1111即15,乘单位4B=60B,此时取得首部长度最大值。固定部分20B,因此首部长度至少20B,20B/4B=5,即0101,因此范围0101~1111。若首部长度不是4B的整数倍,则使用填充字段,将其填充至4B的整数倍。最常用的首部长度是20B(即只有固定部分,没有可变部分)。因此首部长度可变
    3.区分服务:指示期望获得哪种类型的服务
    4.总长度:=整个IP数据报的长度=首部长度+数据部分,占16位。基本单位为1B。最大长度216-1=65535B
    在这里插入图片描述
    5.生存时间TTL:占8位。IP分组的保质期,经过一个路由器-1,变成0时丢弃,保证分组不会在网络中循环。生存时间字段值表示一个分组可以经过的最多的跳数。
    6.协议:占8位。指出该分组使用的协议(6为TCP协议 17为UDP协议)
    在这里插入图片描述
    7.首部校验和:占16位。只校验分组的首部,而不校验数据部分
    8.源地址字段:占32位。标识发送发的IP地址
    9.目的地址字段:占32位。标识接收方的IP地址
    10.可选字段:0~40B。用来支持排错、测量以及安全等措施。
    11.填充:把首部长度补成4B的整数倍。

    以下三个字段(标识、标志、片偏移)与分片和重组相关↓

    12.标识:占16位。一个数据报长度超过了链路层的MTU,就要进行分片(目的主机对分片后的数据报重组),每个分片都使用同一标识,是一个计数器用于保证数据报片能够正确组装称为原来的数据报。

    *最大传送单元MTU:链路层数据帧可封装数据的上限,以太网的MTU是1500B
    *当路由器准备将IP分组发送到网络上,而该网络又无法将整个分组一次发送时,路由器必须将该分组分片,使其长度能满足这一网络对分组长度的限制。IP分片可以独立地通过各个路径发送,而且在传输过程中仍然存在分片的可能(不同网络的MTU可能不同),因此不能由中间路由器进行重组。分片后的IP分组直至到达目的主机后才能汇集在一起,并且甚至不一定以原先的次序到达。这样,进行接收的主机都要求支持重组能力。

    13.标志:占3位,只有2位有意义(x_ _),最高位保留。中间位DF=1禁止分片,DF=0允许分片;最低位MF=1代表后面还有分片,MF=0代表这是最后一片/不需要分片(没有超过MTU)。DF=0时MF才有意义。

    *注:如果分组长度超过MTU,当DF=1时,丢弃该分组,并且用ICMP差错报文向源主机报告(ICMP下面讲)

    14.片偏移:占13位,基本单位为8B。指出较长分组分片后,某片在原分组中的相对位置。如0000000000001,表示该分片在原来数据报中的相对位置是8B字节开始。除了最后一个分片,每个分片长度一定是8B的整数倍。
    在这里插入图片描述
    例:对下面的数据报分片,MTU 1420B
    DF=0(允许分片)
    MF=0(是个整体,最后没有分片了)
    片偏移=0
    总长度3820B
    在这里插入图片描述
    第一片1420B,除去首部20B,剩余1400B数据部分
    第二片1420B,除去首部20B,剩余1400B数据部分
    第三片剩余3800B-2×1400B=1000B

    分别加上首部
    在这里插入图片描述
    设原数据报数据部分从0B开始

    ①第一段:0B~1399B
    片偏移0B/8B=0B
    标识与原始数据报相同
    DF=0(允许分片)
    MF=1(非最后一个)

    ②第二段:1400B~2799B
    片偏移1400B/8B=175B
    标识与原始数据报相同
    DF=0(允许分片)
    MF=1(非最后一个)

    ③第三段:2800B~3799B
    片偏移2800B/8B=350B
    标识与原始数据报相同
    DF=0(允许分片)
    MF=0(最后一个)

    串记
    总长度单位1B
    片偏移单位8B
    首部长度单位4B

    在这里插入图片描述

    二.IPv4地址

    1.IP地址 Internet Protocol Address:互联网协议地址,又译为网际协议地址。全世界唯一的32位(4字节)标识符,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。(路由器的每一个接口都会分配一个唯一的IP地址)

    组成:<网络号>,<主机号>

    11011111 00000001 00000001 00000001
    分别转为十进制
    ----223---------1--------------1---------------1
    即233.1.1.1

    2.分类的IP地址

    在这里插入图片描述
    1.A类
    网络号1B:第0位是0,剩余8-1=7位
    (1)最大可用网络数-2:
    ①网络号1-7位:0000000
    ②网络号1-7位:1111111(127环回地址)
    (2)可用范围
    00000001~01111110
    1~126
    (3)主机号24位-2
    ①全0(本网络)
    ②全1(广播地址)

    2.B类
    网络号2B:第0位1,第1位0,剩余16-2=14位
    (1)最大可用网络数-1:
    网络号2-15位:00000000000000
    (2)可用范围
    10000000 00000001~10111111 11111111
    128.1~191.255
    (2)主机号16位-2:
    ①全0(本网络)
    ②全1(广播地址)

    3.C类
    网络号3B:第0位1,第1位1,第2位0,剩余24-3=21位
    (1)最大可用网络数-1:
    网络号3-23位:000000000000000000000
    (2)可用范围
    11000000 00000000 00000001~11011111 11111111 11111111
    192.0.1~223.255.255
    (2)主机号8位-2:
    ①全0(本网络)
    ②全1(广播地址)
    在这里插入图片描述

    特殊的IP地址
    (1)0.0.0.0:只可以作为源地址。表示本网范围内的主机
    (2)网络号全0,主机号特定值:只可以作为源地址。表示本网范围内的某个特定主机
    (3)255.255.255.255:只可以作为目的地址。表示本网络内的广播地址
    (4)网络号特定值,主机号全0:既不能做源地址,也不能做目的地址。表示一个网络。如202.98.174.0
    (5)网络号特定值,主机号全1:只可以作为目的地址。直接广播地址,对特定网络上的所有主机进行广播。如202.98.174.255
    (6)网络号127,主机号任意(非全0/1)。既可以做源地址,也可以做目的地址。此地址表示任意主机本身,用于本地软件环回测试,目的地址为环回地址的IP数据报永远不会出现在任何网络上

    私有的IP地址
    只适用于内部网络,不允许出现在因特网上,路由器对目的地址是私有IP地址的数据报一律不进行转发。
    在这里插入图片描述

    三.网络地址转换NAT

    在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。

    采用网络地址转换(NAT),可以使一些使用本地地址的专用网连接到因特网上,进而使得一些机构的内部主机可以使用专用地址,只需给此机构分配一个IP地址即可,并且这些专用地址是可重用的——其他机构也可使用,所以大大节省了IP地址的消耗。

    在这里插入图片描述
    若A向B发数据报,在网络层加上源IP地址(A:192.168.0.3)和目的IP地址(B:213.18.2.4),在传输层封装加上端口号(30000)。传到路由器,源IP地址改为路由器的IP地址(172.38.1.5)和端口号(改为40001)

    可以看出:公网的IP不变,专用网的IP需要换成路由器IP(通过NAT)

    NAT转发表

    WAN端LAN端
    172.38.1.5(40002)192.168.0.4(30001)

    *注:NAT表项需要管理员添加

    在这里插入图片描述
    若B向C(192.168.0.4的主机)发数据报,在网络层加上源IP地址(B:213.18.2.4)和目的IP地址(专用网的代表人物是路由器IP:172.38.1.5),在传输层封装加上端口号(40002)。传到路由器,目的IP地址改为C的IP地址(192.168.0.4),端口号改为30001

    NAT转发表

    WAN端LAN端
    172.38.1.5(40002)192.168.0.4(30001)

    本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。普通路由器(仅工作在网络层)在转发IP数据报时,不改变其源IP地址和目的IP地址;NAT路由器在转发IP数据报时,需要查看和转换传输层的端口号,一定要更换其IP地址。

    四.子网划分与子网掩码

    1.两级IP地址的缺点:IP地址空间的利用率有时很低、两级的IP地址不够灵活、会使路由表变得太大而使网络性能变坏

    因此引入了三级IP地址:把主机号较高的一部分拿出来作为子网号。某单位划分子网后,单位对外仍然表现为没有划分子网的网络。

    通过划分子网:
    (1)减小了广播域的大小(规模),减小了冲突域的大小
    (2)子网号占据了主机号位,减少了主机可分配的数量
    (3)IP地址的利用率提高,网络的数量整体不变
    在这里插入图片描述
    主机号至少2位,子网号可以全0/1,主机号不能全0(本网络)/1(广播分组)

    划分子网通过从网络的主机号借用若干比特作为子网号,从而使原来较大规模的网络细分为几个规模较小的网络,提高了IP地址的利用率。

    2.子网掩码
    对于两级IP地址,网络号全写1,主机号全写0;
    对于三级IP地址,网络号和子网号写1,主机号写0

    在这里插入图片描述
    子网网络地址=子网掩码与IP地址二进制逐位相与


    在这里插入图片描述
    IP地址:141.14.72.24=10001101 00001110 01001000 00011000
    子网掩码:255.255.192.0=11111111 11111111 11000000 00000000
    相与得
    10001101 00001110 01000000 00000000
    即141.14.64.0

    若将子网掩码改为255.255.224.0,网络地址仍为141.14.64.0

    因此同一IP地址与不同的子网掩码,可能得到相同的网络地址。


    在这里插入图片描述
    子网掩码中主机号为全0,其他全1
    255.255.252.0对应
    11111111 11111111 11111100 00000000
    可以看出后10位为主机号
    前22位为网络号+子网号

    由IP地址180.80.77.55可以看出180属于B类地址128.1~191.255
    B类地址有16位网络号和16位主机号,其中16位主机号分为了6位子网号和10位主机号。因此
    [11111111 11111111] [111111][00 00000000]
    网络号------------------子网号------主机号

    将IP地址与子网掩码相与得到子网网络地址
    10110100 01010000 01001101 00110111
    11111111 11111111 11111100 00000000
    得到
    180.80.76.0
    广播分组使主机号全为1,即将最后10位改为1
    即将10110100 01010000 01001100 00000000
    改为10110100 01010000 01001111 11111111
    即180.80.79.255
    选D

    3.使用子网掩码进行分组转发
    每个路由器都有一个路由表,路由表包括:目的网络地址、目的网络子网掩码、下一跳地址

    路由器转发分组算法:
    (1)提取目的IP地址
    (2)是否直接交付:将目的地址与子网掩码相与,若和子网的网络地址相同即可直接交付
    (3)特定主机路由:对特定的目的主机指明的一个路由
    (4)检测路由表中有无路径:目的地址和路由表中每一行的子网掩码相与,如果是目的网络,则按照该行的下一跳进行
    (5)默认路由0.0.0.0:发给另外的路由器,重复上面步骤,直到找到。时间限制生存时间(TTL)
    (6)仍未找到:丢弃,报告转发分组出错

    五.无分类域间路由选择CIDR

    消除了传统A、B、C类地址及划分子网的概念,可以更有效地分配IPv4的地址空间,把小的网络汇聚成大的超网。融合了子网地址与子网掩码,方便网络划分。即 IP={<网络前缀>,<主机号>}

    CIDR是比划分子网更为灵活的一种手段,它消除了A、B、C类地址及划分子网的概念。使用各种长度的网络前缀来代替分类地址中的网络号和子网号,将网络前缀都相同的IP地址组成“CIDR地址块”。网络前缀越短,地址块越大。因特网服务提供者再根据客户的具体情况,分配合适大小的CIDR地址块,从而更加有效地利用IPv4的地址空间。

    在这里插入图片描述
    1.最小/大地址,地址块与地址掩码

    [例] 128.14.35.7/20是某CIDR地址块中的一个地址

    表示20位的网络前缀,剩下的12位表示主机号,包含212=4096个IP地址
    变为二进制
    [10000000 00001110 0010]0011 00000111
    ------------网络前缀------------
    最小地址(主机号全0)[10000000 00001110 0010]0000 00000000,即128.14.32.0(本网络)
    最大地址(主机号全1)[10000000 00001110 0010]1111 11111111,即128.14.47.255(广播地址)

    CIDR地址块(与最小相同)128.14.32.0/20
    地址掩码(子网掩码):网络前缀1,主机号0,即11111111 11111111 11110000 00000000

    [例]192.199.170.82/27
    82的二进制01010010
    包含IP地址个数:25=32
    最小地址:192.199.170.64
    最大地址:192.199.170.95
    地址块:192.199.170.64/27
    地址掩码(子网掩码):11111111 11111111 11111111 11100000,即255.255.255.224

    2.构成超网(路由聚合)
    构成超网:将多个子网聚合成一个较大的子网
    在这里插入图片描述
    同接口合体。聚合后的合体网络=两个网络的网络地址取交集(相同的保留,从第一个不同的起往后(右)均写0)
    网络1: 206.1.00000000.00000000(不规范写法)
    网络2: 206.1.10000000.00000000
    合体后:206.1.00000000.00000000,网络前缀由17变为16
    即206.1.0.0/16
    在这里插入图片描述
    [例]
    在这里插入图片描述
    00100000
    00101000
    00110000
    00111000
    合体00100000
    即35.230.32.0/19
    答案C

    3.最长前缀匹配
    (1)使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。
    (2)前缀越长,地址块越小,路由越具体。

    [例] 目的地址206.0.71.130
    A:206.0.68.0/22
    B:206.0.71.128/25
    C:206.0.71.0/25

    目的地址:206.0.01000111 10000010
    A网络掩码22个1,11111111 11111111 11111100 00000000
    B:11111111 11111111 11111111 10000000
    C:11111111 11111111 11111111 10000000

    与A相与:206.0.01000100 00000000,即206.0.68.0/22,与A相同
    与B相与:206.0.01000111 10000000,即206.0.71.128/25,与B相同
    与C相与:206.0.01000111 10000000,即206.0.71.128/25,与C不同

    选择匹配成功且最长的网络前缀的B

    [例]
    路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应该被转发到哪一个下一跳路由器()。
    A. R1 B. R2
    C. R3 D. R4

    目的网络下一跳
    132.0.0.0/8R1
    132.0.0.0/11R2
    132.19.232.0/22R3
    0.0.0.0/0R4

    解:
    表格对应
    11111111 00000000 00000000 00000000
    11111111 11100000 00000000 00000000
    11111111 11111111 11111100 00000000
    00000000 00000000 00000000 00000000
    目的地址:10000100 00010011 11101101 00000101
    相与得
    10000100 00000000 00000000 00000000,即132.0.0.0/8成功
    10000100 00000000 00000000 00000000,即132.0.0.0/11成功
    10000100 00010011 11101100 00000000,即132.19.236.0/22失败
    00000000 00000000 00000000 00000000,即0.0.0.0/0成功。可以看出,R4作为默认路由,若R1~R3均不匹配,则转向R4,交给下一个路由,重复以上过程
    因此选第二个R2

    4.优点
    (1)有利于减少路由器之间的路由选择信息的交换,提高网络性能
    (2)网络前缀长度具有灵活性

    5.查找路由表使用的数据结构方法:二叉线索树

    六.ARP协议

    实现IP地址到MAC地址的映射
    在这里插入图片描述
    1.主机1向主机3发送(同一局域网)
    传输层:对大文件分段
    网络层:加目的IP和源IP
    数据链路层:加源MAC(已知)和目的MAC(未知)
    在这里插入图片描述

    对于每个主机/路由器都有一个ARP高速缓存,在这里有局域网内部的IP地址与MAC地址的映射。
    初始ARP高速缓存为空,使用ARP协议,首先广播一个ARP分组请求,1号主机发送数据帧。包括源IP、目的IP、源MAC、目的物理地址全1
    在这里插入图片描述
    该广播ARP请求分组到达交换机,从所有端口广播出去,3号收到后响应,返回一个单播响应分组(直接到达1号主机),包括3号主机的IP和MAC地址
    在这里插入图片描述
    同时ARP高速缓存更新数据
    在这里插入图片描述
    数据链路层加上MAC3和FCS,放到物理层传输
    在这里插入图片描述
    2.1号主机与5号主机通信(跨局域网)
    只有主机和路由器有MAC地址,交换机没有
    1号主机用自己的子网掩码和IP5相与,发现不在同一网段内,查询默认网关(6路由器)的MAC地址
    1的下一跳为2号主机、3号主机或6的路由器端口
    在这里插入图片描述
    1广播ARP请求,企图获取MAC6
    在这里插入图片描述
    单播返回ARP响应分组,成功获得MAC6
    在这里插入图片描述
    目前从1传到6路由器
    在这里插入图片描述

    6路由器,将MAC1和MAC6改为MAC7和MAC8,进行下一次传输。源IP和目的IP保持不变。此处不考虑点对点协议,填入MAC8,此过程也使用了ARP协议
    在这里插入图片描述
    在这里插入图片描述
    下一步,MAC改为9到5,此过程使用了ARP协议(广播ARP请求分组:源IP为IP9,目的IP为IP5,MAC9和全1)。
    在这里插入图片描述
    3.总结
    检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
    (1)主机A发到本网络上的主机B:用ARP找到B的硬件地址
    (2)主机A发到另一个网络上的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址,剩下的工作由这个路由器来完成
    (3)路由器发给本网络上的主机A:用ARP找到A的硬件地址
    (4)路由器发给另一个网络上的主机B:用ARP找到本网络上的一个路由器(网关)的硬件地址,剩下的工作由这个路由器来完成

    七.动态主机配置协议(DHCP协议)

    应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
    DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用(可重复分配),支持移动用户加入网络,支持在用地址续租。
    在这里插入图片描述
    步骤:
    (1)主机广播DHCP发现报文:询问谁有。
    (2)DHCP服务器广播DHCP提供报文:我有。拟分配,先到先得
    (3)主机广播DHCP请求报文:我要用了。
    (4)DHCP服务器广播DHCP确认报文:好。正式分配

    注:
    (1)DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址
    (2)DHCP的客户端和服务器端需要通过广播方式来进行交互

    八.网际控制报文协议(ICMP协议)

    IP缺乏差错控制机制,缺乏主机和网络管理查询机制,为了提高IP数据报交付成功的机会,在网络层使用了ICMP来让主机或路由器报告差错和异常情况。

    在这里插入图片描述
    在IP数据报的数据部分,是网络层的协议。由IP直接为ICMP提供服务

    在这里插入图片描述
    1.ICMP差错报告报文
    (1)终点不可达:无法交付。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
    (2)源点抑制:拥塞丢数据。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
    (3)时间超过:TTL=0。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。Traceroute
    (4)参数问题:首部字段有问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
    (5)改变路由(重定向):择优。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

    在这里插入图片描述
    注:不应发送ICMP差错报告报文
    (1)对ICMP差错报告报文不再发送ICMP差错报告报文:IP数据报首部不检查数据部分,即使有错也不发送
    (2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文:只发第一个(若有)
    (3)对具有组播(一点到多个结点)地址的数据报都不发送ICMP差错报告报文
    (4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

    2.ICMP询问报文
    (1)回送请求和回答报文:测试目的站是否可达以及了解其相关状态。主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。(Ping)
    (2)时间戳请求和回答报文:用来进行时钟同步和测量时间。请某个主机或路由器回答当前的日期和时间。
    (3)掩码地址请求和回答报文
    (4)路由器询问和通告报文

    3.ICMP的应用
    (1)分组网间探测PING
    测试两台主机之间的连通性,使用了ICMP回送请求和回答报文
    (2)Traceroute
    用来跟踪分组经过的路由(从源点到终点的路径),使用了ICMP时间超过差错报告报文

  • 相关阅读:
    从ASM看jacoco运行原理
    Redis 9 数据库
    Android对接华为AI - 文本识别
    云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
    Maven使用安装
    如何在麒麟上安装 ONLYOFFICE 桌面编辑器
    mysql数据库 - 统诉
    数据结构 基数排序的优化
    JavaWeb实现登录注册功能[代码+详解]
    【SpringMVC】重定向和转向详解
  • 原文地址:https://blog.csdn.net/weixin_45825865/article/details/126353115