计算机网络 韩立刚老师 第四章 网络层

课程链接:https://www.bilibili.com/video/BV1Hx411D7rn?p=36

网络层提供服务

  • 路由器的作用就是在不同的网段转发数据
  • 传输层把数据分段
  • 如果有多个路由器符合传输条件,那么就实现负载均衡,一个路由器分一点数据包
  • 网络层只管传数据,不负责丢包、重传、也不负责包的顺序问题。传输层来负责数据完整

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

网络设备和OSI参考模型关系

  • 每个接口有一个MAC地址
  • 集线器只负责传递信号
  • 交换机先将比特流存进来(要识别),再转发
  • 集线器是一层设备,交换机是二层设备(也有三层的),路由器是三层设备
  • 传输过程中IP地址不变,MAC地址一致在改变】
    在这里插入图片描述
  • 应用层准备要传输的文件
  • 传输层:将文件分段并编号
  • 网络层:添加目标IP地址和源IP地址
  • 数据链路层:使用自己的子网掩码,判断自己和目标的地址在哪个网段。如果是同一个网段,ARP协议广播解析目标IP地址的MAC。如果不是同一个网段,每个计算机会有自己的网关,会从网关转发出去

在这里插入图片描述

在这里插入图片描述

  • ARP 协议为IP协议提供服务,IP协议为ICMP提供服务,ICMP为IGMP提供服务
  • ARP协议负责通过IP解析成MAC地址
  • IP协议负责把数据包,从一个网段转移到另一个网段
  • ICMP协议用来测试网络是否畅通,有没有故障,如果有故障还可以报告故障。使用ICMP协议最多的是ping命令

ARP协议

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

  • 只能在本网段广播
  • 在以太网中,数据所依赖的是MAC地址而非IP地址,而将IP地址转换为MAC地址的工作是由ARP协议完成的
  • 主机和路由器都有自己的ARP高速缓存表

(原文链接:https://blog.csdn.net/ever_peng/article/details/80008638)

ARP流程:

  1. ARP请求
    任何时候,当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个ARP请求报文,这个报文包好了发送方的MAC地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播。
  2. ARP响应
    局域网中的每一台主机都会接受并处理这个ARP请求报文,然后进行验证,查看接收方的IP地址是不是自己的地址,只有验证成功的主机才会返回一个ARP响应报文,这个响应报文包含接收方的IP地址和物理地址。这个报文利用收到的ARP请求报文中的请求方物理地址以单播的方式直接发送给ARP请求报文的请求方。
    在这里插入图片描述在这里插入图片描述

ARP欺骗:
大家通过知道arp的原理之后就应该知道arp的缺陷了。当arp通过广播的形式的时候,虽然主机默认的是:与自己的ip不匹配的就视为丢弃,但是我们可以通过手动的方式来跟靶机讲我就是网关或者其它主机,从而就达到了欺骗目的。

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

逆向ARP(RARP):
就是计算机请求IP地址的过程
在这里插入图片描述

数据包首部

在这里插入图片描述

版本:指明是ipv4还是ipv6
区分服务:说明该数据包在网络中传输是着急还是不着急
总长度:总长度必须不超过最大数据传输单元MTU
在这里插入图片描述在这里插入图片描述生存时间:数据包在网络中可通过的路由器的最大值(每过一个路由器,TTL值就减1)
协议:指出此数据携带的数据使用何种协议,以便于目的主机的IP层将数据部分上交给哪个进程(指明的上层的协议)
在这里插入图片描述

网络畅通的条件

  • 数据路由:路由器在不同的网段转发数据报
  • 网络畅通的条件:发送的包能到达目的地,也能回来
  • 静态路由:人工给路由器配置他没有直连的所有网络怎么走。配置完就不能更改
  • 动态路由:路由通过路由选择协议自动获取路由信息

Windows网关就是默认路由

网络负载均衡

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

网际控制报文协议(ICMP)

ICMP简介:

  • 为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
  • 主机或路由器使用ICMP来发送差错报告报文询问报文(ping命令基于这个报文)
  • ICMP报文被封装在IP数据报中发送
  • ICMP允许主机和路由器报告差错情况和提供有关异常情况的报告
  • ICMP不是高层协议,而是IP层协议
  • ICMP报文作为IP层的数据报,加上数据报的首部,组成IP数据报发送出去
    在这里插入图片描述

ICMP的类型:
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
ICMP前四个字节是统一格式,共有三个字段:即类型、代码、和检验和。 接着的4个字节的内容和ICMP的类型有关

差错报告报文

在这里插入图片描述

  • 差错报告报文共有5种:终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向),如下图
    在这里插入图片描述终点不可达:
    在这里插入图片描述源点抑制:
    在这里插入图片描述
    时间超过:
    在这里插入图片描述
    在这里插入图片描述
    参数问题:
    在这里插入图片描述
    改变路由(重定向):
    在这里插入图片描述注意,以下情况不应发送ICMP差错报告报文:
    在这里插入图片描述

