ARP RIP OSPF BGP DHCP以及其他计算机网络当中的通信过程和广播帧单播帧的整理

一、 协议详解:通信过程与帧类型分析

1. ARP (Address Resolution Protocol) - 地址解析协议
  • 核心功能 :在同一个局域网内,根据一个已知的IP地址,找出其对应的MAC地址。

  • 所属层次:数据链路层与网络层之间。ARP请求/响应报文封装在以太网帧中,不经过路由器。

  • 详细通信过程

    1. 触发 :主机A(IP: 192.168.1.10)想给主机B(IP: 192.168.1.20)发送数据。A首先检查自己的ARP缓存表,看是否已经有192.168.1.20对应的MAC地址。

    2. 缓存未命中:如果缓存中没有,主机A需要发起ARP请求。

    3. 构建ARP请求 :A构建一个ARP请求包,内容是:"谁的IP地址是 192.168.1.20?请告诉 192.168.1.10。"

    4. 封装ARP请求帧 (广播)

      • A将这个ARP请求包放入一个以太网帧中。

      • 源MAC地址:主机A的MAC地址。

      • 目的MAC地址广播地址 FF-FF-FF-FF-FF-FF

    5. 发送与接收:交换机收到这个广播帧后,会将其泛洪(Flooding)到除源端口外的所有端口。因此,该局域网内的所有主机都会收到这个ARP请求。

    6. 处理请求:所有主机检查ARP请求包中的目标IP地址。只有主机B发现这个IP是自己的,其他主机则丢弃该包。

    7. 构建ARP响应 (单播)

      • 主机B构建一个ARP响应包,内容是:"我是 192.168.1.20,我的MAC地址是 MAC_B。"

      • B将响应包放入以太网帧。

      • 源MAC地址:主机B的MAC地址 MAC_B

      • 目的MAC地址 :主机A的MAC地址 MAC_A(这个地址在A的请求包里已经告诉B了)。这是一个单播帧

    8. 缓存更新 :主机A收到ARP响应后,就知道了192.168.1.20对应的MAC地址是MAC_B,并将其存入自己的ARP缓存表,以备后用。

  • 帧类型总结

    • ARP请求:广播 (因为不知道对方的物理位置,只能"吼一嗓子")。

    • ARP响应:单播 (因为请求方已经自报家门,可以"私聊"回复)。

2. DHCP (Dynamic Host Configuration Protocol) - 动态主机配置协议
  • 核心功能:为网络中的主机自动分配IP地址、子网掩码、默认网关、DNS服务器等信息。

  • 所属层次:应用层,使用UDP协议(客户端端口68,服务器端口67)。

  • 详细通信过程 (DORA)

    1. Discover (发现)

      • 一台新主机(客户端)接入网络,它没有任何IP配置。

      • 它发送一个DHCP Discover报文,意为:"我是新来的,网络里有DHCP服务器吗?"

      • 这个报文被封装在UDP -> IP -> 以太网帧中。

      • 源IP : 0.0.0.0 (因为自己没有IP)

      • 目的IP : 255.255.255.255 (广播)

      • 目的MAC : FF-FF-FF-FF-FF-FF (广播)

    2. Offer (提供)

      • 局域网中的DHCP服务器收到Discover报文后,从地址池中选择一个可用的IP地址。

      • 服务器发送一个DHCP Offer报文给客户端,意为:"我这里有个IP地址 192.168.1.100,你要不要?"

      • 这个报文的目的MAC地址通常也是广播,因为此时客户端还没有一个正式绑定的IP地址。

    3. Request (请求)

      • 客户端可能收到多个DHCP服务器的Offer。它选择其中一个(通常是第一个到达的)。

      • 然后发送一个DHCP Request报文,意为:"所有服务器请注意,我决定接受 192.168.1.100 这个地址。"

      • 这个报文同样是广播发送,目的是为了通知所有DHCP服务器(包括那些未被选中的),告知它们自己的选择。

    4. Acknowledge (确认)

      • 被选中的DHCP服务器收到Request报文后,将这个IP地址与客户端的MAC地址绑定,并设定一个租期。

      • 服务器发送一个DHCP ACK报文给客户端,意为:"好的,192.168.1.100 正式分配给你了,租期是X小时。"

      • 这个报文也通常是广播发送。至此,客户端才算真正获得了IP地址并可以使用网络。

  • 帧类型总结 :DHCP的主要交互过程(DORA)基本上都是广播,因为通信的发起方(客户端)在初始阶段没有一个可用于单播通信的IP地址。

3. RIP (Routing Information Protocol) - 路由信息协议
  • 核心功能 :一种内部网关协议(IGP),用于在小型网络中动态发现路由。基于距离向量算法,使用"跳数"作为度量值。

  • 所属层次:应用层,使用UDP协议(端口520)。

  • 详细通信过程

    1. 周期性更新:每个运行RIP的路由器会周期性地(如每30秒)将其完整的路由表信息打包成一个RIP响应报文。

    2. 发送更新:路由器将这个响应报文发送给所有直连的邻居路由器。

    3. 版本差异

      • RIPv1 : 将更新报文发送到IP广播 地址 255.255.255.255。网络中所有设备(包括非路由器的主机)都会收到,但只有RIP路由器会处理。

      • RIPv2 : 进行了优化,将更新报文发送到多播 地址 224.0.0.9。只有运行RIPv2的路由器会监听这个多播组,减少了对非路由器设备的干扰。

    4. 路由计算:收到邻居发来的路由表后,路由器根据贝尔曼-福特算法,比较和更新自己的路由表。如果从邻居那里学到一条去往某网络的路,跳数更少,就更新自己的路由表,并将下一跳指向该邻居。

  • 帧类型总结

    • RIPv1: 广播

    • RIPv2: 多播

