26考研 | 王道 | 计网 | 网络层 | 第二部分| 同网段内通信
王道计网 | 网络层 | 第二部分| 同网段内通信

0.ARP协议

ARP请求和响应报文中各关键字段的差异,是掌握网络通信基础的关键。下面这个表格清晰地对比了它们在两种报文中的不同。
| 字段 | ARP请求报文 | ARP响应报文 |
|---|---|---|
| 操作类型 (Operation Code) | 1 (表示请求) | 2 (表示响应) |
| 源MAC地址 (Sender MAC) | 请求主机的MAC地址 | 被请求主机的MAC地址 |
| 目的MAC地址 (Target MAC) | 全0 (00:00:00:00:00:00) |
请求主机的MAC地址 |
| 源IP地址 (Sender IP) | 请求主机的IP地址 | 被请求主机的IP地址 |
| 目的IP地址 (Target IP) | 要解析的目标主机的IP地址 | 请求主机的IP地址 |
| 以太网目的地址 (帧头部) | 广播地址 (FF:FF:FF:FF:FF:FF) |
请求主机的MAC地址(单播) |
深入理解ARP工作过程
ARP(地址解析协议)的核心任务是根据IP地址查询对应的MAC地址 。它的工作过程就像是在局域网里“喊话”和“点名回答”:
广播“喊话”(ARP请求):当主机A需要与主机B通信,但不知道B的MAC地址时,它会在本地网络广播一个ARP请求报文。这个报文的本质是询问:“IP地址是B的设备,请告诉我你的MAC地址!”
- 为了确保网络中的所有设备都能收到并处理这个请求,以太网帧头部的目的MAC地址被设置为广播地址 (
FF:FF:FF:FF:FF:FF) - 在ARP报文内部,目标MAC地址字段暂时填充为全0,因为此时还不知道目标的确切MAC
- 为了确保网络中的所有设备都能收到并处理这个请求,以太网帧头部的目的MAC地址被设置为广播地址 (
单播“回答”(ARP响应):网络中只有IP地址与请求中目标IP地址匹配的主机(主机B)会处理此请求。主机B会以单播形式向主机A返回一个ARP响应报文,内容相当于:“我就是IP地址为B的设备,我的MAC地址是XX:XX:XX:XX:XX:XX。”
此时,由于主机B已经从请求报文中知道了主机A的MAC和IP地址,所以响应报文的所有字段都可以明确填写。以太网帧头和ARP报文内部的目的MAC地址都填入了主机A的MAC地址,确保点对点准确送达
更新缓存:主机A收到响应后,将IP-B和MAC-B的映射关系存入自己的ARP缓存表。后续发往主机B的数据包就可以直接封装,无需再次广播请求,大大提高了效率


1.手搓一个局域网
开一家网吧叫做老登网吧,有2交换机1集线器5主机1路由器

局域网网段 202.15.179.0/29
五台主机 IP分别从202.15.179.1-5,MAC地址全6末尾01到05
H4,H5集线器连接,H2,H3交换机连接
1.单播IP封装为单播帧

H1给H5发IP数据报,源IP和目的IP分别为H1和H5的IP,源MAC和目的MAC为H1和H5的MAC
什么设备会收到该MAC帧(主要看MAC地址)
H4和H5会收到该帧
设备分别如何处理?(看MAC地址和IP地址)
分别交付给自己的数据链路层,H4一看不是自己的就扔了,H5看到是自己的就留下来
2.单播IP封装为广播帧

相比情况1,目的MAC改为广播地址(全F),而其他的都不变
什么设备会收到该MAC帧(主要看MAC地址)
局域网中所有设备都可以收到该帧,路由器也会收到
设备分别如何处理?(看MAC地址和IP地址)
路由器判断是不是本网络内的,如果是就丢弃IP分组,如果不是就转发给目的网络
H2-H4接受该MAC帧,交付给数据链路层,数据链路层一看是广播地址,就交付给网络层,网络层核对目的地址,对不上就丢弃,对得上继续进行后续处理
3.广播IP封装为单播帧

相比情况1,目的IP改为广播地址(主机号全1),而其他的都不变
什么设备会收到该MAC帧(主要看MAC地址)
H4和H5会收到该数据报
设备分别如何处理?(看MAC地址和IP地址)
分别交付给自己的数据链路层,H4一看不是自己的就扔了,H5看到是自己的就留下来,继续交付给网络层,网络层一看是广播地址,继续往上层交付
4.广播IP封装为广播帧

相比情况1,目的IP改为广播地址(主机号全1),目的MAC改为广播地址(全F),而其他的都不变
什么设备会收到该MAC帧(主要看MAC地址)
局域网中所有设备都可以收到该帧,路由器也会收到
设备分别如何处理?(看MAC地址和IP地址)
路由器判断是不是本网络内的,如果是就丢弃IP分组,如果不是就转发给目的网络
H2-H4接受该MAC帧,交付给数据链路层,数据链路层一看是广播地址,就交付给网络层,网络层一看是广播地址,继续往上层交付
2.连接其他局域网(含常见考点:点对点链路配置)

两台路由器相连,中间需要一个网段,需要消耗四个IP地址(而不是两个),用2bit来作为主机号
其中全0和全1不能作为节点IP,则主机号只能为01和10
3.DHCP分配IP的全过程

不管客户发还是服务器发,在这个过程中的目的IP都是广播地址
客户发的:源MAC都是自己的MAC,目的MAC都是广播MAC,源IP都是0.0.0.0
服务器发的:源MAC和源IP都是自己的MAC和IP,目的MAC都是客户的MAC地址
1.局域网2 - 小登网吧简介

网段是6.6.6.0/28,两台DHCP服务器,一台路由器,网关6.6.6.6
2.DHCP请求全过程

主机A5请求DHCP服务器分配IP
1 | A5 MAC:AA AA AA AA AA A5 |
A5就好比求职者,DHCP相当于HR,IP地址就是职位
1.发现报文
1 | 源IP: 0.0.0.0 |
发送者:A5
谁能收到:局域网内所有设备
属于广播IP封装为广播帧
A5求职,海投给局域网内所有的设备
2.提供(offer)报文
1 | 源IP: 6.6.6.7 |
1 | 源IP: 6.6.6.8 |
发送者:两台DHCP服务器
谁能收到:A5
属于广播IP封装为单播帧
两个HR都给A5发送了offer,在这个报文中说了要给A5分配的岗位(IP地址),以及岗位相关信息(子网掩码,默认网关)
3.请求报文
1 | 源IP: 0.0.0.0 |
发送者:A5
谁能收到:局域网内所有设备
属于广播IP封装为广播帧
A5选择了 DHCP服务器1(6.6.6.7),广而告之全部设备(局域网内所有设备都能收到)我找到工作了
4.确认报文
1 | 源IP: 6.6.6.7 |
发送者:DHCP服务器1
谁能收到:A5
属于广播IP封装为单播帧
HR给A5发来了入职确认,A5成功分配到了6.6.6.5这个岗位(IP地址)
5.过程总结
| 步骤 | 报文类型 | 由谁发送 | 核心目的 |
|---|---|---|---|
| 第一步 | DHCP发现 (DHCP Discover) | 客户端 | 客户端以广播形式“呼喊”,寻找网络中可以提供IP地址的DHCP服务器。 |
| 第二步 | DHCP提供 (DHCP Offer) | DHCP服务器 | 接收到发现的服务器广播回应,为一个可用的IP地址并向客户端“报价”,并暂时保留该地址。 |
| 第三步 | DHCP请求 (DHCP Request) | 客户端 | 客户端从收到的多个“报价”中选择一个(通常是第一个收到的),并再次广播发送请求,明确表示希望使用该服务器提供的IP地址。 |
| 第四步 | DHCP确认 (DHCP Ack) | DHCP服务器 | 被选中的服务器发送确认报文,正式将IP地址、子网掩码、网关、DNS服务器地址及租期等参数分配给客户端。 |
下面的表格清晰地展示了这些信息是在哪个阶段告知A5的:
| 网络参数 | 首次提供(提议) | 最终确认(生效) |
|---|---|---|
| IP 地址 | DHCP Offer 阶段 | DHCP Ack 阶段 |
| 子网掩码 | DHCP Offer 阶段 | DHCP Ack 阶段 |
| 默认网关 | DHCP Offer 阶段 | DHCP Ack 阶段 |
3.基础课例子

4.局域网内部发送IP数据报
A5要给A1发送IP数据报
1 | A5 IP:6.6.6.5 |

1.A5通过子网掩码判断自己和目的IP是不是一个网段
是的话那就是单播帧,不是的话就发给默认网关
2.构造MAC帧的时,要填写目的MAC地址,则去查A5自身的MAC表
如果查到了目的IP对应的目的MAC,那就构造好了单播帧然后发送
如果没有就进行ARP请求
3.ARP请求
A5封装一个ARP请求报文,这是一个广播帧,作用是来询问A1的AMC地址的
源MAC是A5的MAC,目的MAC是全F4
4.ARP响应
A1收到A5的ARP请求以后,先把A5的MAC和IP记录到自己的MAC表里面
然后给A5发出ARP响应
A5收到以后就把A1的IP和MAC记录到自己的MAC表里面,之后就可以发送单播帧了
5.两个局域网之间发送IP数据报(跨网段,暂时忽略路由器和路由器之间的发送过程)
简单来说,在整个传输过程中,存在一个黄金法则:
- MAC地址:在每一次跨越不同广播域(即每一跳)时都会改变。它标识的是当前链路上的两个端点,就像不断更换的“本地快递员”。
- IP地址:从源到目的整个传输过程中基本保持不变。它标识的是通信的最终源头和目的地,是“最终收件人和发件人地址”。
A5要给H1发送IP数据报
A5构造的帧
1 | 源IP:A5的ip |
1.A5通过子网掩码判断自己和目的IP是不是一个网段
发现不是一个网段的,那就要发给默认网关6.6.6.6
2.查MAC表,找到了就发给默认网关,找到就用ARP找默认网关的MAC,和上面的流程相同
3.现在A5的默认网关路由器已经拿到了数据报,然后转发给202.15.179.0/29这个网段
离开 6.6.6.0 网段时的MAC帧
1 | 源 IP: 6.6.6.5(A5) |
4.数据帧到达了202这个网段
到达 202.15.179.0/29 网段时的MAC帧
1 | 源 IP: 6.6.6.5(A5) |
然后就变成局域网内部的两台主机发送数据了
如果网关不知道H1的MAC地址就还是ARP那一套,知道的话就直接单播帧
6.ICMP协议




终点不可达分为两种情况:到了相应的网段后
1.目的IP的主机不存在
2.目的IP主机里面没有目的端口号
都会导致终点不可达

时间超过分为两种情况:
1.路程太远了TTL变成0了,那么就由丢弃该报文的路由器给原主机发差错报文
2.分片规定时间内没到齐,就会全部丢掉





就把TTL设为1,然后在找baidu.com的第一个路由器就不能走了,那就给主机返回ICMP报文,就得知了第一跳是哪个路由,后面的一样以此类推