ICMP询问报文

常用的ICMP询问报文有以下两种:

  • 回送请求和回答
    - ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问
    - 收到此报文的主机必须给源主机或路由器回送回答报文
    - 这种询问报文用来测试目的站是否可达及了解其有关状态
  • 时间戳请求和回答
    - ICMP时间戳请求报文是请某个主机或路由器回答当前的时间和日期
    - 在ICMP时间戳回答报文中有一个32位的字段,,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒
    - 这种询问报文用来进行时钟同步和测量时间

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

  • TTL最开始值为1, 每次把TTL值加1。通过发送回来的时间超过,就知道有哪些路由器

ping命令

  • 基于ICMP协议里面的“回送请求”和“回送应答”。
  • Ping命令的主要作用通过发送数据包接收应答信息来检测两台计算机之间的网络是否连通。当网络出现故障的时候,可以用这个命令来预测故障和确定故障地点。Ping命令成功只是说明当前主机与目的主机之间存在一条连通的路径。如果不成功,则考虑:网线是否连通、网卡设置是否正确、IP地址是否可用等。

这部分参考的博文:
关于ping的详细讲解:https://blog.csdn.net/qq_34827674/article/details/105106807?%3E

在这里插入图片描述

原生的ICMP数据报首部:
在这里插入图片描述

  • 类型字段,可分为两类:
    - 用于诊断的查询消息,也就是[查询报文类型]
    - 另一类是通知出错原因的错误消息,也就是[差错报文类型]
    如下图,不同的类型对应的编号:
    在这里插入图片描述
  • 注意到,回送请求对应的8,回送应答对应的0,开头说过,ping命令就是基于这两种类型
    相比较原生ICMP报文,回送消息的报文首部如下图所示:
    在这里插入图片描述相比较原生的ICMP,这里多了两个字段:
  • 标识符:用来区分是哪个应用程序发ICMP包,比如用进程pid作为标识符
  • 序号:序列号从0开始,每发送一次新的回送请求就会加1

选项数据中,ping 还会存放发送请求的时间值,来计算往返时间,说明路程的长短。

ping 的发送和接收数据的过程

在这里插入图片描述

  • ping命令执行的时候,源主机会首先构建一个ICMP 回送请求 消息的数据报
    • ICMP数据包内包含多个数据段,最重要的两个:
      • 第一个是类型,对于回送请求消息而言该字段是8
      • 另一个是序号,主要用于区分连续ping的时候发出的多个数据报。每发出一个请求数据报,序号会自动加1.为了能够计算往返时间RTT,他会在报文数据部分插入时间。
  • 然后,由ICMP协议将这个数据包连同地址192.168.1.2一起交给IP 层,IP 层将以 192.168.1.2 作为目的地址,本机 IP 地址作为源地址,协议字段设置为 1 表示是 ICMP 协议,在加上一些其他控制信息,构建一个 IP 数据包。
    在这里插入图片描述
  • 接下来,需要加入 MAC 头。如果在本地 ARP 映射表中查找出 IP 地址 192.168.1.2 所对应的 MAC 地址,则可以直接使用;如果没有,则需要发送 ARP 协议查询 MAC 地址,获得 MAC 地址后,由数据链路层构建一个数据帧,目的地址是 IP 层传过来的 MAC 地址,源地址则是本机的 MAC 地址;还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
    *
  • 主机 B 收到这个数据帧后,先检查它的目的 MAC 地址,并和本机的 MAC 地址对比,如符合,则接收,否则就丢弃。
  • 接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议。
  • 主机 B 会构建一个 ICMP 回送响应消息数据包,回送响应数据包的类型字段为 0,序号为接收到的请求数据包中的序号,然后再发送出去给主机 A。
    在这里插入图片描述注意: 在规定的时间内,源主机如果没有接收到ICMP的应答包,说明主机不可达;(就是ping不通)如果接收到了ICMP的回送响应消息,则说明目标主机可达。(就是ping得通) 此时,源主机会检查,用当前时刻减去该数据包最初从源主机上发出的时刻,就是 ICMP 数据包的时间延迟。

ICMP的封装