4. OSPF (Open Shortest Path First) - 开放最短路径优先
  • 核心功能 :一种内部网关协议(IGP),用于大中型企业网络。基于链路状态算法。

  • 所属层次:网络层。OSPF报文直接封装在IP包中(协议号89),不使用TCP或UDP。

  • 详细通信过程

    1. 建立邻居关系 (Hello)

      • 路由器启动OSPF后,会向224.0.0.5(所有OSPF路由器)这个多播地址周期性地发送Hello包。

      • 直连的路由器收到Hello包后,会建立邻居关系。

    2. 建立邻接关系与同步数据库

      • 邻居之间会通过交换数据库描述(DBD)包来比对各自的链路状态数据库(LSDB)是否同步。这个过程通常是单播的。
    3. 传播链路状态信息 (LSA)

      • 每个路由器都会创建描述自己直连接口状态的链路状态通告(LSA)

      • 当网络状态发生变化(如链路断开或新链路加入),路由器会立即将更新后的LSA多播出去,这个过程称为"泛洪"。

      • 收到LSA的路由器会将其存入自己的LSDB,并继续转发给其他邻居。

    4. 计算最短路径:当LSDB稳定后,区域内的所有路由器都拥有了完全相同的"网络地图"。每个路由器独立地运行Dijkstra(SPF)算法,计算出以自己为根的、到达所有目的地的最短路径树。

  • 帧类型总结 :OSPF主要使用多播224.0.0.5224.0.0.6)来发现邻居和泛洪LSA,辅以单播 进行数据库同步和确认。不使用广播

5. BGP (Border Gateway Protocol) - 边界网关协议
  • 核心功能 :一种外部网关协议(EGP),用于在不同的自治系统(AS,如不同的ISP)之间交换路由信息。是整个互联网的"粘合剂",基于路径向量算法。

  • 所属层次 :应用层,使用TCP协议(端口179)来保证可靠传输。

  • 详细通信过程

    1. 建立TCP连接 :BGP路由器(对等体Peers)之间通过网络管理员手动配置,建立一个TCP连接。这个连接可以是直连的(iBGP),也可以是跨越多个路由器的(eBGP)。

    2. 交换路由信息

      • TCP连接建立后,对等体之间首先交换完整的BGP路由表。

      • 之后,只在网络路由发生变化时,才发送增量的Update报文。

    3. 基于策略的路由:BGP的Update报文中不仅包含网络前缀,还包含大量的路径属性(Path Attributes),如AS-PATH(经过的AS列表)。路由器根据这些属性和预先配置的策略来选择最佳路由,而不仅仅是根据"最短"路径。

    4. 维持连接:对等体之间通过周期性地发送Keepalive报文来确认TCP连接是否正常。

  • 帧类型总结 :BGP的所有通信都发生在两个对等体之间建立的可靠TCP连接上,因此,所有BGP报文都是单播 的。BGP不使用广播或多播


三、 综合整理与对比

协议 核心功能 所属层次 传输协议 主要通信方式
ARP 同局域网内,IP -> MAC地址解析 数据链路/网络层 无(直接封装) 请求(广播) , 响应(单播)
DHCP 自动分配IP地址等网络配置 应用层 UDP 广播 (DORA过程)
RIP 小型网络内部路由(距离向量) 应用层 UDP v1:广播 , v2:多播
OSPF 大中型网络内部路由(链路状态) 网络层 无(直接封装) 多播 为主, 单播为辅
BGP 自治系统(AS)之间路由(路径向量) 应用层 TCP 单播
相关推荐
刃神太酷啦2 小时前
Linux 底层核心精讲:环境变量、命令行参数与程序地址空间全解析----《Hello Linux!》(7)
linux·运维·服务器·c语言·c++·chrome·算法
前端小L2 小时前
贪心算法专题(五):覆盖范围的艺术——「跳跃游戏」
数据结构·算法·游戏·贪心算法
前端小L2 小时前
贪心算法专题(六):步步为营的极速狂飙——「跳跃游戏 II」
算法·游戏·贪心算法
天呐草莓2 小时前
后端开发学习教程
学习
秦苒&2 小时前
【C语言】字符函数和字符串函数:字符分类函数 、字符转换函数 、 strlen 、strcpy、 strcat、strcmp的使用和模拟实现
c语言·开发语言
小白学大数据2 小时前
Python 网络爬虫:Scrapy 解析汽车之家报价与评测
开发语言·爬虫·python·scrapy
-Excalibur-2 小时前
关于计算机网络当中的各种计时器
java·c语言·网络·c++·笔记·python·计算机网络
量子罐头2 小时前
戴尔PowerEdge R730服务器100G网卡选型推荐及实测分析
网络
太一吾鱼水2 小时前
matplotlib的imshow显示图片颜色正常,用cv2保存颜色不对
python