【计算机网络】个人学习笔记——第四章 网络层:CIDR编址&IP地址&子网掩码&ICMP&路由聚合与子网划分&ARP协议

第四章 网络层

  • 一、网络层概述【了解】

    • 1、概述

      • 网络层向上只提供无连接且不可靠但尽最大努力交付的数据报服务,其主要任务是将IP数据报通过路由的选择与转发从源端发送到目的端,为数据报交换网上的网络主机提供通信服务。
      • IP数据报和IP分组是同义词,IP数据报就是我们常说的‘分组’
      • IP地址告诉我们去哪里,路由器告诉我们怎么去,MAC地址告诉我们去了以后具体要找谁。
    • 2、网络层与传输层

      • 网络层实现主机与主机间的逻辑通信,不保证可靠传输
      • 传输层实现进程与进程之间的通信,保证可靠传输
    • 3、网络层的信息传输(网络层的两个层面)

      网络层传输的数据主要包括两个方面的内容
      • 转发源主机和目的主机之间的数据
      • 传送路由信息
        可以将网络层分为两个层面
      • 控制层面:路由选择算法
      • 数据层面:路由转发表,主机间的数据
  • 二、IP协议与IP地址(子网掩码计算与CIDR编址)【重点】

    • 1、IP数据报及其首部各字段【重点-片偏移的计算】

      • IP数据报的结构
        首部固定长度为20字节
        在这里插入图片描述

      • IP数据报首部各字段及其含义(重点关注片偏移字段,有考计算题,其他字段也是要知道的)

        • 版本:指的是所使用的IP协议版本(IPV4/IPV6)通信双方版本必须一致

        • 首部长度:计量单位为4字节,即当首部长度字段的值为5时,表示首部长度为4x5=20字节。也就是首部长度字段的最小值是5。

        • 服务类型:一般没用到

        • 总长度:计量单位是1字节,该字段占了16比特位,所以其二进制数最大能够表示216-1,也就是IP数据报的最大长度为216-1字节。但一般达不到这个最大长度,因为IP数据报是要向下封装的,数据链路层的协议都规定了每个数据帧中数据字段的最大值,也就是上一章提到的MTU最大传输单元。

        • 标志:占3比特位,只有后两位有意义

          • 最后一位记为MF,当MF=1时表示后面还有分片,MF=0时表示这个数据报是若干数据报中的最后一个
          • 中间位记作DF,当DF=0时表示允许分片
        • 片偏移【考计算】:数据因为数据过大无法进行封装时,要进行分片,片偏移就是用来标记这个数据报搭载的数据分片是原来数据的哪一个部分,或者说是排在原来数据的哪一个位置。
          在这里插入图片描述

          • 片偏移字段以8字节(64比特位)作为偏移单位。
          • 例题:现在应用层产生了8192字节的数据,运输层采用UDP协议(已知UDP首部为8字节),现在链路层要用以太网来传输,问应该划分成几个IP数据报片,计算出每个数据报片的数据部分长度以及片偏移字段的值?
            基于这道题先来复习一下数据是怎么层层封装的
            在这里插入图片描述

          最后看一下为什么这么分片,以及最后片偏移字段值是怎么来的
          在这里插入图片描述

          总结一下就是:由于受到底层协议的约束,上层要往下传输、封装数据的时候要考虑一下底层的感受,塞不下的话不能硬塞,所以要进行分片。
          另外,偏移量是偏移量,片偏移字段值是片偏移字段值,个人认为这个要分清楚,字段值是记录在报文中的数值。在这道题中,偏移量是每个分片递增1480字节,但是记录下来的时候,由于片偏移字段的计量单位是8字节,所以每个分片偏移量都还要再除以8。

        • 生存时间TTL:生存时间就是这个报文的有效时间,过时就丢弃,这个值在TCP拥塞控制算法的时候会涉及到。TTL的单位是“跳”,就是跳转了几个路由器,经过一个路由器称之为1跳,下一个路由器称之为下一跳。

        • 协议(了解即可不用记)
          在这里插入图片描述

        • 首部校验和:这个字段只负责校验IP数据报的首部,数据部分不管,每经过一个路由器都会校验一次

        • 源地址

        • 目的地址

    • 2、IP协议的配套协议与设备(后面都会展开)

      • IP协议的配套协议
        • 地址解析协议ARP
        • 网际控制报文协议ICMP
        • 网际组管理协议IGMP
      • 各层次所使用的设备,由下往上分别是:
        • 物理层:转发器,集线器
        • 数据链路层:网桥、交换机,网桥和上面的转发器、集线器仅仅是对网络的扩充,并不能称之为互连
        • 网络层:路由,真正意义上的网络互连是靠路由器来实现的
        • 传输层、应用层:网关
    • 3、IP地址及其分类【重要】

      • IP地址的表示
        IP地址由4字节(32为)的点分10进制数来表示,每字节用点号隔开,例如:129.20.10.1。(点分十进制:每个字节写成十进制并且彼此以点号相隔)
      • IP地址的组成(常识)
        IP地址由两部分构成,{[网络号],[主机号]}
      • IP地址的分类(了解即可,感觉考的概率不大)
        依照网络号、主机号所占位数的不同以及网络号的固定的前几位不同,可以将IP地址划分成ABCDE五类
        在这里插入图片描述

      主要使用还是ABC这三类地址。
      - 每一类IP地址的最大可用网络数,取决于其除开固定的网络号以外剩余的网络号位数所能表示的最大十进制数
      - 每一类IP地址所能容纳的主机个数,取决于其主机号占整个IP地址长度的位数所能表示的最大十进制数,并且减去主机号全0和全1两种特殊情况。

        (学习期间使用的教材:《计算机网络第八版——谢希仁》,参考课程:王道考研计算机网络)
      
      • 特殊的IP地址(这个有必要知道)
        下面的全1全0指的是二进制写法的时候全1全0
        在这里插入图片描述
    • 4、无分类编址CIDR&子网掩码【重中之重】——子网划分与路由聚合

      经典的IP地址划分方法不够用了,所以要采用一种船新的方法来对IP地址进行分类,无分类域间路由选择CIDR
      CIDR表示的IP地址由两部分组成:不受限制的网络前缀(n<32)和主机号(32-n)
      在这里插入图片描述

      • 网络前缀
        网络前缀用一个斜杠/加上网络前缀位数来表示,放在完整IP地址的后面。比如:128.14.35.7/20,这里的20就表示该CIDR表示的IP地址网络前缀是20位,相应的其主机号就是32-20=12位

      • 地址块

        • CIDR将所有网络前缀都相同的所有连续IP划归为一个区块,称为CIDR地址块。
        • 一个地址块所能容纳的IP地址数目取决于网络前缀的位数
        • 主机号全0表示本网络,所以一般要单纯表示一个地址块的时候会把其主机号的部分全0处理
          在这里插入图片描述
      • 子网掩码(地址掩码)与子网划分原理

        • 子网掩码用来做咩野?
          • 用来计算某个IP地址是否属于本网络,并由此决定路由是否需要转发这个IP地址产生的数据包,如果属于本网络则路由不参与转发。将二进制源地址与目的地址都与子网掩码相与,网络号一致的就说明是处在同个网络,路由器就不进行转发。
          • 子网掩码也用于进行最长前缀匹配,使用CIDR记法对路由表查询的时候可能会有多个匹配结果,将IP地址和子网掩码相与以后取网络前缀最长的作为最终匹配结果。(前缀越长,地址块就越小,表示的主机/路由就越具体)
        • 子网掩码的组成
          网络号全1,主机号全0就表示子网掩码。对于CIDR记法来说,斜杠后面的数字所表示的网络前缀个数就是子网掩码有几个1。
        • 基于子网掩码的网络地址计算【重要】
          二进制IP地址与子网掩码进行按位与(AND)运算,得到的就是网络地址。注意区分以下运算规则
          • 与运算:有0则0,全1才1
          • 或运算:有1则1,全0才0
          • 异或运算:同0异1
            例:现有IP地址128.14.35.7/20,计算其网络地址?
            先将十进制的IP转化成二进制写法,再子网掩码表示出来,/20表示网络前缀有20位,也就是子网掩码前20位都是1,剩下12位是0,最后两者进行与运算即可
            在这里插入图片描述
      • 子网划分与路由聚合(构成超网)是什么

        • 子网划分:对于CIDR记法来说,子网的划分就是将一个大地址块,按照使用的主机数目和地理位置的不同划分成不同的小地址块。
        • 路由聚合(构成超网):就是对CIDR地址块的聚合,可以理解为找一个最小公倍数,即找到一个刚刚好大的CIDR地址块,使其刚刚好能够表示某几个需要聚合的小的CIDR地址块,其实最终的效果就是缩短他的网络前缀(对网络前缀取交集),使其能容纳的主机变多,这个网不就自然变大了吗?
    • 5、IP地址的分组转发(最长前缀匹配原则)

    分组转发指的是将数据按不同协议的需求要求切分成不同小块,封装成一个IP数据报文进行传输,每个报文都包含了源地址和目的地址,根据源地址和目的地址判断是否属于同一个子网,进而选择进行直接转发或者间接转发。而使用CIDR时,路由在查转发表的时候可能会查到多条匹配结果,这时候就要选择网络前缀最长的路由,网络前缀越长,地址块越小,路由越具体。
    在这里插入图片描述

      - 路由进行分组转发的匹配原则——最长前缀匹配
      具体操作过程:将二进制的目标IP和源IP都与子网掩码进行与运算,得到的就是网络地址,选择最长的即可。
    
    • 6、子网划分与路由聚合具体操作&例题详解【重点哦】

      在这里插入图片描述

      • 例题1:某单位分配到一个地址块129.250/16,已知该单位有4000台机器,平均分布在16个不同的地点。要求给每一个地点分配一个地址块,并算出每个地址块中IP地址的最小值和最大值。
        解:有两种解法,一种可以根据所需要的小网络个数来增加网络号的位数最后剩下的就都为主机号,还有一种是先确定最大的主机号再确定网络号的位数
        在这里插入图片描述

      • 例题2:有如下的4个/24地址块,要求进行最大可能的聚合
        212.56.132.0/24
        212.56.133.0/24
        212.56.134.0/24
        212.56.135.0/24
        解:先转换成二进制数,写在一起,找相同部分,有种找最小公倍数的意思。
        在这里插入图片描述

      • 例题3:在这里插入图片描述

      详细解析:划分地址块可以采用“二叉树法”来搞,左右分支分别表示本位为0或1,每一层就表示一位数。根据主机号所能容纳的最大主机数来分配,大块的优先分给主机需求量大的。

      以本题为例,本题初始网络号为23位,一共32位,则初始的主机号位数为9。开始往下划分,第一层表示24位网络号也就是/24,相应的主机号就剩8位,这个二进制数最大能表示255。这意味着现在的两个分支,也就是两个小网络,每个能容纳255台主机(去掉主机号全1的情况就是254台主机)。

      如果/24往下再分一层就来到了/25,此时每个分支的最大主机容量就会减半,能装128台,而本题LAN3要求要150台,不够装。所以在/24层要分一个分支用来表示LAN3,另外一个分支就继续往下划分到/25。

      /25层,25位网络号,7位主机号,最大能装128台主机,往下再分一层到/26的话,每个分支最大能表示64台,而题目中LAN2要求91台主机,所以在/25层也要拿一个分支来给LAN2,用剩下的另一半分支继续往下划分。

      /26层,26位网络号,6位主机号,最大能表示64台主机,题目中剩下的LAN1,LAN4,LAN5的需求量都太小,可以不用在这一层就分配,所以/26层的两个分支都能继续往下分。

      /27层,27位网络号,5位主机号,每个分支最多容纳32台主机,现在一共有4个空闲分支,而题目剩下的只有3个LAN了,所以直接分到这一层就够了,拿三个分支每个LAN分一个就好了。

      现在分完层次了,我们要来写对应的IP具体去表示。源地址块的二进制是(00011110,10001100,0111011||0,_ _ _ _ _ _ _ _ )用||来表示当前网络号到了哪一位,每个字节用逗号隔开,这样可能看的直观一点。

      以LAN3为例:LAN3被划到了24层中值为1的分支上,所以二进制写法记作(00011110,10001100,01110111||,_ _ _ _ _ _ _ _ ),转成十进制就是30.138.119/24

      以LAN2为例子:LAN2经过24层的0分支,被划到了25层中值为1 分支上,相应的在原来的地址上往后填上01,所以二进制写法记作(00011110,10001100,01110110,1||_ _ _ _ _ _ _ ),转成十进制就是30.138.118.128/25

      以LAN5为例,划到他这里经过的路线为0011(看下图),相应的在原来的地址上往后填上0011,所以二进制写法记作(00011110,10001100,01110110,0 1 1|| _ _ _ _ _ ),转成十进制就是30.138.118.96/27
      剩下的以此类推。

      总的来说就是先画一个二叉树图,按照主机数需求量从大到小进行分配,最后根据路径在原先的网络号上填上数字就是这个网络的二进制IP地址了,转成十进制,补上该层次对应的网络号即可。

      看一下下面的具体解题过程还有下一题可能会更好理解。
      在这里插入图片描述

      • 例题4:在这里插入图片描述

      解:大体思路还是跟上一题一样,按照需求优先将大地址块分给需求大的,唯一一点不同的是,记得WAN也是要划分的。
      在这里插入图片描述

  • 三、IP地址与MAC地址的关系(ARP协议)

    • 1、IP地址与MAC地址的关系与区别

      • IP地址是一个逻辑地址,是虚拟的,有公用IP和私用IP之分,用于在计算机网络中唯一标识一个路由、接口或一台主机。IP协议是网络层的东西,和TCP协议,UDP协议共同构成了网络层的核心。可以简单理解为:IP地址用来告诉我们这台主机在哪,而路由器告诉我们怎么到达那里
      • MAC地址是物理地址/硬件地址,是网卡或其他网络设备的固定地址,由生产厂商在生产时分配,并且通常不会更改,每个MAC地址都是唯一的,用于在局域网中唯一标识一个网络设备。MAC地址是一个6字节的十六进制数,MAC地址的前三位是由IEEE注册管理机构分配的厂商识别码,用于标识设备厂商,剩余的三个字节由厂商自行分配,用于区分同一厂家生产的不同设备。MAC地址是数据链路层的东西。可以简单理解为:MAC地址用来告诉我们到底是具体的谁,具体的哪一台主机
      • 根据公用的IP地址我们可以找到设备所在的局域网,但一个局域网中的所有设备的公用IP一般是相同的,这时候我们要确定到底是网内的哪个主机或者设备,就要借助MAC地址来实现了。就好比你能通过班级号定位到是哪个班,但你没办法定位到是班里的哪个同学,要借助学号来确定到具体的个人。
      • 而IP地址和MAC地址之间并不是简单的映射,是需要通过ARP协议来解析的,ARP协议就是连接这两个协议的桥梁,通过ARP协议可以根据IP地址解析到具体某台设备的MAC地址。
    • 2、ARP地址地址解析协议的工作原理

      • ARP请求:
        当一个主机需要向另外一个主机发送数据时,首先会检查该主机是否在本地网络中,如果目标主机不在同一网络中,发送方主机将默认使用网关的MAC地址来发送数据。如果在同一个网络中,发送方主机将发送一个ARP请求广播到本地网络的所有主机,询问一下目标IP地址到底是哪台主机拥有,也就是询问目标地址对应的MAC地址。
      • ARP响应:
        接收到ARP请求的主机会检查请求中的目标IP地址是否与自己匹配。如果匹配,则该主机会发送一个ARP响应单播帧给发送主机,包含自己的MAC地址作为响应。发送主机接收到响应后,会将目标IP地址与对应的MAC地址建立映射关系,并将此映射信息存储在本地ARP缓存中,以便后续通信时直接使用。
      • ARP缓存:
        每台主机都会维护一个本地的ARP缓存表,用于存储IP地址与MAC地址的映射关系。这样,在发送数据时,发送主机可以直接查找本地的ARP缓存表,以获取目标IP地址对应的MAC地址,而无需再发送ARP请求。
    • 3、ARP报文的结构

    在这里插入图片描述

    • 4、MAC帧的格式

    在这里插入图片描述

  • 四、网际报文控制协议ICMP

    • 1、ICMP报文的格式

    在这里插入图片描述

    • 2、ICMP报文的类型

      • ICMP询问报文
        • 请求报文
        • 回答报文
      • ICMP差错报告报文、
        • 终点不可达
        • 超时
        • 参数问题
        • 改变路由(重定向)
  • 五、路由选择协议(RIP、OSPF、BGP协议)

    • 1、有关路由选择的基本概念

      • 理想路由算法
        路由选择协议的核心就是路由算法,即需要采用何种算法来获得路由表中的各个项目。一个理想的路由算法具有以下特点
        - 正确和完整的:正确是指沿着路由表给的路径能够最终找到目的主机。
        - 计算简单:不能给网络通信量带去太大负担
        - 具有自适应性:能够适应负载的变化。依据此,分为静态路由选择(非自适应路由选择)和动态路由(自适应路由选择)选择两大类
        - 稳定性:路由算法能够收敛
        - 公平性:对于所有用户都是公平的
        - 能选出最佳路由
      • 分层次的路由选择协议
        将互联网划分为多个小的自治系统,记作AS。
        • 内部网关协议(分布式路由选择协议,域间路由选择)
          • RIP(距离向量算法)
          • OSPF(链路状态协议,SPF)
        • 外部网关协议(域间路由选择)
          • BGP(路径向量算法)
          • BGP-4
    • 2、RIP协议(重点)

      • 转发原理:跳数最少优先(跳数最少的路径不一定是最优路径,“比如搭乘公交时,中转次数少,有时候意味着步行距离长”
      • 当跳数达到16时标记为不可达(一路上最多15跳,每经过一条路为一跳)
      • 特点
        • 仅和相邻的路由器交换信息
        • 所交换的信息是路由表
        • 按固定的时间间隔交换信息
      • 以上三个特点决定了RIP协议信息收敛的速度较快,即好消息传播快,坏消息传播慢(坏消息指的是网络故障信息)
      • RIP具体更新算法
        • 收到来自A路由器的表,先将下一跳全部设置为A
        • 若A有,我没有的目的网络,则在我的表上新增。如果我有,A没有,不作操作
        • 若同目的网络,下一跳相同,视作最新的信息,更新
        • 若同目的网络,下一跳不同,视作不同路径,比较两者的距离。一样长或者A的更长则不操作,若A的比我的短则更新
    • 3、OSPF协议

      • 使用了SPF最短路径算法
      • 特点
        • 使用链路状态协议,交换的信息是与本路由器相邻的所有路由器链路的状态
        • 向本自治系统内的所有主机发送信息,即采用洪泛法
        • 不使用UDP而是直接使用IP数据报进行传送,故OSPF构成的数据报很短
      • 五种类型的分组
        • 问候分组
        • 数据库描述分组
        • 链路状态请求分组
        • 链路状态更新分组
        • 链路装填确认分组
    • 4、外部网关协议BGP

      • BGP的路由选择
        • 本地偏好选择:BGP会优先选择本地偏好属性设置的路由
        • AS跳数最少路由:如果找不到本地偏好路由或者有多个偏好值一致的,则选择一个跳数最少的
        • 热土豆路由选择算法:如果前两种方法都找不到一个适合转发的路由器,则采用热土豆算法,即尽快的将数据包转发出去,使分组以最快的速度即最少的转发次数离开本地AS
      • BGP协议的四种报文
        • 打开报文(OPEN):用来与BGP连接对等端建立关系
        • 更新报文(UPDATE):用来报告某一路由的信息,以及列出要撤销的路由
        • 保活报文(KEEPLIVE):用来周期性的检测与对等端的连通性
        • 通知报文(NOTIFICATION):用来发送检测到的差错
  • 六、IP多播(IGMP协议)

    • 1、IP多播

    IP多播指的是在互联网上进行广播多播的操作,指的是在互联网上进行一对多的通信,能够以多播数据报的形式同时把数据发送给多个主机。能够运行多播协议的路由器称为多播路由器
    实现IP多播需要两种协议:
    - 网际组管理协议IGMP
    - 多播路由选择协议

    • 2、网际组管理协议IGMP

    IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否还有主机参加或退出了某个多播组。IGMP协议是针对的本地局域网,它不知道IP多播组有多少主机,也不管互联网范围内的多播组成员,只管本地局域网。

  • 七、虚拟专用网VPN和网络地址转换NAT

    • 1、虚拟专用网VPN

      • 在互联网中,对于目的地址是专用网的包一律不会进行转发
      • 专用IP地址又称作可重用地址,是可以重复利用的,并不是特定与某个主机绑定
      • 采用专用IP连接的网络称为专用互联网或本地互联网
      • 虚拟专用网VPN只是在使用效果上和专用网类似
      • 一个虚拟专用网VPN内部至少要有一台路由器是能够合法的连接到互联网的,即要至少具有一个合法的全球IP地址
      • 所有通过互联网传输的数据都必须加密
    • 2、网络地址转换NAT

      • NAT主要实现的是网络地址和端口号之间的转换
      • NAT的利用使得能够在专用网络内部使用专用IP地址,而在链接到互联网的路由器使用全球IP地址,能够实现IP地址资源的节约
  • 八、多协议标签转换MPLS和软件定义网络SDN

    • 1、多协议标签转换MPLS

      • MPLS的特点
        • 支持面向连接的服务
        • 支持流量工程,网络负载均衡
        • 支持有效的使用虚拟专用网VPN
      • MPLS会在入口节点给每一个IP数据报打上固定长度的标签,然后根据标签在数据链路层用硬件进行转发
    • 2、软件定义网络SDN

      • SDN控制器有三个层次
        • 通信层(与数据层面对接的接口称为南向接口)
        • 状态管理层
        • 到网络控制应用程序层的接口(与应用对接的接口称为北向接口)
      • SDN体系的四个特征
        • 基于流的转发
        • 数据层面与控制层面分离
        • 位于数据层面交换机之外的网络控制功能
        • 可编程的网络

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 03:56:01       8 阅读
  2. 【Python教程】压缩PDF文件大小

    2024-06-11 03:56:01       9 阅读
  3. 通过文章id递归查询所有评论(xml)

    2024-06-11 03:56:01       10 阅读

热门阅读

  1. ABSD-系统架构师(七)

    2024-06-11 03:56:01       8 阅读
  2. document.queryselector怎么用

    2024-06-11 03:56:01       8 阅读
  3. Centos7.9部署单节点K8S环境

    2024-06-11 03:56:01       5 阅读
  4. leetcode 40. 组合总和 II

    2024-06-11 03:56:01       6 阅读
  5. Cordova WebView重定向到网站

    2024-06-11 03:56:01       5 阅读
  6. 重写setter方法要小心递归调用

    2024-06-11 03:56:01       4 阅读
  7. 代码随想录打卡第一天(补)

    2024-06-11 03:56:01       4 阅读
  8. web3规则改变者:Linea的厉害之处

    2024-06-11 03:56:01       5 阅读
  9. 什么是 prop drilling,如何避免?

    2024-06-11 03:56:01       7 阅读
  10. 【CSP】202312-1 仓库规划

    2024-06-11 03:56:01       6 阅读
  11. testbench仿真文件编写规则

    2024-06-11 03:56:01       6 阅读