Appearance
移动 IP
2026 大纲 四(七)1 移动 IP 的概念与 四(七)2 移动 IP 通信过程,两条都在本篇。本篇反复用到的"把整个 IP 数据报封装进另一个 IP 数据报"这套隧道手法,与 VPN、IPv6 过渡隧道 完全同构。
一、要保住的到底是什么
先把这个问题问准,否则整篇都会跑偏。
笔记本从公司的网络挪到家里的网络,换个 IP 照样能上网——这件事 DHCP 早就做到了,不需要移动 IP。移动 IP 要解决的是更苛刻的一件事:换网络的过程中,IP 地址不变,正在进行的会话不中断。
为什么非要地址不变? 因为 TCP 连接由四元组标识(源 IP、源端口、目的 IP、目的端口)。源 IP 一变,这条连接在协议栈眼里就成了另一条,必断。移动 IP 要让切换网络对上层应用完全透明。
所以判据要说准:不是"换了网络还能上网",而是"换网络时地址变没变、连接断没断"。关机、换网络、重新拿一个 IP,那是 DHCP,不是移动 IP。
一个便于记忆的类比
移动 IP 的思路和"毕业后怎么继续联系同学"一模一样:一个班的大学生毕业时各奔东西,事先谁都不知道自己未来工作单位的准确通信地址。办法是彼此留下各自的家庭地址(永久地址)——要联系某位同学,写信到他的家庭地址,请其家长转交即可;得知新地址后就可以直接联系了。
对照过来:家庭地址 = 归属地址,家长 = 归属代理,转交 = 隧道转发。
二、两个地址,三个实体
归属地址(也叫永久地址)属于归属网络的地址块,永久不变。转交地址属于被访网络的地址块,每换一个被访网络就换一个——转交地址的网络号必须与被访网络一致,否则那里的路由器交付不了。
三个实体各司其职:
移动节点拥有归属地址,到外地后获得转交地址。归属代理是归属网络上的路由器,负责截获发往归属地址的分组并隧道转发。外地代理是被访网络上的路由器,负责创建转交地址、通知归属代理、拆封并交付。两个代理都既是路由器也是主机——它们的代理功能是在应用层完成的。
三条边界要一起记住。
归属代理只在移动节点"不在家"时才截获。 节点还在归属网络上时,一切按常规路由走,归属代理不做任何特殊处理。
应用程序永远只看到归属地址。 转交地址只供移动节点、归属代理、外地代理这三方使用。
转交地址在互联网上并不唯一。 外地代理可以给好几个移动节点指派同样的转交地址,甚至把自己的 IP 指派为转交地址——这一条最反直觉,下一节专门讲。
除了外地代理提供转交地址,还有一种做法叫同址转交地址:移动节点自己充当外地代理。好处是可以移动到任何网络、不必担心当地有没有外地代理;代价是需要额外软件,并且能接收发往转交地址的数据报。
三、转交地址不唯一,为什么不乱套
这一条揭示了外地代理实际是怎么工作的:外地代理向连接在被访网络上的移动节点发送数据报时,不使用 ARP,而是直接使用这个移动节点的 MAC 地址(移动节点首次和外地代理通信时,外地代理就记录下了它的 MAC 地址)。
推一层就清楚了:转交地址的唯一作用是把分组从互联网引到外地代理这里。一旦分组到了外地代理手上,"该交给本网络上的哪一台移动节点"这个问题,是靠它自己维护的那张(移动节点 ↔ MAC 地址)表来回答的——根本没用到转交地址。所以转交地址不必唯一。
四、通信过程
四个关键步骤:① B 用 A 的永久地址正常发送,分组按常规路由送到归属网络,被归属代理截获;② 归属代理再封装,新数据报的目的地址是转交地址,用的就是隧道技术(IP-in-IP);③ 外地代理拆封并把原始数据报转发给 A,A 同时从中得到 B 的 IP 地址;④ A 用自己的永久地址作源地址直接回复,这个数据报显然没有必要再通过归属代理转发。
这里有一处最容易填错的地方:隧道内层的目的地址仍是归属地址,外层目的才是转交地址。外地代理拆封后交给移动节点的,是一个目的地址为归属地址的原始数据报——"对上层透明"的落点就在这一句上。
另一个值得看的现象是收要绕、发不绕。B 不知道 A 在哪,只能寄到"老家";而 A 从收到的分组源地址栏里就读得出 B 的 IP,直接发即可。这个不对称不是缺陷,它源于信息不对称——但它导致了下一节的三角形路由问题,而且该问题只出现在去程。
需要新增的四类协议
| # | 协议 | 做什么 |
|---|---|---|
| 1 | 移动节点 → 外地代理 | 接入被访网络时登记以获得临时转交地址;离开时向这个被访网络注销原来的登记 |
| 2 | 外地代理 → 归属代理的登记协议 | 向移动节点的归属代理登记它的转交地址 |
| 3 | 归属代理数据报封装协议 | 把收到的数据报再封装成目的地址为转交地址的新数据报并转发 |
| 4 | 外地代理拆封协议 | 取出原始数据报,发送给移动节点 |
移动节点再次移动时,旧外地代理不必去归属代理注销——新外地代理的登记会直接覆盖归属代理里的旧记录。但要注意区分:移动节点离开某个被访网络时,确实要向该网络注销本地登记(上表第 1 行)。两处说的是不同的登记,别混成一件事。
还有一条不变量:从 N₁ 移动到 N₂ 的前后,数据报始终由同一个归属代理转发,只是转发的目的地换了。归属代理是那个不变的锚点。
五、三角形路由选择问题
"分组先发到归属网络、再由归属代理转发"这套做法称为间接路由选择:源站并不知道移动节点的当前地址,把数据报发往它的归属网络,以后的工作都由归属代理完成。
本来 B 和 A 之间可能存在一条更短更有效的路由,但现在数据报必须走"B → 归属代理 → 外地代理"这两条边——三个点连成一个三角形,走两边不走一边,名字就是这么来的。
一个极端例子:如果 B 所在的网络恰好就是 A 到达的被访网络呢?那么 B 发数据报给 A 本来是"在同一个网络上直接交付",根本不需要经过任何路由器;但因为 B 不知道 A 的位置,数据报只好两次穿越广域网,既浪费时间,也增加了网上不必要的通信量。
六、直接路由选择
解法是让通信者 B 创建一个通信者代理:由它(而不是归属代理)向 A 的归属代理问到转交地址,再用隧道把数据报直接发到被访网络的外地代理。代价是增加复杂性——要新增一个移动用户定位协议供通信者代理查询转交地址,还要回答"移动节点又移动了怎么办"。
| 间接路由选择 | 直接路由选择 | |
|---|---|---|
| 谁做隧道封装 | 归属代理 | 通信者代理 |
| 去程路径 | B → 归属代理 → 外地代理 → A(三角形) | B → 锚外地代理 →(必要时再转)→ A |
| 需要的额外协议 | 登记 + 封装 + 拆封 | 再加移动用户定位协议 |
| 再移动时谁跟进 | 归属代理(新外地代理登记覆盖) | 锚外地代理 |
| 复杂性 | 较低 | 较高 |
表里的锚外地代理是直接路由选择独有的概念——它是移动节点首次漫游到的那个被访网络的外地代理,取代归属代理成为新的转发锚点。间接路由选择里没有这个东西,别串到上一节去。
锚外地代理接力的完整七步(想弄清"移动节点又移动了"在直接路由选择里怎么处理时展开)
- B 的通信者代理从 A 的归属代理得到 A 漫游到的被访网络 N₁ 的外地代理,这个就是锚外地代理
- 通信者代理把 B 发给 A 的数据报再封装后,发送到锚外地代理
- 锚外地代理拆封后把数据报发送给 A
- A 移动到另一个被访网络 N₂
- A 向 N₂ 的新外地代理登记
- 新外地代理把 A 的新转交地址告诉锚外地代理
- 此后锚外地代理收到发给 A 的封装数据报时,就用 A 的新转交地址再封装一次,发送到 N₂ 的新外地代理,由它拆封后转发给 A
同理,A 再漫游到别的网络时,那个网络的外地代理仍然是和锚外地代理联系。
一句话概括锚外地代理:它取代归属代理,成为新的"转发锚点"。通信者代理只需记住它这一个地址,后续 A 怎么移动都由它跟进——代价是数据报多经过一次封装与转发。
上面这些新增措施和协议统称移动性管理。它涉及的面比这里讨论的还宽——例如安全也是必须解决的:归属代理凭什么相信"我是 A 的外地代理"这句话?没有认证,任何人都能把 A 的流量劫走。
本节小结
- 移动 IP 保的是 IP 地址不变,因为 TCP 连接由四元组标识、地址一变连接必断;判据不是"换网络还能上网",而是"地址变没变、会话断没断"。归属地址永久不变,转交地址随位置变化,而应用程序只看得到归属地址。
- 通信过程四步:B 用归属地址发 → 归属代理截获(仅当移动节点不在家)并隧道封装(外层目的 = 转交地址)→ 外地代理拆封交付(内层目的仍是归属地址,故对上层透明)→ 移动节点用归属地址作源地址直接回复。转交地址不必唯一,因为交付时靠的是外地代理记录的 MAC 地址而不是 ARP。
- 去绕回不绕源于"谁知道对方位置"这个信息不对称,由此产生三角形路由问题(只出现在去程)。解法是直接路由选择:通信者代理做隧道封装,代价是新增移动用户定位协议并引入锚外地代理。再移动时新外地代理的登记直接覆盖归属代理里的旧记录,旧外地代理不必注销。
考点速记
本节内容在真题里不单独成题——把"移动 IP""归属代理""转交地址"这几个关键词拿去逐字比对全部真题的题干与选项,命中数是 0。
和多播那一篇一样,这句话要连着成因和边界一起说。
成因是命题重心不在这里。 移动 IP 在 2026 大纲里明确列了两条(四(七)1 移动 IP 的概念、四(七)2 移动 IP 通信过程),在纲;但历年真题的网络层部分基本被编址计算、分片计算、路由表与路由协议四块占满,它们都能出成有唯一数值答案的题,而移动 IP 的内容是纯流程。
边界在于本篇有两处会以"配角"身份出现。
第一处是隧道(IP-in-IP)这套手法。 "把整个 IP 数据报封装进另一个 IP 数据报,外层地址是隧道两端、内层地址原封不动"——这句话在网络层出现过三次:移动 IP 的归属代理转发、VPN 的加密隧道、IPv6 过渡 的双栈隧道。而 IPv6 过渡隧道是被考过的(cn-2023-40 的第 Ⅲ 条)。认出这个共同结构,三处就变成一处,反过来读本篇也就有了直接的收益。
第二处是"IP 地址一变 TCP 连接必断"这个前提。 它本身属于传输层的知识,但移动 IP 是它最好的一个反面用例——正因为断不得,才要费这么大劲把地址钉死。理解了这一层,"TCP 连接由四元组标识"就不再是一句要背的定义。
易错:换网络重新拿 IP 不是移动 IP。 判据是"地址变没变、会话断没断",不是"能不能上网"。
易错:归属代理只在移动节点不在家时才截获分组。 节点在归属网络上时一切照常规路由走。
易错:隧道外层目的地址是转交地址,内层目的地址仍是归属地址。 拆封后交给移动节点的是原始数据报。
易错:应用程序只看到归属地址,转交地址只在移动节点、归属代理、外地代理三方之间使用。
易错:转交地址不必唯一,因为外地代理交付时直接用记录下来的 MAC 地址,不走 ARP。
易错:回程不经过归属代理。 三角形路由问题只出现在去程。
易错:再移动时旧外地代理不必去归属代理注销(新登记直接覆盖),但离开被访网络时要向该网络注销本地登记——两处是不同的登记。
易错:锚外地代理只在直接路由选择里有,间接路由选择里没有这个概念。
教材出处
- 谢希仁《计算机网络》(第 8 版):移动 IP 的基本概念与那个"毕业留家庭地址"的类比,见印刷版 p437(9.6 移动 IP)——"一个班级的大学生在毕业时都将同时走向各自的工作岗位。由于事先并不知道自己未来的工作单位的准确通信地址,那么怎样才能继续和这些同学保持联系呢?……就是彼此都留下各自的家庭地址(即永久地址)。若要和某同学联系,只要写信到该同学的永久地址,请其家长把信件转交一下即可"。
- 同书 p437:三个实体与两个地址的定义——"移动站 A 必须有一个原始地址(相当于上面提到的家庭地址),即永久地址,或归属地址。移动站原始连接到的网络 N₁ 叫作归属网络。永久地址和归属网络的关联是不变的";"归属代理通常就是连接在归属网络上的路由器,然而它作为代理的特定功能则是在应用层完成的。归属代理既是路由器,也是主机";"被访网络中使用的代理叫作外地代理,它通常就是连接在被访网络上的路由器(当然也充当主机)。外地代理的一个任务就是要为移动站 A 创建一个临时地址,叫作转交地址。转交地址的网络号显然必须和被访网络一致。外地代理的另一个功能就是及时把移动站 A 的转交地址通知 A 的归属代理"。
- 同书 p437:转交地址不唯一的两点说明——"第一,转交地址是供移动站、归属代理以及外地代理使用的,各种应用程序都不使用这种转交地址;第二,转交地址在互联网中并不具有唯一性。这就是说,外地代理可以给好几个移动站指派同样的转交地址,甚至把自己的 IP 地址指派为移动站的转交地址。这样做并不会引起混乱。这是因为当外地代理要向连接在被访网络上的移动站发送数据报时,并不会像通常那样使用地址解析协议 ARP,而是直接使用这个移动站的 MAC 地址(当移动站首次和外地代理通信时,外地代理就记录下这个移动站的 MAC 地址)"。同页给出同址转交地址:"移动站本身也可以充当外地代理……使用同址转交地址的好处是移动站可以移动到任何网络,而不必担心外地代理的可用性。但缺点是移动站需要有额外的软件,使之能够充当自己的外地代理"。
- 同书 p438:四个转发步骤——"① B 发送给 A 的数据报的目的地址是 131.8.6.7。此数据报被 A 的归属代理截获了(只有当 A 离开归属网络时,归属代理才能截获发给 A 的数据报)。② 由于归属代理已经知道了 A 的转交地址,因此归属代理把 B 发来的数据报进行再封装,新的数据报的目的地址是……A 现在的转交地址。新封装的数据报发送到被访网络的外地代理。这里使用的就是……隧道技术或 IP-in-IP。③ 被访网络中的外地代理把收到的封装的数据报进行拆封,取出 B 发送的原始数据报,然后转发给移动站 A。这个数据报的目的地址是 131.8.6.7,就是 A 的永久地址。A 收到 B 发送的原始数据报后,也得到了 B 的 IP 地址。④ 如果现在 A 要向 B 发送数据报,那么情况就比较简单。A 仍然使用自己的永久地址作为数据报的源地址,用 B 的 IP 地址作为数据报的目的地址。这个数据报显然没有必要再通过 A 的归属代理进行转发"。同页列出四类新增协议(移动站到外地代理的协议、外地代理到归属代理的登记协议、归属代理数据报封装协议、外地代理拆封协议)。
- 同书 p438:继续移动时不必注销——"当移动站离开被访网络时,外地代理并不需要注销其在归属代理登记的转交地址。这是因为当移动站接入到另一个网络时,这个新的被访网络的外地代理就会到移动站的归属代理登记该移动站现在的转交地址,这样就取代了原来旧的转交地址";以及"我们注意到,在 A 的这次移动前后,数据报都是由相同的归属代理转发的"。
- 同书 p438:间接路由选择与三角形路由问题——"像图 9-23 所示的数据报转发过程,又称为间接路由选择。这是因为源站并不知道移动站的当前地址,而是把数据报发往移动站的归属网络,以后的工作都由归属代理来完成";"这种间接路由选择,可能会引起数据报转发的低效,文献中称之为三角形路由选择问题。意思是,本来在 B 和 A 之间可能有一条更有效的路由,但现在要走另外两条路……设想一个极端的例子。如果 B 所在的网络就是 A 到达的被访网络。在这种情况下,B 发送数据报给 A 就是在同一个网络上非常简便的直接交付,根本不需要使用路由器",其后果是"只好让发送给 A 的数据报两次穿越广域网,既浪费了时间,也增加了网上不必要的通信量"(p439)。
- 同书 p439:直接路由选择与锚外地代理——"解决这个问题的一种方法是使用直接路由选择,但这是以增加复杂性为代价的。这种方法就是让通信者 B 创建一个通信者代理,让这个通信者代理向归属代理询问到移动站在被访网络的转交地址,然后由通信者代理(而不是由归属代理)把数据报用隧道技术发送到被访网络的外地代理,最后再由这个外地代理拆封,把数据报转发给移动站";两个必须解决的问题是"增加一个协议,即移动用户定位协议,用来使通信者代理向移动站的归属代理查询移动站的转交地址"与"当移动站再移动到其他网络时,怎样得到移动站的位置信息"。同页给出锚外地代理的定义与七步流程:"我们把移动站首次漫游到的被访网络的外地代理称为锚外地代理","新外地代理把 A 的新转交地址告诉锚外地代理。当锚外地代理收到发给 A 的封装数据报后,就用 A 的新转交地址对数据报进行再封装,然后发送给被访网络 N₂ 上的新外地代理,在拆封后转发给移动站 A"。同页最后说明"移动性管理……涉及的面比以上所讨论的问题还要宽些,例如,安全问题也是必须要解决的"。