网络层协议

2025年3月17日 | 阅读 7 分钟

TCP/IP 支持以下协议

ARP

  • ARP 代表地址解析协议。
  • 它用于将 IP 地址与 MAC 地址关联起来。
  • 网络上的每个设备都通过网卡上刻印的 MAC 地址识别。因此,我们可以说设备需要 MAC 地址才能在局域网内进行通信。MAC 地址可以轻易更改。例如,如果某台机器上的网卡出现故障,MAC 地址会更改,但 IP 地址不会更改。ARP 用于在已知互联网地址时查找节点的 MAC 地址。

注意:MAC 地址:MAC 地址用于识别实际设备。
IP 地址:它是用于在网络上定位设备的地址。

ARP 的工作原理

如果主机想知道其网络上另一个主机的物理地址,它会发送一个包含 IP 地址的 ARP 查询包,并将其广播到网络上。网络上的每个主机都会接收并处理 ARP 包,但只有预期的接收方会识别该 IP 地址并返回物理地址。持有数据报的主机将物理地址添加到缓存内存和数据报头中,然后发送回发送方。

Network Layer Protocols

ARP 协议采取的步骤

如果设备想与另一个设备通信,设备会采取以下步骤

  • 设备会首先查看其互联网列表(称为 ARP 缓存),检查 IP 地址是否包含匹配的 MAC 地址。它会通过在命令提示符中使用命令 arp -a 来检查 ARP 缓存。
Network Layer Protocols
  • 如果 ARP 缓存为空,则设备会向整个网络广播消息,询问每个设备匹配的 MAC 地址。
  • 拥有匹配 IP 地址的设备将回复发送方其 MAC 地址
  • 一旦设备收到 MAC 地址,两个设备之间就可以进行通信。
  • 如果设备收到 MAC 地址,则 MAC 地址会存储在 ARP 缓存中。我们可以通过在命令提示符中使用命令 arp -a 来检查 ARP 缓存。
Network Layer Protocols

注意:ARP 缓存用于提高网络效率。

在上面的截图中,我们观察到 IP 地址与 MAC 地址的关联。

ARP 条目有两种类型

  • 动态条目:它是在发送方向整个网络广播其消息时自动创建的条目。动态条目不是永久性的,它们会定期删除。
  • 静态条目:它是通过使用 ARP 命令工具手动输入 IP 到 MAC 地址关联的条目。

RARP

  • RARP 代表 反向地址解析协议
  • 如果主机想知道其 IP 地址,它会将其包含物理地址的 RARP 查询包广播到整个网络。网络上的 RARP 服务器会识别 RARP 包并回复主机 IP 地址。
  • 用于从服务器获取 IP 地址的协议称为 反向地址解析协议
  • RARP 协议的消息格式与 ARP 协议类似。
  • 与 ARP 帧一样,RARP 帧从一台机器发送到另一台机器,封装在帧的数据部分。
Network Layer Protocols

ICMP

  • ICMP 代表互联网控制消息协议。
  • ICMP 是一种网络层协议,由主机和路由器用于将 IP 数据报问题通知返回给发送方。
  • ICMP 使用回显测试/回复来检查目的地是否可达和响应。
  • ICMP 处理控制消息和错误消息,但其主要功能是报告错误而不是纠正错误。
  • IP 数据报包含源地址和目的地址,但它不知道它经过的上一个路由器的地址。因此,ICMP 只能将消息发送给源,而不能发送给即时路由器。
  • ICMP 协议将错误消息传达给发送方。ICMP 消息导致错误返回给用户进程。
  • ICMP 消息在 IP 数据报中传输。
Network Layer Protocols

ICMP 消息的格式

Network Layer Protocols
  • 第一个字段指定消息的类型。
  • 第二个字段指定特定消息类型的原因。
  • 校验和字段覆盖整个 ICMP 消息。

错误报告

ICMP 协议向发送方报告错误消息。

ICMP 协议处理五种类型的错误

  • 目标不可达
  • 源抑制
  • 时间超时
  • 参数问题
  • 重定向