ICMP封装在IP报进行传输。ICMP报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。在IP数据报报头中的协议(Protocol)字段设置成1,表示该数据是ICMP报文。
在这里插入图片描述
ICMP与IP同属于网络层,为什么ICMP报文又封装在IP数据报中呢?

  • IP协议是一种不可靠的、无连接的协议,不具备差错报告和差错纠正机制,它必须依赖于ICMP协议来报告处理一个IP数据报传输过程中的错误并提供管理和状态信息
  • ICMP协议就是来处理数据报文传输过程中出现的错误
    - 具体的工作内容:当目标主机或中间设备发现数据报文在传输中出现错误不能达到目的地址后,会触发ICMP模块,同时产生一个ICMP报文向源主机发送出错情况报告。源IP地址和目的IP地址封装在IP数据报(IP数据报首部)里,(ICMP报文首部是没有这些源、目的IP地址的)所以ICMP报文要封装在IP数据报中被传输,才可向源主机发送出错误情况报告

Pathping命令

在这里插入图片描述

IP数据报的发送和转发过程

  • IP 数据报的发送和转发包含以下两部分:
    - 主机发送IP数据报
    - 路由器转发IP数据报
  • 主机发送IP数据报
  • 路由器转发IP数据报
  • 同一网络中的主机可以直接通信,叫做主机交付。不同网络的主机,需要通过路由器来中转,这属于间接交付
    源主机如何知道目的主机与自己是否在同一个网络中呢?
    将主机F的IP地址与自己的子网掩码相与,如果和自己的网络地址不相等,则不在一个网络
    主机C如何知道自己应该交给那个路由器转发呢?
    各个主机应该都有一个默认网关(默认的路由器的IP地址)

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

  • 当我们给路由器的接口配置IP地址和子网掩码时,路由器就知道了自己的该接口与哪个网络是直连的(IP地址和子网掩码相与,得到网络地址)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

静态路由配置

  • 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
    在这里插入图片描述

静态路由配置错误可能导致路由环路

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

路由选择协议概述

  • 路由器自己来学习到各网段怎么走
  • 常见的动态路由协议包括RIP、OSPF、BGP等等。
  • RIP协议:互联网上最早的动态路由协议
  • 周期性广播(30s),告诉邻居路由器
  • 经过路由器最少,路径越优

路由选择协议概述:
在这里插入图片描述在这里插入图片描述

因特网采用分层次的路由选择协议

  • 自治系统之间的路由选择,简称域间路由选择,使用外部网关协议EGP
  • 自治系统内部的路由选择,简称域内路由选择,使用内部网关协议IGP
    在这里插入图片描述
  • 在一个自治系统内部使用的具体的网关内部协议,与因特网中其他自治系统中选用何种内部网关协议无关
  • 自治系统外部使用的网关协议是BGP
  • 路由选择协议是在路由器上运行的

常见的路由选择协议

如下图:
在这里插入图片描述

路由器的基本结构

  • 路由器是具有多个输入端口和输出端口的专用计算机,其任务是转发分组

  • 整个路由器可划分为两个部分:路由选择部分、分组转发部分,如下图:
    在这里插入图片描述

  • 路由选择部分的核心构件是路由选择处理机,他的任务是根据所使用的路由选择协议,周期性的与其他路由器进行路由信息的交互,来更新路由表

  • 分组转发部分:
    - 如果送交网络层的分组时普通待转发的数据分组,1. 则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目,则丢弃该分组。否则,按照匹配条目中所指示的端口进行转发。 2. 输出端口的网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间(TTL)减1,然后送交数据链路层进行封装。。。
    - 如果送交输入端口网络层的是路由器之间交换路由信息的路由报文 ,则把这种分组送交路由选择处理机,路由选择处理机根据自己的内容来更新自己的路由表。
    在这里插入图片描述

  • 转发表是从路由表得出的

  • 路由表一般仅包含从目的网络到下一跳的映射

  • 路由表需要对网络拓扑变化的计算最优化

  • 转发表的结构应当使查找过程最优化

  • 路由处理机出来处理收到的路由报文外,还会周期性地给其他路由器,发送自己所知道的路由信息。

  • 路由器的各端口应该还具有输入缓冲区和输出缓冲区,输入缓冲区用来暂存,新进入路由器但还来不及处理的分组。输出缓冲区用来暂存,已经处理完但还来不及发送的分组

  • 路由器的端口既有输入又有输出功能
    在这里插入图片描述

