当前位置: 首页 > news >正文

计算机网络(第四章)

网络层

一、网络层提供的两种服务

  • 虚电路 :虚电路是一种在通信开始之前建立连接的方式。它类似于电话通话,双方在通话前要建立连接;
  • 数据报 :数据报是一种无连接的通信方式。每个数据包(数据报)独立地发送,可能会经过不同的路径;

在这里插入图片描述

二、IP 协议

背景:
在这里插入图片描述
在这里插入图片描述

  • IP 协议:核心协议,负责数据包的传输与寻址,是互联网通信的基础。
  • 与 IP 协议配套使用的还有三个协议:
    1. 地址解析协议 ARP(AddressResolutionProtocol):用于根据 IP 地址查询 MAC 地址。
    2. 网际控制报文协议 ICMP(InternetControlMessageProtocol):用于查询报文转发路径、反馈网络故障。
    3. 网际组管理协议 IGMP(InternetGroupManagementProtocol):用于控制、管理组播设备和报文。

  • IP 地址的结构:

    • IP 地址通常由 32 位二进制数构成,分为四个 8 位部分(即四个字节),以十进制形式表示时,通常用点分十进制表示,如 192.168.1.1。
    • 通常其 IP 地址分为两个固定长度的字段:
      • 网络号 net-id
      • 主机号 host-id
    • IP 地址的两个字段随着不同位数的大小划分为多种类型的地址,常见的三种类型如下:
      • A 类地址 (Class A):
        • 从 1.0.0.0 到 126.0.0.0
        • 每个网络可以拥有约 1677 万个主机(224 - 2)
        • 适用于大型网络,如大型公司和互联网服务提供商(ISP)
      • B 类地址 (Class B):
        • 从 128.0.0.0 到 191.255.0.0
        • 每个网络可以拥有约 65,000 个主机(216 - 2)
        • 适用于中型网络,如大学校园和中型企业。
      • C 类地址 (Class C):
        • 从 192.0.0.0 到 223.255.255.0
        • 每个网络可以拥有约 254 个主机(28 - 2)
        • 适用于小型网络,如小型企业和家庭网络。

    在这里插入图片描述

  • 网络号和主机号
    • 全 0 地址 (0.0.0.0):表示一个未指定的地址,通常用于表示“当前主机”或“未知主机”
    • 全 1 地址 (255.255.255.255):全 1 地址是一个广播地址,用于在本地网络上发送广播消息。
    • 从 127.0.0.0 到 127.255.255.255 是特殊的回环地址(Loopback Address),用于网络设备自我测试和内部通信。

  • 超网、IP 地址划分子网和子网掩码
    • 使用 CIDR 地址块可以表示很多地址,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由,这被称为路由聚合,路由聚合也称为构成超网(supernetting)
    • 子网是将一个大的网络分割成多个小网络的过程。每个小网络称为子网,目的是提高网络的管理效率和性能。
    • 子网掩码是一种用于区分 IP 地址中网络部分和主机部分的工具。它与 IP 地址相结合,帮助路由器和设备确定数据包的发送方向。
    • 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 掩码的表示
    • 十进制表示:例如,常见的子网掩码有 255.255.255.0。
    • CIDR 表示:使用斜杠表示法,如 192.168.1.0/24,表示前 24 位是网络部分,剩余的 8 位是主机部分
    • 子网掩码的每一位与 IP 地址的对应位进行“与”运算(AND),可以提取出网络地址
  • 子网划分
    • 假设你有一个 IP 地址 192.168.1.0/24,想将其划分为 4 个子网,则为 22 ,新增两位,如果是划分 8 个,则为 23 :

    即划分子网时,每增加 N 倍的子网数量,就需要在原来的子网掩码基础上增加 log₂(N) 位

在这里插入图片描述

  • 路由聚合:路由聚合是将多个 IP 地址块合并为一个更大的地址块的过程,以减少路由表中的条目数量。
    • 减少路由表大小:通过聚合,路由器可以更有效地管理路由信息,降低内存和处理的需求。
    • 提高路由效率:减少查找时间,加快数据包转发速度。
    • 如果有多个子网 192.168.1.0/24、192.168.2.0/24 和 192.168.3.0/24,可以聚合为 192.168.0.0/22
  • 路由表查找
    • 二叉线索查找是一种基于二叉树的数据结构,用于高效查找和存储 IP 地址及其对应的路由信息。二叉线索查找是一种基于二叉树的数据结构,用于高效查找和存储 IP 地址及其对应的路由信息

  • IP 地址的重要特定
    • 分级地址结构:主要由网络号和主机号组成。
      • 管理便利:IP 地址管理机构只需分配网络号,主机号由用户自行分配,简化了管理。
      • 路由效率:路由器根据网络号转发数据包,减少路由表项目数,从而降低存储需求。
    • 多归属主机:
      • 一个主机若连接到多个网络,需拥有不同的 IP 地址,称为多归属主机(multihomed host)。
      • 路由器通常连接至少两个网络,需具备两个不同的 IP 地址,以实现网络间的转发。
    • 局域网连接:
      • 通过转发器、网桥或交换机连接的多个局域网可视为一个网络,拥有相同的网络号(net-id)。
    • 网络平等性:
      • 所有分配到相同网络号的网络,无论是局域网还是广域网,都被视为平等。

  • IP 数据报的格式
    在这里插入图片描述

背景梳理:

  • 字段(Field):每个独立的数据单元,具有特定的功能。例如,版本、首部长度、服务类型等都是字段。
  • 字(Word):在 IP 首部的上下文中,32 位字(4 字节)是一个数据单位。首部长度字段以 32 位字为单位表示。
  • 首部(Header):整个 IP 数据报的前面部分,由多个字段组成。首部包含控制和路由信息,用于正确传输数据包。包含固定部分(20 字节)+ 可变部分。