Network Layer Protocols
  • 目标不可达:当目标无法到达或数据包被丢弃时,从接收方发送到发送方的“目标不可达”消息。
  • 源抑制:源抑制消息的目的是拥塞控制。该消息从拥塞路由器发送到源主机以降低传输速率。ICMP 将获取被丢弃的数据包的 IP,然后将源抑制消息添加到 IP 数据报中,以通知源主机降低其传输速率。源主机将降低传输速率,从而使路由器免于拥塞。
  • 时间超时:时间超时也称为“生存时间”。它是一个参数,定义数据包在被丢弃之前应该存活多久。

有两种情况下会生成时间超时消息

有时数据包由于错误的路由实现而被丢弃,这会导致循环问题和网络拥塞。由于循环问题,TTL 的值会持续递减,当它达到零时,路由器会丢弃数据报。但是,当路由器丢弃数据报时,路由器会向源主机发送时间超时消息。

当目的主机在特定时间内未收到所有分片时,已收到的分片也会被丢弃,并且目的主机向源主机发送时间超时消息。

  • 参数问题:当路由器或主机在 IP 数据报中发现任何缺失值时,路由器会丢弃数据报,并将“参数问题”消息发送回源主机。
  • 重定向:当主机包含小型路由表时会生成重定向消息。当主机包含有限数量的条目导致它将数据报发送到错误的路由器时。接收数据报的路由器会将数据报转发到正确的路由器,并向主机发送“重定向消息”以更新其路由表。

IGMP

  • IGMP 代表 互联网组管理协议
  • IP 协议支持两种类型的通信
    • 单播:它是一种发送方和接收方之间的一对一通信。因此,我们可以说它是一对一通信。
    • 多播:有时发送方想同时向大量接收方发送相同的消息。这个过程称为多播,它具有一对多通信。
  • IGMP 协议由主机和路由器用于支持多播。
  • IGMP 协议由主机和路由器用于识别局域网中属于某个组的主机。
Network Layer Protocols
  • IGMP 是 IP 层的一部分,并且 IGMP 具有固定大小的消息。
  • IGMP 消息封装在 IP 数据报中。
Network Layer Protocols

IGMP 消息的格式

Network Layer Protocols

其中,

类型:它决定 IGMP 消息的类型。IGMP 消息有三种类型:组成员查询、组成员报告和离开组报告。

最大响应时间:此字段仅由组成员查询消息使用。它确定主机可以发送组成员报告消息以响应组成员查询消息的最长时间。

校验和:它确定封装 IGMP 消息的 IP 数据报的整个有效载荷。

组地址:此字段的行为取决于发送的消息类型。

  • 对于组成员查询,对于通用查询,组地址设置为零;对于特定查询,组地址设置为多播组地址。
  • 对于组成员报告,组地址设置为多播组地址。
  • 对于离开组,它设置为多播组地址。

IGMP 消息

Network Layer Protocols
  • 组成员查询消息
    • 此消息由路由器发送到局域网上的所有主机,以确定主机已加入的所有多播组的集合。
    • 它还确定附加接口上的主机是否已加入特定的多播组。
    • 查询中的组地址为零,因为路由器期望每个包含一个或多个成员的组从主机收到一个响应。
  • 组成员报告消息
    • 主机用组成员报告消息响应组成员查询消息。
    • 组成员报告消息也可以由主机生成,当主机想加入多播组而不等待来自路由器的组成员查询消息时。
    • 组成员报告消息由路由器以及附加接口上的所有主机接收。
    • 每个组成员报告消息都包含主机想要加入的单个组的多播地址。
    • IGMP 协议不关心哪个主机加入了该组,也不关心单个组中有多少主机。它只关心一个或多个附加主机是否属于单个多播组。
    • 路由器发送的组成员查询消息还包括一个“最大响应时间”。在收到组成员查询消息并发送组成员报告消息之前,主机会在 0 到最大响应时间之间的随机时间内等待。如果主机观察到其他附加主机已发送“最大报告消息”,则它会丢弃其“最大报告消息”,因为它知道附加路由器已经知道一个或多个主机已加入单个多播组。这个过程称为反馈抑制。它提供了性能优化,从而避免了不必要的“组成员报告消息”传输。
  • 离开组报告
    当主机不发送“组成员报告消息”时,这意味着主机已离开该组。主机知道该组中没有成员,因此即使它收到下一个查询,它也不会报告该组。
下一主题路由算法