当前位置 博文首页 > 司夏的博客:网络层

    司夏的博客:网络层

    作者:[db:作者] 时间:2021-07-29 09:47

    网络层提供的服务: 只负责在不同网络之间尽力转发数据包 基于数据包的IP地址转发,不负责丢失重传,不负责顺序。实现其功能的设备叫做路由器。

    数据包如何路由
    在这里插入图片描述
    发送端

    1. 应用程序准备要传输的文件
    2. 传输层 将文件分段 并编号
    3. 网络层 添加目标IP地址源IP地址8
    4. 数据链路层添加Mac地址 两种情况 ,使用自己的子网掩码 判断自己在哪个网段 ,使用自己的子网掩码 判断目标地址在哪个网段,如果是同一个网段 arp协议广播解析目标IP地址的MAC,如果不是同一个网段,转发路由器。

    计算机A和计算机B通信过程
    在这里插入图片描述

    网络层协议

    IP协议

    IP数据包

    一个 IP 数据包由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
    在这里插入图片描述

    • 标志(flag) 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF 为1 表示后面“还有分片”。MF 为 0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF为0 时才允许分片。
    • 协议字段 指出应将数据部分交给哪一个进程
    • 首部检验和(16 位)字段 只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
    • 源地址和目的地址 都各占 4 字节
    • IP 首部的可变部分 就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。

    IP数据报分片举例
    在这里插入图片描述
    IP路由

    • 路由就是路由器从一个网段到另外一个网段转发数据包的过程,即数据包通过路由器转发,就是数据路由。
    • 网络畅通条件,要求数据包必须能够到达目标地址,同时数据包必须能够返回发送地址。
    • 这就要求沿途经过的路由器必须知道到目标网络如何转发数据包,即到达目的网络下一跳转发给哪个路由器,也就是必须有到达目标网络的路由,沿途的路由器还必须有数据包返回所需的路由。

    注意:

    • IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
    • 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
    • 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

    ARP协议

    不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
    在这里插入图片描述
    ARP 高速缓存的作用:

    为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

    ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

    使用 ARP 的四种典型情况

    • 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
    • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
    • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
    • 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。

    逆地址解析协议 RARP:逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。

    网际控制报文协议 ICMP

    • 为了提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
    • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
    • ICMP 不是高层协议,而是 IP 层的协议。
    • ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。

    ICMP报文格式
    在这里插入图片描述
    ICMP报文的类型

    • ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
    • ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
    • 差错报告报文有五种:终点不可达 ,源点抑制(Source quench) ,时间超过 ,参数问题 ,改变路由(重定向)(Redirect)
    • 询问报文有两种:回送请求和回答报文,时间戳请求和回答报文

    差错报告报告报文的数据字段的内容
    在这里插入图片描述

    ICMP应用举例

    PING 用来测试两个主机之间的连通性。
    PING 使用了 ICMP 回送请求与回送回答报文。
    PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

    ping命令诊断网络故障 :

    • PING(Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
    • ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。 严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
    • 如果你打开IE浏览器访问网站失败,你可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索,下面展示ping命令返回的信息以及分析其原因。

    Pathping跟踪数据包的路径 :

    使用ping能够判断网络通还是不通,比如请求超时,你就不能判断什么位置出现的网络故障造成的请求超时。使用pathping命令能跟踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥塞情况。

    因特网的路由选择协议

    不存在一种绝对的最佳路由算法。所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。实际的路由选择算法,应尽可能接近于理想的算法。 路由选择是个非常复杂的问题它是网络中的所有结点共同协调工作的结果。路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

    从路由算法的自适应性考虑,路由可以分为:

    • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
    • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

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

    在这里插入图片描述

    因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。

    自治系统之间的路由选择也叫做域间路由选择(interdomain routing),在自治系统内部的路由选择叫做域内路由选择(intradomain routing) 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

    现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

    Internet有两大类路由协议:

    • 内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
    • 外部网关协议EGP (External Gateway Protocol)。若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。

    RIP

    工作原理:RIP 是一种分布式的基于距离向量的路由选择协议。

    RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录从一路由器到直接连接的网络的距离定义为 1。
    从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
    RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
    这里的“距离”实际上指的是“最短距离”, RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
    RIP 允许一条路径最多只能包含 15 个路由器。
    “距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。RIP 不能在两个网络之间同时使用多条路由。
    RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

    RIP协议的三个要点

    • 仅和相邻路由器交换信息。
    • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
    • 按固定的时间间隔交换路由信息

    RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。

    RIP 协议的优缺点

    • RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
    • RIP 协议最大的优点就是实现简单,开销较小。
    • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
    • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

    Internet组播管理协议 IGMP

    IGMP 并非在因特网范围内对所有多播组成员进行管理的协议。IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

    IGMP 可分为两个阶段

    • 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。
    • 第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。

    只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。

    请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。

    和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。

    cs
    下一篇:没有了