字段长度(位)描述
版本4IP 协议版本号,IPv 4 为 4
首部长度4IP 首部的长度,其值用来表示首部字的数量,当其数值转为十进制 15 时,则此时首部总长度为 15*4 字节(固定+可变)
服务类型8指示数据报的优先级和服务质量。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段
总长度16数据报的总长度,包括首部和数据部分,以字节为单位,其值用来表示整个 IP 中字的数量。
标识16数据报的唯一标识符,用于分片和重组。它是一个计数器,用来产生 IP 数据报的标识。被切片的多个数据报标识一致。
标志3控制分片的标志位,指示是否分片及最后一个分片。标志字段的最低位是 MF(MoreFragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF(Don’tFragment)。只有当 DF=0 时才允许分片。
片偏移13指示当前片在原始数据报中的位置。片偏移——占 13 位,指出:较长的分组在分片后某片在原分组中的相对位置。注意:片偏移以8个字节为偏移单位。
生存时间(TTL)8数据报在网络中的生存时间,防止数据包在网络中无限循环。指示数据报在网络中可通过的路由器数的最大值。
协议8表示数据部分使用的传输层协议(如 TCP、UDP)。以便目的主机的 IP 层将数据部分上交给那个处理过程
首部检验和16对 IP 首部进行错误检测的检验和。只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法,以减少工作量。
源 IP 地址32发送方的 IP 地址。
目的 IP 地址32接收方的 IP 地址。
选项可变可选字段,提供额外的功能,如时间戳或安全设置。
数据部分可变实际传输的数据,根据协议类型(如 TCP、UDP)而变化。

三、ARP 协议

.
定义

  • ARP(Address Resolution Protocol)是一种网络协议,用于将网络层地址(如 IPv 4 地址)映射到链路层地址(如 MAC 地址)。在以太网和其他基于 IP 的网络中,ARP 是实现设备间通信的关键。

作用

  • 地址解析:将主机的 IP 地址转换为对应的 MAC 地址,以便在局域网中进行数据包的传输。
  • 设备识别:帮助网络设备识别和定位其他设备,确保数据能够被正确路由到目标设备。

作用原理:

  • ARP 请求:
    当主机想要发送数据到某个 IP 地址,但不知道对应的 MAC 地址时,它会发送一个 ARP 请求。请求内容包括目标 IP 地址和源 IP 地址、源 MAC 地址。
    这个请求是广播的,所有在同一局域网中的设备都会接收到这个请求。
  • ARP 响应:
    网络中的设备检查 ARP 请求中的目标 IP 地址。如果某个设备的 IP 地址与请求中的目标 IP 地址匹配,则该设备会发送一个 ARP 响应,包含其 MAC 地址。
    ARP 响应是单播的,直接发送给发起请求的设备。
  • 更新 ARP 缓存:
    发起请求的设备收到 ARP 响应后,会将目标 IP 地址和对应的 MAC 地址存储在 ARP 缓存中,以便后续使用。
  • 数据传输:
    一旦设备获得目标 MAC 地址,就可以将数据包封装在以太网帧中,通过该 MAC 地址将数据发送到目标设备。
    在这里插入图片描述

在这里插入图片描述

四、ICMP 协议

.
定义:

  • ICMP(Internet Control Message Protocol)是互联网协议套件中的一部分,主要用于网络设备之间传递控制信息和错误消息。它并不用于传输数据,而是用于报告网络问题、进行故障排除和诊断

结构组成:

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


功能:

  1. 确认 IP 包是否成功到达目标地址
  2. 通知在发送过程中 IP 包被丢弃的原因
  • .ICMP 是基于 IP 协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议
  • . ICMP 只能搭配 IPv 4 使用,如果是 IPv 6 的情况下, 需要是用 ICMPv 6

应用:

  1. Ping 是基于 ICMP 的 Echo Request(回显请求) 和 Echo Reply(回显应答) 实现的。

    • Ping 主要用于检测网络连通性,并统计往返时间(RTT, Round Trip Time) 和 TTL(生存时间)。

    • 具体过程:

      • Ping 向目标主机发送 ICMP Echo Request(ICMP 类型 8,代码 0)。
      • 目标主机收到后,回复 ICMP Echo Reply(ICMP 类型 0,代码 0)。
      • 如果收到回复,则说明网络连通,并统计时间和 TTL。
      • 如果没有回复:
        • 可能目标主机不可达。
        • 可能目标主机 ICMP 被禁用。
        • 可能网络丢包。

    ping 没有端口号,因为 ICMP 属于网络层(Layer 3),而端口号只存在于传输层(Layer 4)(如 TCP/UDP)。

  2. Traceroute 也是基于 ICMP(Linux/macOS)或 UDP(Windows) 实现的,目的是追踪数据包经过的路由路径。

    • 具体过程:
      • Traceroute 发送 ICMP Echo Request / UDP 数据包,但每次发送时 TTL 递增。
      • 当数据包 TTL 变为 0 时,路由器丢弃数据包,并返回 ICMP Time Exceeded(类型 11,代码 0)。
      • Traceroute 通过每次 TTL 递增,直到到达目标主机,逐步打印出路径上所有经过的路由器 IP。

五、路由选择协议

.
路由器基础

  • IP 数据报转发过程
  • 接收数据报:路由器通过其网络接口接收一个 IP 数据报。
    - 解析数据报头:路由器检查数据报的头部,提取目的 IP 地址。
    - 查找路由表:根据提取的目的 IP 地址,路由器在路由表中查找匹配的路由条目,以确定最佳的转发路径。
    - 选择下一跳:如果找到匹配的路由条目,路由器确定数据报的下一跳地址和出口接口。如果没有找到匹配,可能会使用默认路由。
    - 更新数据报:在转发之前,路由器可能更新数据报的头部信息,例如 TTL(生存时间)值。
  • 转发数据报:路由器通过选定的出口接口将数据报发送到下一跳路由器或最终目的主机。
  • 完成转发:数据报在网络中继续被转发,直到到达目标地址。
  • 默认路由:默认路由是路由表中用于处理无法匹配的目的地址的特殊路由条目
    • 当路由器接收到一个数据包,其目的 IP 地址不在路由表中时,默认路由指示路由器将该数据包转发到预设的下一跳地址或接口。
    • 默认路由通常被表示为一个特定的路由条目,其目的地址为 0.0.0.0,子网掩码为 0.0.0.0。

路由算法(又叫选路算法,算法的目的是找到一条从源路由器到目的路由器的最佳路径)

  • 分组转发算法
  • 距离向量算法
  • 链路状态算法

分层次路由选择

  • 自治系统(AS):自治系统(Autonomous System,简称 AS)是指在网络中由一个或多个网络运营商管理的 IP 网络集合,对外具有统一的路由策略和管理。每个自治系统在互联网中都有一个唯一的编号,称为 AS 编号(ASN)。
  • IGP 与 EGP 的分层设计:
    • 第一层:IGP 主要负责自治系统内部的路由选择和管理,确保数据在内部网络中高效传输。允许快速收敛和动态调整。
    • 第二层:EGP 负责不同自治系统之间的路由信息交换,管理跨 AS 的数据流动。处理复杂的路由策略和路径选择,确保互联网的稳定性和可靠性。
  • 自治系统之间的路由选择也叫做域间路由选择(interdomain routing),在自治系统内部的路由选择叫做域内路由选择(intradomain routing)

路由协议 (又叫路由选择协议,指定路由器如何相互通信以分发信息使其能够在计算机网络上的节点之间选择路径。)

  • 内部网关协议 (IGP)
    • 内部网关协议主要用于单个自治系统(AS)内部的路由选择,一个 AS 内部可以同时支持运行多种路由协议。常见的内部网关协议包括:
      • RIP (Routing Information Protocol) 路由信息协议:
        • 是一种分布式、基于距离向量的路由选择协议;
        • 要求每一个路由器内部维护一个从它到其他每一个目的网络的距离记录(从路由器到直接相连的网络距离为 1,其余的就是非连接网络路由器数加 1,故也称为跳数);
        • RIP 不能在两个网络之间同时使用多条路由,优先选择路由器最少的路由;
        • 特点:
          • 仅和相邻路由器交换信息;
          • 路由器自己有内部的路由表,即在 AS 中各网络的最短 RIP 距离;
          • 周期性交换(但如果网络拓扑发生变化,路由器要及时向相邻路由器通告拓扑变化后的路由信息,这称为触发更新)
          • 缺:限制网络规模,最大距离为 15 (16 为不可达)、随着网络规模大,开销大、坏消息传播慢,收敛时间长。
        • 种类:
          • RIP 1:
            • 是最早的距离向量路由协议,使用跳数作为度量标准,最大跳数为 15。
            • 不支持子网掩码,所有网络使用相同的网络掩码。
          • RIP 2:
            • 对 RIP 1 的增强,支持 CIDR(无类域间路由)和路由认证。
            • 能够传递更多的路由信息,包括子网掩码,以支持更复杂的网络结构。
      • OSPF (Open Shortest Path First) 开放最短路径优先:
        • OSPF工作原理
          • 链路状态协议:OSPF是链路状态协议,每个路由器维护网络的链路状态数据库(LSDB),用于计算最短路径。
          • 区域划分:OSPF支持将网络划分成多个区域,以减少路由信息的复杂性。所有区域最终汇聚到一个骨干区域(Area 0)。
          • Dijkstra算法:OSPF使用Dijkstra算法计算从路由器到其他所有路由器的最短路径。
        • OSPF的组成部分
          • 路由器类型
            • 内部路由器(Internal Router):所有接口都在同一OSPF区域内。
            • 边界路由器(ABR, Area Border Router):连接多个区域的路由器。
            • 自治系统边界路由器(ASBR, Autonomous System Boundary Router):连接到其他协议(如BGP)的路由器。
          • 区域:OSPF将网络划分为多个区域,不同区域之间通过ABR连接。区域的划分减少了路由计算的复杂性。
        • OSPF数据结构
          • OSPF 不用 UDP 而是直接用 IP 数据报传送。
          • 使用洪泛法发送更新分组。
          • 链路状态广告(LSA)
            • OSPF路由器通过LSA向其他路由器通告其链接状态信息。
            • LSAs包含路由器的接口、成本和状态等信息。
          • 链路状态数据库(LSDB)
            • 每个路由器维护一份LSDB,包含从所有邻居路由器接收到的LSA。
            • LSDB的内容在同一区域内保持一致。
        • OSPF的消息类型
          • Hello消息:用于发现邻居路由器并维持邻接关系。(确定可达性)
          • DB Description消息:用于交换LSDB摘要,帮助路由器了解邻居的数据库状态。(达到数据库同步)
          • Link State Request消息:请求特定LSA的详细信息。(以下代表新情况的同步)
          • Link State Update消息:发送新的LSA或更新现有的LSA。
          • Link State Acknowledgment消息:确认接收到的LSA。
        • 特点:
          • OSPF的优点
            • 快速收敛:OSPF的收敛速度快,适合大型网络。
            • 支持VLSM和CIDR:支持可变长度子网掩码(VLSM)和无类域间路由(CIDR)。
            • 区域划分:通过区域划分,OSPF减少了路由计算的复杂性和路由表的大小。
            • 负载均衡:OSPF支持多路径负载均衡,可以在多个等价路径之间分发流量。
            • 最短路径的度量可以是距离、带宽、价格等;
            • 可以根据 IP 数据报的区分服务字段,为不同种类的数据选择不同路径;
            • 使用洪泛法推送链路状态,某个网络无法访问时,这一信息可以较快更新到其他路由器。
          • OSPF的缺点
            • 复杂性:配置和管理相比RIP等协议更复杂。
            • 内存和CPU使用:对资源的需求较高,尤其是在大型网络中。

应用场景:适用于企业网络、校园网络等单一管理域的环境。

  • 外部网关协议 (EGP)
    • 外部网关协议用于不同自治系统之间的路由选择。最常见的外部网关协议是:
    • BGP
      • 概述
        • 路径向量协议:BGP是一个用于互联网的路径向量协议,主要用于在不同自治系统(AS)之间进行路由选择。
        • 主要路由协议:它是互联网的主要路由协议,支持多个路由选择标准,使不同网络之间能够有效地交换路由信息。
      • BGP的工作原理
        • 自治系统(AS):BGP主要在不同的AS之间工作。每个AS都有一个唯一的编号(AS编号)。
        • 路径向量:BGP路由器维护一个包含可达路径的路由表,每个路径由经过的AS列表组成。BGP使用这些路径信息来选择最佳路由。
        • 路由更新:BGP路由器通过发送BGP更新消息来传播路由信息,包括新增、撤销和修改路由。
      • BGP消息类型
        • OPEN:用于建立BGP连接并交换基本信息。
        • UPDATE:用于通告新路由或撤销现有路由。
        • KEEPALIVE:用于保持BGP会话的活跃。
        • NOTIFICATION:用于报告错误或异常情况。
      • BGP的主要特点
        • 路径选择:BGP使用多种标准(如路径长度、政策等)来选择最佳路径。
        • 策略控制:管理员可以设置路由选择策略,控制路由的传播和接收。
        • 支持CIDR:BGP支持无类域间路由(CIDR),提高了地址空间的使用效率。
        • 可扩展性:BGP可以处理大型网络,适合于互联网规模。
      • BGP 发言人的路由选择过程
        • 建立邻接关系:BGP路由器通过TCP建立连接,并发送OPEN消息。
        • 交换路由信息:一旦建立连接,路由器通过UPDATE消息交换网络可达性信息。
        • 路径选择:根据以下标准选择最佳路径:
          • 最长前缀匹配
          • AS路径长度
          • 本地优先级
          • MED(多出口鉴别标记)
          • 路由来源(IGP、EGP、外部等)
        • 更新路由表:选择最佳路径后,路由器更新其路由表,并将路由信息传播给邻居。
      • BGP路由表的结构
        • 目的网络:目标IP地址范围。
        • 下一跳(Next Hop):到达目的网络的下一跳路由器的IP地址。
        • AS路径:经过的AS列表。
        • 本地优先级:用于路由选择的本地优先级值。
        • MED:用于影响外部路由的选择。
          ![[Pasted image 20250414113748.png]]

适用于互联网服务提供商(ISP)和大型企业网络,涉及多个自治系统

在这里插入图片描述


路由器的构成:

  • 路由选择部分——负责连接不同网络以及根据协议进行路由表构建
  • 分组转发部分:
    • 输入端口
    • 输出端口
    • 交换结构——根据转发表对分组进行处理转发
      • 通过存储器——路由器输入端口接受分组,中断方式通知处理机,然后讲分组复制到存储器,后续就是进行查表转发;
      • 通过总线——直接通过共享总线传到合适输出端口(不需要路由处理器,目前大部分家庭采用)
      • 通过纵横交换结构——在输入端口和输出端口之间设置一个由交叉点组成的网格,每个交叉点都能建立连接。输入端口发来的分组通过控制逻辑控制交叉点的闭合,从而将分组快速地传送到对应的输出端口。这种结构支持多个分组同时转发,适用于高速路由器。

1 这里端口指的是硬件接口,且具备物理层、数据链路层和网络层的处理模块
2 路由表是根据路由选择算法(选择协议)得出,而转发表从路由表中得出
3 分组丢弃——路由器处理分组速率赶不上分组进入输入和输出队列的处理速度,造成队列溢出进而丢弃

六、IPV 6

背景:
IPV 4 :32 位
IPV 6:128 位

IPV 6 数据报组成(两大部分):

  • 基本首部(40 字节)
    • 版本字段——4 位,标明协议版本,此为 6
    • 通信量类——8 位,区分不同 IPV 6 数据报类别或优先级
    • 流标号——20 位,标记同一个流的数据报
    • 有效载荷长度——16 位,所有扩展首部都算在有效载荷之内,最大值位 64 kb
    • 下一个首部——8 位,相当于 ipv 4 的协议字段或可选字段,可以用来指定上层协议和下一个扩展首部的类型
    • 跳数限制——8 位,原为 TTL
    • 源地址——128 位
    • 目的地址——128 位
  • 有效载荷(净载荷)——可以携带多个扩展首部,再后面是数据部分
    • 即 IPV 6 数据报途径路由器不识别该扩展首部,只有在目的或者源地址才进行处理

IPV 6 数据报目的地址类型:

  • 单播:点对点
  • 多播:1 对多点
  • 任播:一组计算机,但数据报只交付给其中应该,通常是距离最近的

IPV 6 将实现 IPV 6 的主机和路由器称为结点。且 ipv 6 地址是分配给结点上的接口,一个接口考研有多个单播地址

![[Pasted image 20250414160028.png|400]]


IPV 6 有多种表示法:

  • 冒号十六进制记法:68 E6:8C 64:FFFF:FFFF:0000:1180:960 A:FFFF
  • 零压缩——在十六进制记法中,允许把数字前面的 0 省略:68 E6:8C 64:FFFF:FFFF:0:1180:960 A:FFFF
  • 点分十进制记法的后缀——冒号十六进制记法可结合使用点分十进制记法的后缀:0:0:0:0:0:0: 128.10.2.1——>: : 128.10.2.1
  • CIDR 的斜线表示法仍然可用: 60 位的网络前缀 12 AB 00000000 CD 3 可记为 12 AB:0000:0000:CD30:0000:0000:0000:0000 /60

从 IPV 4 到 IPV 6 的过渡:

  1. 使用双协议栈——一个主机拥有两个协议栈 IPV 4 和 IPV 6,根据 DNS 返回地址类型选择不同的协议栈
  2. 使用隧道技术——IPV 6 要进 IPV 4 网络,将其封装位 IPV 4,当离开时,再恢复为之前的 IPV 6

  • ICMPv 6:利用 ICMP 反馈 IPV 6 的差错信息
  • ARP 和 IGMP 都合并到 ICMPv 6
  • ICMPv 6 是面向报文的协议,利用报文来报告差错,获取信息,当然其内部也增加了 ND、MLD 等协议

七、多播知识点

背景:

  • D 类 IP 地址专门用于多播,范围是 224.0.0.0239.255.255.255
  • 以太网多播地址是一种特殊的 MAC 地址,用于在局域网中进行多播传输
    关系:IP 地址的最后 23 位映射到以太网多播地址的后 23 位

IP 多播

  • 定义:IP 多播是一种网络传输方式,允许一个源设备将数据同时发送给多个接收设备。与单播(一个对一个)和广播(一个对所有)不同,多播只发送给特定的一组接收者。
  • 地址范围
    • IP 多播使用特定的地址范围,通常是 224.0.0.0239.255.255.255。例如,224.0.0.1 表示所有主机,这样数据可以发送给所有听众。
    • 运行在网络层(Layer 3),通过 IP 地址识别多播组。
    • 适用于跨多个网络(如互联网或广域网)的通信,如视频会议、在线直播等。
  • 特点:
    • 带宽效率:只需发送一次数据包,从而减少网络负担,适合视频会议、在线直播等应用。
    • 多播地址只能用于目的地址,不能用于源地址
    • 多播数据报使用 D 类 IP 做目的地址,且不会产生 ICMP 差错报文
  • 工作流程:
    • 创建多播组:设定多播 IP 地址。
    • 加入多播组:主机通过 IGMP 发送加入请求。
    • 路由器管理:更新多播组成员信息。
    • 发送数据:源设备向多播地址发送数据包。
    • 路由器转发:路由器将数据转发给所有接收主机。
    • 接收数据:主机处理接收到的多播数据。
    • 离开多播组:主机可通过 IGMP 发送离开请求

局域网进行硬件多播

  • 定义:在局域网(LAN)中,硬件多播通过以太网多播 MAC 地址实现。它允许数据包从一个设备发送到多个设备。
  • 多播 MAC 地址
    • 格式:以太网多播 MAC 地址以 01:00:5E 开头,后面的部分由具体的多播组决定。
    • 转换:IP 多播地址的最后 23 位被映射到以太网多播 MAC 地址中。
    • 运行在数据链路层(Layer 2),使用以太网多播 MAC 地址。
    • 更适合局域网(LAN)环境,直接在局域网内的设备间传输数据,如游戏、局域网广播等
  • 工作流程
    1. 发送数据:源设备将数据包发送到特定的多播 MAC 地址。
    2. 交换机转发:支持多播的交换机会将数据包转发给所有订阅该多播地址的设备。
    3. IGMP 的作用:接收设备使用 IGMP 来通知网络它们希望接收哪些多播数据。

IGMP 和多播路由选择协议

  • IGMP Snooping
    • 定义:IGMP Snooping 是网络交换机的一项功能,用于监控网络中的 IGMP 消息,以优化多播流量的转发。
    • 工作原理:
      • 监控 IGMP 消息:交换机监听主机的 IGMP 加入和离开请求,了解哪些主机希望接收特定的多播流。
      • 建立转发表:根据 IGMP 消息,交换机维护一个转发表,仅将多播流量转发给已加入多播组的主机。
    • 优势
      • 减少广播流量:降低网络带宽使用。
      • 提高效率:确保多播数据仅在必要时发送到特定端口。
  • IGMP(互联网组管理协议)
    • 作用:IGMP 是一种用于主机和路由器之间的协议,帮助管理多播组的成员关系。它允许设备加入或离开多播组。
    • 工作机制
      • 加入多播组:当一台主机想要接收某个多播组的数据时,它会发送 IGMP 加入请求。
      • 离开多播组:主机可以发送 IGMP 离开请求,通知路由器它不再需要接收该多播数据。
      • 查询:路由器定期发送 IGMP 查询消息,以检查哪些主机仍然在特定的多播组。
  • 多播路由选择协议
    • 定义:用于在网络中选择传输多播数据的路径。常见的多播路由选择协议包括:
      • PIM(Protocol Independent Multicast):可以在任何单播路由协议的基础上工作,灵活性高。
      • DVMRP(Distance Vector Multicast Routing Protocol):适用于较小的网络,基于距离向量算法。
      • MOSPF(Multicast Open Shortest Path First):扩展了 OSPF 协议,支持多播。
    • 多播路由选择协议在转发多播数据报时使用以下三种方法:
      1. 洪泛(广播)与剪除
        • 在网络中初始发送多播数据包到所有可能的路径,然后根据接收者的反馈剪除不必要的路径。
        • 反向路径转发RBP 是一种用于防洪的技术。在转发多播数据时,路由器会检查接收者的路径是否与发送者的路径相同。如果路径一致,数据包会被转发;如果不一致,数据包则会被丢弃,以防止网络中的冗余流量。
      2. 隧道技术(Tunneling)
        • 通过在单播路由中封装多播数据包,使其在不支持多播的网络中传输。
      3. 基于核心的发现技术
        • 通过核心路由器建立多播树,确保数据高效传输到所有接收者,减少冗余流量

八、MPLS VPN && NAT

  • MPLS VPN
    • 定义:MPLS(多协议标签交换)VPN 是一种通过 MPLS 网络提供虚拟专用网络(VPN)服务的技术。它允许在同一物理网络上为多个客户提供隔离的虚拟网络。
    • 工作原理:
      • 标签交换:使用标签代替传统的 IP 地址进行数据包转发,提高转发效率。
      • 虚拟路由器:每个 VPN 拥有独立的虚拟路由器,确保数据隔离。
      • 隧道技术:通过 MPLS 隧道在不同的站点之间传输数据,确保安全性和数据完整性。
    • 优势
      • 流量工程:能够优化网络资源利用,提高带宽效率。
      • 安全性:提供数据隔离,保护客户数据。
      • 灵活性:支持不同类型的服务(如数据、语音、视频)。

  • NAT(网络地址转换)
    • 定义:NAT 是一种网络技术,用于将私有 IP 地址转换为公共 IP 地址,从而允许多个设备共享一个公共 IP 地址,连接到互联网。
    • 工作原理
      • 地址转换:当内部设备发送数据包到外部网络时,NAT 会将其私有 IP 地址替换为公共 IP 地址,并记录连接状态。
      • 反向转换:当外部响应返回时,NAT 将公共 IP 地址转换回相应的私有 IP 地址。
    • 类型
      • 静态 NAT:将一个私有 IP 地址映射到一个公共 IP 地址。
      • 动态 NAT:将私有 IP 地址映射到公共 IP 地址池中的任意地址。
      • PAT(端口地址转换):多个私有 IP 地址共享一个公共 IP 地址,通过不同的端口进行区分。
    • 优势
      • 节省 IP 地址:通过共享公共 IP 地址,节省了可用 IP 地址。
      • 增强安全性:隐藏内部网络结构,防止直接访问内部设备。

相关文章:

计算机网络(第四章)

网络层 一、网络层提供的两种服务 虚电路 :虚电路是一种在通信开始之前建立连接的方式。它类似于电话通话,双方在通话前要建立连接;数据报 :数据报是一种无连接的通信方式。每个数据包(数据报)独立地发送…...

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接PHP

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…...

Java学习——day30(Lambda表达式与 StreamAPI)

文章目录 1. Lambda 表达式1.1 概述1.2 应用场景1.3 示例代码 2. Stream API2.1 概述2.2 基本组成2.3 示例代码 3.练习3.1 .练习初级:3.2 中级:3.3 高级: 4.总结与应用4.1 Lambda 表达式4.2 Stream API 1. Lambda 表达式 1.1 概述 定义&…...

mysql no space left on device

文章目录 1. 查看磁盘使用情况2. 清理 /tmp 目录3. 调整 MySQL 临时文件目录4. 增加磁盘空间5. 优化数据库操作 我在执行 MySQL 的 UPDATE 语句时遇到 error writing file /tmp/*** no space left on device 错误,这表明 MySQL 临时文件存储目录 /tmp 空间不足。以下…...

异步编程——微信小程序

1. 前言 引用来自:微信小程序开发中的多线程处理与异步编程_微信小程序 多线程-CSDN博客 微信小程序是基于JavaScript开发的,与浏览器JavaScript不同,小程序运行在WebView内部,没有多线程的概念。小程序的 JavaScript 是单线程的…...

聊透多线程编程-线程池-8.C# 线程互斥实现方式

目录 1. 锁机制 (Locking Mechanisms) (1) lock 关键字 (2) Monitor 类 2. 跨进程互斥机制 3. 信号量机制 (1) Semaphore 和 SemaphoreSlim 4. 读写锁机制 (1) ReaderWriterLockSlim 5. 原子操作机制 (1) Interlocked 类 6. 自旋锁机制 (1) SpinLock 线程互斥是一种…...

渗透测试学习-概述

1.渗透测试 渗透测试( Penetration Testing )是指受信任的第三方通过模拟黑客的攻击技术与手段对目标网络、系统进行攻击测试,发现目标的安全隐患并给出安全加固建议的一种安全测试与评估方法。 具体来讲,渗透人员在不同的位置(…...

一键解锁Landsat 9地表温度计算!ENVI与ArcGIS Pro全流程详解(无需NASA大气校正)

为什么选择Landsat 9的L2SP数据? 之前:《ArcGIS与ENVI——基于landsat与Modis影像的遥感技术的生态环境质量评价》,基于Landsat前期的产品计算温度反演数据需要一系列复杂的步骤。 现在: Landsat 8-9的Collection 2 Level-2&…...

线代第七课:范德蒙德压缩

比如: 解析: 观看笔记来源: 《线性代数》教学视频 宋浩老师(2024年更新)...

Spark-SQL(一)

Spark SQL 概述 Spark SQL是Apache Spark用于处理结构化数据的模块 特点 1 易整合。无缝的整合了 SQL 查询和 Spark 编程 2 统一的数据访问。使用相同的方式连接不同的数据源 3 兼容 Hive。在已有的仓库上直接运行 SQL 或者 HQL 4 标准数据连接。通过 JDBC 或者 ODBC 来连…...

(自用)window防火墙关闭

自己老师忘了怎么关防火墙,导致每次都要重新找一遍,再下软件,所以写这篇 把这个地方打开可以看到被隔离的软件,然后点击还原即可使用了...

楼宇自控为建筑带来生机,具体表现在哪些方面?

在现代建筑领域,楼宇自控系统宛如一股清新的春风,为建筑赋予了蓬勃的生机与活力,从根本上改变了传统建筑的运行模式,使其朝着高效、智能、舒适的方向大步迈进。那么,楼宇自控究竟在哪些方面为建筑带来了如此显著的变化…...

asp.net Kestrel 和iis区别

Kestrel 和 IIS 都是用于托管 Web 应用程序的服务器,不过它们在多个方面存在显著差异,下面为你详细分析: 1. 所属平台与跨平台能力 Kestrel:是.NET Core 及后续版本的一部分,具备跨平台特性,可在 Windows…...

[原创](Modern C++)现代C++的关键性概念: 优雅地使用现代for循环语句

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

【第42节】windows双机调试环境搭建和SEH原理剖析

目录 一、windows双机调试环境 1.1 双机调试是什么 1.2 准备工作 1.3 配置步骤 1.3.1 安装 VirtualKD 1.3.2 将target文件夹拷贝到虚拟机 1.3.3 在主机上使用vmmon64.exe监控虚拟机 二、SEH 原理剖析 2.1 TEB 与 FS 概述 2.2 手工注册 SEH 一、windows双机调试环境 …...

一文读懂WPF系列之控件模版数据模板

WPF控件模版数据模板 控件模板(ControlTemplate)定义方式内联定义(直接写在ListBox中)资源字典中定义定义方式区别 TemplateBinding 用法对比普通Binding的区别常见误区何时使用 数据模板(DataTemplate)定义…...

Java设计模式实战:装饰模式在星巴克咖啡系统中的应用

一、装饰模式简介 装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前…...

L2TP实验(无图后补)

拓扑图 一、搭建拓扑并配置基础 IP 地址 设备选型与拓扑搭建:在 eNSP 中,拖入所需设备,包括 LAC(L2TP Access Concentrator,L2TP 接入集中器 )、LNS(L2TP Network Server,L2TP 网络服…...

AT_abc398_e [ABC398E] Tree Game 题解

题目传送门 题目大意 题目描述 本题是一道交互题(你的程序需要通过输入输出与评测系统进行交互)。 给定一棵包含 N N N 个顶点的树 G G G,顶点编号为 1 1 1 至 N N N。第 i i i 条边连接顶点 U i U_i Ui​ 和 V i V_i Vi​。 你和…...

使用SVM对心脏数据是否患病进行分类预测

作者简介 杜嘉宝,男,西安工程大学电子信息学院,2024级研究生 研究方向:变压器故障预警与检测 电子邮件:djb857497378gmail.com 王子谦,男,西安工程大学电子信息学院,2024级研究生&a…...

作业帮前端面试题及参考答案 (100道面试题-上)

HTML5 的优势是什么? HTML5 作为 HTML 语言的新一代标准,具有众多显著优势,为现代网页开发带来了诸多便利与革新。 在语义化方面,HTML5 引入了大量具有明确语义的标签,如<header>、<nav>、<article>、<section>、<aside>、<footer>等…...

docker部署GPUStack【Nvidia版本】

以下是使用 Docker 部署 GPUStack 的步骤和注意事项 参考文章&#xff1a;https://docs.gpustack.ai/latest/installation/docker-installation/ 1. 前置条件 安装 Docker&#xff1a;确保已安装 Docker 引擎&#xff08;建议最新稳定版&#xff09;。NVIDIA 环境支持&#x…...

处理Long类型长度超长导致前端精度丢失问题

1&#xff0c;问题场景 后端返回的Long类型的数据&#xff0c;超10000000000000000&#xff0c;前端处理的时候&#xff0c;数据被截断了。比如tchId: 11073477511443988481&#xff0c; 前端根据tchId获取下一环节信息的时候&#xff0c;传的tchId变成了11073477511443988400&…...

突破亚马逊壁垒,Web Unlocker API 助您轻松获取数据

目录 一、Web Unlocker API简介二、开始使用Web Unlocker API1、首先进入控制台页面&#xff0c;点击左侧第一个tab键“代理 & 抓取基础设施”&#xff0c;找到“网页解锁器”&#xff0c;开始使用。2、进入网页解锁器页面后&#xff0c;填写通道名称&#xff0c;添加简短描…...

工业环境中的安全利器:如何挑选优质安全工具柜

工业生产的复杂环境里&#xff0c;安全工具柜可绝不是个简单的 “储物箱”&#xff0c;它是保障生产安全、提升工作效率的秘密武器。不管是电力维修车间里琳琅满目的绝缘工具&#xff0c;还是化工实验室里的精密仪器&#xff0c;安全工具柜都肩负着妥善收纳、保护的重任。那到底…...

UNITY 屏幕UI自适应

1.主要就是根据屏幕的选择根据尺寸 和UI的锚点和中心点来选择&#xff0c;也可以通过代码来动态修改 2.参考视频&#xff1a;Unity UGUI屏幕自适应看这个就够了_哔哩哔哩_bilibili...

【Linux】VIM 编辑器,编辑加速引擎

目录 vim中的五种常见模式介绍VIM的基本操作安装VIMVIM中的模式切换 VIM指令集命令模式指令集底行模式指令集视图模式指令集替换和插入模式 end vim中的五种常见模式介绍 正常/普通/命令模式【Normal mode】 控制屏幕光标的移动&#xff0c;字符、字或行的删除&#xff0c;移动…...

【vue】class和styles绑定

一、 用来控制样式是否展示 二、style 行内样式 三、自定义属性绑定...

route

1、 传统web应用vs单页面web应用 1.1、传统web应用 传统web应用&#xff0c;又叫做多页面web应用&#xff1a;核心是一个web站点由多个HTML页面组成&#xff0c;点击时完成页面的切换&#xff0c;因为是切换到新的HTML页面上&#xff0c;所以当前页面会全部刷新。 1.2、单页…...

设备监控---保障企业IT基础设施稳定运行

引言 在数字化转型的今天&#xff0c;企业的IT基础设施规模不断扩大&#xff0c;网络设备、服务器、存储系统、云资源等构成了复杂的IT环境。如何确保这些设备的高效运行&#xff0c;及时发现并解决潜在问题&#xff0c;成为IT运维团队的核心任务。设备监控---作为IT运维的基础…...

牙科CAD技术方案

本牙科CAD系统旨在打造一个数字化牙科设计的高性能CAD/CAM软件&#xff0c;提供从修复体设计&#xff08;如牙冠、牙桥、贴面、活动义齿&#xff09;到生产准备的全流程解决方案。系统整合多源数据&#xff08;口内扫描、DICOM文件、颌骨运动数据等&#xff09;实现精准设计&am…...

Shell编程之循环语句

目录 for循环语句 for语句的结构 for语句应用示例 根据姓名列表批量添加用户 根据IP地址列表检查主机状态 使用while循环语句 while语句的结构 while语句应用示例 批量添加规则编号的用户 猜价格游戏 until循环语句 until语句的结构 until语句应用示例 计算1-50的…...

ECMAScript 11 新特性

ECMAScript 11 新特性 ECMAScript 6 新特性&#xff08;一&#xff09; ECMAScript 6 新特性&#xff08;二&#xff09; ECMAScript 7~10 新特性 ECMAScript 11 新特性&#xff08;本文&#xff09; 1. 私有属性 在类的内部&#xff0c;通过在属性前添加 # 来表示私有属性。 …...

恶意外联情况监测-火绒、DNSLookupView(联网、禁用网卡、仅主机模式请求测试)

恶意外联情况监测-火绒、DNSLookupView(联网、断网、仅主机模式时的请求测试) 结论: 联网时&#xff1a; wireshark、火绒捕获 域名请求、IP请求 DNSLookupView捕获域名请求&#xff0c;无法捕获IP请求 禁用网卡时: 仅DNSLookupView捕获域名请求&#xff0c;无法捕获IP请求。…...

顺序表与Myarraylist

对于所有编程语言来说&#xff0c;数据结构都是精华 一个计算机程序数据结构算法&#xff1b; 我在之前的博客中写了关于集合框架与泛型&#xff0c;这就是数据结构的开始&#xff0c;我今天说的便是数据结构的第一个线性数据结构--顺序表 顺序表是一种线性数据结构&#xf…...

Redis 版本变更的变化

Redis 版本变更的变化 以下是 Redis 主要版本的清单及其核心功能变化的梳理&#xff0c;按时间顺序整理关键版本演进 8版本没有整理&#xff1a; Redis 1.0 (2009) 初始版本&#xff1a;发布首个稳定版本&#xff0c;支持基本键值存储。 核心特性&#xff1a; 支持字符串&…...

kubernetes》》k8s》》ConfigMap 、Secret

configmap官网 ConfigMap是一种 API 对象&#xff0c;使用时&#xff0c; Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap将配置和Pod解耦&#xff0c;更易于配置文件的更改和管理。ConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是机密的…...

【React】基本语法

基本语法 通过jsx的语法可以在js中写html函数组件 / class组件的语法、父子组件传参、事件react 生命周期根据状态(数据)动态渲染组件 / 列表渲染 / 表单渲染class组件中的ref、ref回调函数 什么是react &#xff1f; 用于构建用户界面的 JavaScript 库&#xff0c;主要用于构建…...

ubunut24.04 bash和zsh同时使用conda

文章目录 ubunut24.04 bash和zsh同时使用conda功能一、安装miniconda3二、bash中初始化conda以及安装命令补全1. bash中初始化conda2. bash中安装conda命令补全功能 三、zsh中初始化conda以及安装命令补全1. zsh中初始化conda2. zsh中安装conda命令补全功能3. 在~/.zshrc文件中…...

深度学习入门:神经网络

目录 1. 从感知机到神经网络1.1 神经网络的例子1.2 复习感知机1.3 激活函数登场 2 激活函数2.1 sigmoid函数2.2 阶跃函数的实现2.3 阶跃函数的图形2.4 sigmoid函数的实现2.5 sigmoid函数和阶跃函数的比较2.6 非线性函数2.7 ReLU函数 3 多维数组的运算3.1 多维数组 恒等函数soft…...

Unity有限制状态机FSM

我是标题 前言有限制状态机框架框架图&#xff1a;主要代码&#xff1a; 前言 一般的小型游戏的状态机会使用一个枚举类来枚举所有的状态&#xff0c;然后使用一个switch case来处理所有状态的行为逻辑&#xff0c;但是用这种方式会形成大量的冗余&#xff0c;因为所有的行为逻…...

bash的特性-命令和文件自动补全

在Linux或Unix操作系统中&#xff0c;Bash&#xff08;Bourne Again SHell&#xff09;是最常用的命令行解释器之一。它提供了丰富的功能来提升用户的交互体验&#xff0c;其中命令和文件名的自动补全是提高效率的一大利器。本文将详细介绍Bash中的自动补全功能&#xff0c;包括…...

聊聊价值投资

投资的必要性 如果手上现在有10w元&#xff0c;投资时间是50年&#xff0c;就算年化收益率只有15%&#xff0c;最终的财富值也会超过1亿元。而且通货膨胀会让你的存款购买力越来越少&#xff0c;如果你有无法及时花出去的钱&#xff0c;投资是必要的。05年的时候我家楼下的包子…...

ADI的BF561双核DSP怎么做开发,我来说一说(十六)触摸屏的设计

作者的话 ADI的双核DSP&#xff0c;最早的一颗是Blackfin系列的BF561&#xff0c;这颗DSP我用了很久&#xff0c;比较熟悉&#xff0c;且写过一些给新手的教程。 硬件准备 ADZS-BF561-EZKIT开发板&#xff1a;ADI原厂评估板 AD-ICE20000仿真器&#xff1a;ADI现阶段性能最好…...

基于labview的2PSK调制与解调

前面板如上图所示。 以上为产生随机序列的程序 以上为星座图程序 如需要源代码可联系我...

2021-11-01 C++输入十个数求最大最小和第二大第二小的值

缘由c语言输入十个数求最大最小和第二大第二小的值-编程语言-CSDN问答 这是个有意思的题目&#xff0c;考虑可扩展...如果是4个元素的数组&#xff0c;实现O&#xff08;N&#xff09;排序 void 输入十个数求最大最小和第二大第二小的值() {//缘由https://ask.csdn.net/ques…...

红人矩阵化运营策略:2025跨境电商如何高效布局海外红人营销

在全球社交媒体营销日益精细化的今天&#xff0c;跨境电商品牌正从单一红人合作转向系统化、团队化的“红人矩阵化运营”。尤其在TikTok、Instagram、YouTube等主流平台逐渐成熟的背景下&#xff0c;如何构建高效的海外红人营销矩阵&#xff0c;成为品牌实现全域曝光与精准转化…...

c# Kestrel

Kestrel 是 .NET 中用于 ASP.NET Core 应用程序的跨平台 Web 服务器。它是轻量级且高性能的&#xff0c;能够处理大量并发连接&#xff0c;常被用作 ASP.NET Core 应用的默认服务器。以下为你介绍 Kestrel 的基本使用和配置&#xff1a; 基本使用 创建一个简单的 ASP.NET Cor…...

算法训练之贪心

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

ThreeJs实现裸眼3D地球仪

一、实现效果 使用Three.js实现裸眼3D地球仪 二、实现代码 代码如下&#xff1a; <!DOCTYPE html> <html> <head><title>3D Earth</title><style>body { margin: 0; }canvas { display: block; }</style> </head> <body…...