路由信息协议RIP的基本工作原理

  • 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一
  • RIP 要求自治系统AS内的每一个路由器都要维护从他自己到AS内其他妹妹一个网络的距离记录。这是一组距离,称为“距离向量D-V”
  • RIP使用跳数作为度量里衡量到达目的网络的距离
    - 路由器到直连网络的距离定义为1
    - 路由器到非直连网络的距离定义为所经过的路由器数加1
    - 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网
    在这里插入图片描述
  • RIP认为好的路由就是“距离短”的路由,也就是所通过的路由器数量最少的路由
  • 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。(把数据包均匀的分到各条可行路径上)
  • RIP包含以下三个要点:
    1. 和谁交换信息:仅和自己相邻的路由器交换信息
    2. 交换什么信息:自己的路由表
    3. 何时交换信息:周期性交换(例如每30s)

RIP 的基本工作过程

  1. 路由器刚开始工作时,只知道自己到直连网络的距离为1,如下图所示:
    在这里插入图片描述
  2. 每个路由器仅和自己相邻的路由器周期性的交换并更新路由信息
  3. 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。如下图所示:
    在这里插入图片描述

RIP的路由表条目更新规则

  • 路由器周期性将自己的“路由表发送给邻居”(可以这么看)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

开放最短路径优先(OSPF)基本工作原理

  • 开放最短路径优先OSPF,是为了克服RIP的缺点在1989年开发出来的
    - “开放”表明OSPF协议不是受某一厂商的控制,而是公开发表的
    - “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF

  • OSPF是基于链路状态的,而不像RIP那样是基于距离向量的

  • OSPF采用SPF算法来计算路由,从算法上保证了不会产生路由环路

  • OSPF不限制网络规模,更新效率高,收敛速度快

  • “链路状态”是指本路由器都和哪些路由器相邻,以及相应链路的“代价”
    - “代价”用来表示费用、距离、时延、带宽等待。这些都由网络管理人员来决定
    在这里插入图片描述

  • OSPF相邻路由器之间通过交换问候分组,建立和维护邻居关系
    - Hello分组封装在IP数据报中,发往组播地址224.0.0.5
    在这里插入图片描述
    - 发送周期为10s
    - 40s未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达

  • 每个路由器都会建立一张邻居表,其中的每个条目对应记录各邻居路由器的相关信息(可达或不可达)
    在这里插入图片描述

  • 使用OSPF的每个路由器都会产生链路状态通告LSA。LSA包含以下内容:
    * 直连的网络链路状态信息
    * 邻居路由器的链路状态信息

  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
    在这里插入图片描述

  • 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA

  • 通过各路由器洪泛法送封装又自己LSA的LSU分组,各路由器的LSDB最终将达到一致
    在这里插入图片描述

  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表
    在这里插入图片描述知道了带权有向图,各路由器就可以根据dij知道以自己为根到其他点的最短路径

在这里插入图片描述
综上,OSPF有以下五种分组类型:

  1. 问候(Hello)分组: 用来发现和维护邻居路由器的可达性
  2. 数据库描述分组: 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 链路状态请求分组: 向邻居路由器请求发送某些链路状态项目的详细信息
  4. 链路状态更新分组: 路由器用这种分组将其链路状态进行洪泛法送,即用洪泛法对全网更新链路状态
  5. 链路状态确认分组: 这是对链路状态更新分组的确认分组

OSPF基本工作过程

  1. 相邻路由器之间周期性发送问候分组,建立和维护邻居关系
  2. 建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己的链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器
  3. 例如,R1收到R2的数据库描述分组后,发现自己缺少其中那个某些链路状态项目,于是就给R2发送链路状态请求分组,R2收到后,将R1所缺少的链路状态项目的详细信息,封装在链路状态更新分组中发送给R1。
  4. R1收到后,将这些缺少的链路状态详细信息,添加到自己的链路状态数据库中。 并给R2发送链路状态确认分组
  • 最终R1和R2的数据链路状态库将达到一致,也就是链路状态数据库达到同步
  • 每30分钟,或链路状态发生变化时,路由器都会发送链路状态更新分组
    。收到该分组的路由器,将洪泛转发,并给该路由器发回链路状态确认分组

在这里插入图片描述

  • 为了避免产生大量的多播分组
    在这里插入图片描述

  • 若DR出现问题,则由BDR顶替DR

  • 主干区域的标识符必须是0.0.0.0

  • 划分区域的好处就是,把利用洪泛法交换链路状态信息的范围,局限于每一个区域,而不是整个自治系统。

  • 区域边界路由器,一个接口用于连接主干区域,另一个接口自身所在区域

  • 主干区域内的路由器称为主干路由器,可以把区域边界路由器看作是主干路由器

  • 还有一个自治系统边界路由器,用来和其他自治系统交换信息
    在这里插入图片描述在这里插入图片描述

边界网关协议BGP的基本工作原理

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

  • BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非是要寻求一条最佳路由

  • 两个BGP发言人都是通过一个共享网络连接在一起的

  • BGP发言人就是BGP边界路由器
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值