ARP RIP OSPF BGP DHCP以及其他计算机网络当中的通信过程和广播帧单播帧的整理
一、 协议详解:通信过程与帧类型分析
1. ARP (Address Resolution Protocol) - 地址解析协议
-
核心功能:在同一个局域网内,根据一个已知的IP地址,找出其对应的MAC地址。
-
所属层次:数据链路层与网络层之间。ARP请求/响应报文封装在以太网帧中,不经过路由器。
-
详细通信过程:
-
触发:主机A(IP:
192.168.1.10
)想给主机B(IP:192.168.1.20
)发送数据。A首先检查自己的ARP缓存表,看是否已经有192.168.1.20
对应的MAC地址。 -
缓存未命中:如果缓存中没有,主机A需要发起ARP请求。
-
构建ARP请求:A构建一个ARP请求包,内容是:“谁的IP地址是
192.168.1.20
?请告诉192.168.1.10
。” -
封装ARP请求帧 (广播):
-
A将这个ARP请求包放入一个以太网帧中。
-
源MAC地址:主机A的MAC地址。
-
目的MAC地址:广播地址
FF-FF-FF-FF-FF-FF
。
-
-
发送与接收:交换机收到这个广播帧后,会将其泛洪(Flooding)到除源端口外的所有端口。因此,该局域网内的所有主机都会收到这个ARP请求。
-
处理请求:所有主机检查ARP请求包中的目标IP地址。只有主机B发现这个IP是自己的,其他主机则丢弃该包。
-
构建ARP响应 (单播):
-
主机B构建一个ARP响应包,内容是:“我是
192.168.1.20
,我的MAC地址是MAC_B
。” -
B将响应包放入以太网帧。
-
源MAC地址:主机B的MAC地址
MAC_B
。 -
目的MAC地址:主机A的MAC地址
MAC_A
(这个地址在A的请求包里已经告诉B了)。这是一个单播帧。
-
-
缓存更新:主机A收到ARP响应后,就知道了
192.168.1.20
对应的MAC地址是MAC_B
,并将其存入自己的ARP缓存表,以备后用。
-
-
帧类型总结:
-
ARP请求:广播 (因为不知道对方的物理位置,只能“吼一嗓子”)。
-
ARP响应:单播 (因为请求方已经自报家门,可以“私聊”回复)。
-
2. DHCP (Dynamic Host Configuration Protocol) - 动态主机配置协议
-
核心功能:为网络中的主机自动分配IP地址、子网掩码、默认网关、DNS服务器等信息。
-
所属层次:应用层,使用UDP协议(客户端端口68,服务器端口67)。
-
详细通信过程 (DORA):
-
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
(广播)
-
-
Offer (提供):
-
局域网中的DHCP服务器收到Discover报文后,从地址池中选择一个可用的IP地址。
-
服务器发送一个DHCP Offer报文给客户端,意为:“我这里有个IP地址
192.168.1.100
,你要不要?” -
这个报文的目的MAC地址通常也是广播,因为此时客户端还没有一个正式绑定的IP地址。
-
-
Request (请求):
-
客户端可能收到多个DHCP服务器的Offer。它选择其中一个(通常是第一个到达的)。
-
然后发送一个DHCP Request报文,意为:“所有服务器请注意,我决定接受
192.168.1.100
这个地址。” -
这个报文同样是广播发送,目的是为了通知所有DHCP服务器(包括那些未被选中的),告知它们自己的选择。
-
-
Acknowledge (确认):
-
被选中的DHCP服务器收到Request报文后,将这个IP地址与客户端的MAC地址绑定,并设定一个租期。
-
服务器发送一个DHCP ACK报文给客户端,意为:“好的,
192.168.1.100
正式分配给你了,租期是X小时。” -
这个报文也通常是广播发送。至此,客户端才算真正获得了IP地址并可以使用网络。
-
-
-
帧类型总结:DHCP的主要交互过程(DORA)基本上都是广播,因为通信的发起方(客户端)在初始阶段没有一个可用于单播通信的IP地址。
3. RIP (Routing Information Protocol) - 路由信息协议
-
核心功能:一种内部网关协议(IGP),用于在小型网络中动态发现路由。基于距离向量算法,使用“跳数”作为度量值。
-
所属层次:应用层,使用UDP协议(端口520)。
-
详细通信过程:
-
周期性更新:每个运行RIP的路由器会周期性地(如每30秒)将其完整的路由表信息打包成一个RIP响应报文。
-
发送更新:路由器将这个响应报文发送给所有直连的邻居路由器。
-
版本差异:
-
RIPv1: 将更新报文发送到IP广播地址
255.255.255.255
。网络中所有设备(包括非路由器的主机)都会收到,但只有RIP路由器会处理。 -
RIPv2: 进行了优化,将更新报文发送到多播地址
224.0.0.9
。只有运行RIPv2的路由器会监听这个多播组,减少了对非路由器设备的干扰。
-
-
路由计算:收到邻居发来的路由表后,路由器根据贝尔曼-福特算法,比较和更新自己的路由表。如果从邻居那里学到一条去往某网络的路,跳数更少,就更新自己的路由表,并将下一跳指向该邻居。
-
-
帧类型总结:
-
RIPv1: 广播
-
RIPv2: 多播
-
4. OSPF (Open Shortest Path First) - 开放最短路径优先
-
核心功能:一种内部网关协议(IGP),用于大中型企业网络。基于链路状态算法。
-
所属层次:网络层。OSPF报文直接封装在IP包中(协议号89),不使用TCP或UDP。
-
详细通信过程:
-
建立邻居关系 (Hello):
-
路由器启动OSPF后,会向
224.0.0.5
(所有OSPF路由器)这个多播地址周期性地发送Hello包。 -
直连的路由器收到Hello包后,会建立邻居关系。
-
-
建立邻接关系与同步数据库:
- 邻居之间会通过交换数据库描述(DBD)包来比对各自的链路状态数据库(LSDB)是否同步。这个过程通常是单播的。
-
传播链路状态信息 (LSA):
-
每个路由器都会创建描述自己直连接口状态的链路状态通告(LSA)。
-
当网络状态发生变化(如链路断开或新链路加入),路由器会立即将更新后的LSA多播出去,这个过程称为“泛洪”。
-
收到LSA的路由器会将其存入自己的LSDB,并继续转发给其他邻居。
-
-
计算最短路径:当LSDB稳定后,区域内的所有路由器都拥有了完全相同的“网络地图”。每个路由器独立地运行Dijkstra(SPF)算法,计算出以自己为根的、到达所有目的地的最短路径树。
-
-
帧类型总结:OSPF主要使用多播(
224.0.0.5
和224.0.0.6
)来发现邻居和泛洪LSA,辅以单播进行数据库同步和确认。不使用广播。
5. BGP (Border Gateway Protocol) - 边界网关协议
-
核心功能:一种外部网关协议(EGP),用于在不同的自治系统(AS,如不同的ISP)之间交换路由信息。是整个互联网的“粘合剂”,基于路径向量算法。
-
所属层次:应用层,使用TCP协议(端口179)来保证可靠传输。
-
详细通信过程:
-
建立TCP连接:BGP路由器(对等体Peers)之间通过网络管理员手动配置,建立一个TCP连接。这个连接可以是直连的(iBGP),也可以是跨越多个路由器的(eBGP)。
-
交换路由信息:
-
TCP连接建立后,对等体之间首先交换完整的BGP路由表。
-
之后,只在网络路由发生变化时,才发送增量的Update报文。
-
-
基于策略的路由:BGP的Update报文中不仅包含网络前缀,还包含大量的路径属性(Path Attributes),如AS-PATH(经过的AS列表)。路由器根据这些属性和预先配置的策略来选择最佳路由,而不仅仅是根据“最短”路径。
-
维持连接:对等体之间通过周期性地发送Keepalive报文来确认TCP连接是否正常。
-
-
帧类型总结:BGP的所有通信都发生在两个对等体之间建立的可靠TCP连接上,因此,所有BGP报文都是单播的。BGP不使用广播或多播。
三、 综合整理与对比
协议 | 核心功能 | 所属层次 | 传输协议 | 主要通信方式 |
---|---|---|---|---|
ARP | 同局域网内,IP -> MAC地址解析 | 数据链路/网络层 | 无(直接封装) | 请求(广播), 响应(单播) |
DHCP | 自动分配IP地址等网络配置 | 应用层 | UDP | 广播 (DORA过程) |
RIP | 小型网络内部路由(距离向量) | 应用层 | UDP | v1:广播, v2:多播 |
OSPF | 大中型网络内部路由(链路状态) | 网络层 | 无(直接封装) | 多播为主, 单播为辅 |
BGP | 自治系统(AS)之间路由(路径向量) | 应用层 | TCP | 单播 |