移动IP

Admin in 百科 2024-04-09 08:34:35



移动IP(Mobile IP / IP mobility),又译为行动IP,由互联网工程任务组(IETF)制定的一种网上传输协议标准。

移动IP是为了满足移动节点在移动中保持其连接性而设计的。移动IP现在有两个版本,分别为移动IPv4(RFC 3344,取代了RFC 3220,RFC 2002)和移动IPv6(RFC 3775)。目前广泛使用的仍然是移动IPv4。

移动IP的目的

随着移动终端设备的广泛使用,移动计算机,移动终端等设备也开始需要接入Internet,但是IP的设计并没有考虑到移动节点会在连接中变化Internet接入点的问题。传统的IP地址包括两方面的意义:一方面是用来标识唯一的主机,另一方面它还作为主机的地址在数据的路由中起重要作用。但是对于移动节点,由于Internet接入点会不断发生变化,所以它的IP地址两方面的意义发生了分离,一方面移动节点需要一种机制来唯一标识自己,另一方面它希望这种标识不会被用来路由。移动IP就是为了能让移动节点能够分离IP地址这两方面的功能而又不彻底改变现有Internet的结构而设计的。

移动IPv4的典型操作过程

每个移动节点都有一个本地网络(home network),本地网络(home network)为其分配一个在本地网络内的IP地址。当这个移动节点移动它的接入点到一个新的外地网络(在此称作“网络”(foreign network))时, 它连接到这个外地网络(foreign network),然后这个移动节点与其家乡代理(home agent)(一般是一个在家乡网络上的路由器)通信,并注册它的care-of address(此地址即外地代理(foreign agent)的地址)。如果有一个IP数据报要被发送到这个移动节点,那么这个数据报的头部存有这个移动节点的家乡地址(home address),于是通过一般的路由它被路由到移动节点的家乡网络。然后其家乡代理(home agent)截取这个数据报,并将其整个封装在一个新的IP数据报中,这个新的IP数据报的目的IP地址为移动节点的外地代理(foreign agent)的地址,然后重传这个数据报。这个数据报会被路由到外地代理(foreign agent)。然后外地代理(foreign agent)去掉外面一层的IP头部,并将原来的IP数据报封装在一个网络层PDU中,并通过外地网络(foreign network)将这个数据报发送到移动节点。

移动IPv4 代理发现机制

移动IPv4使用ICMP路由器广告消息(ICMP Router Advertisement)(RFC 1256)来帮助移动节点发现移动代理。移动代理通过发送一种扩展了的ICMP路由器广告消息来通知移动节点移动代理的信息(包括移动节点的状态,它提供给移动节点的care-of地址,等)。移动代理每隔一段时间就会发送一个带扩展的ICMP路由器广告消息,移动节点在收到代理广告消息后,它会比较这个代理的IP地址与自己所在网络IP地址是否相同,并以此来判断自己是在本地网络还是在外地网络。如果一个移动节点的代理消息已经过期,并且它还没有收到新的代理广告消息,那么它就会发送一个代理广告请求来请求其所在地的代理为其发送一个代理广告消息。

移动IPv4注册过程

当一个移动节点通过代理发现机制发现它已经移动到了一个外地网络后,并且在得到它的care-of地址后,它就需要在自己的家乡代理那里注册自己的新位置。这个移动节点发送一个UDP数据报,数据报内封装着自己的注册消息,内容包括:家乡代理地址,家乡地址,care-of地址,标识,扩展,以及其它一些参数信息。这个UDP数据报首先被发送到外地代理那里,然后由外地代理中继给家乡代理,家乡代理再把自己的回应发送给外地代理,外地代理则把回应再中继给移动节点。

移动IPv4的安全性问题

移动IPv4中移动节点的注册过程存在安全隐患,因为如果一个恶意的主机发送注册消息给一个家乡代理的话,那么会导致发送给某个移动节点的数据报全部被重定向到这个恶意主机。因此,移动IPv4的注册过程都要求认证。认证是注册消息的一个扩展。扩展信息中包括一个用于选择认证算法的SPI以及一个保证内容没有被中途更改的认证字段。移动IPv4一般采用MD5加密算法来保证注册过程的安全。

移动IPv4中的路由和隧道

在移动IPv4中,如果一个移动节点不在自己的本地网络的时候,此时一个目标地址为此移动节点的数据报会通过传统的路由到达此移动节点的本地网络(因为IP首部中目的地址域内容为此移动节点的本地地址)。当本地网络中出现这样一个数据报的时候,这个移动节点注册到的那个本地代理就有义务截取这个IP包,此后本地代理把整个IP包封装在一个新的IP数据报中(对原数据报仅改动TTL字段),并填充新的首部,在新首部的目的地址字段填入移动节点注册的care-of地址,然后将这个新数据报发送出去,这个数据报通过传统路由到达移动节点当前所在的外地网络,外地代理收到此数据报,并拨去外层的IP首部,将原始数据报转发给移动节点。这种技术就叫做隧道技术,流程是发送方------?封装者-------?解封装者--------?目的地。隧道技术在RFC 2003中有详细讲解。

Care-of地址

前面所讲过的所有内容都经常涉及care-of地址,按照前面所讲的这些标准流程care-of地址都是外地代理的地址。但是有时情况并非如此,当一个外地代理不存在的时候,移动节点也可以通过当地的DHCP来获得一个外地网络的地址,并把这个地址作为care-of地址注册给自己的本地代理。此时,所有与本地代理的通信都是直接由移动节点和本地代理进行的,中间没有外地代理的中继,而且此时隧道的终点也是移动节点本身,不再需要外地代理来中继分组。

移动IPv4与ICMP

移动IPv4中所采用的隧道技术使得ICMP的差错报文产生问题,设想一个数据报在隧道中因为某种原因被丢弃,某个路由器发送一个目的网络不可达ICMP差错报文给本地代理,此时本地代理只得到原数据报的前8个字节,根据这些信息它没办法把差错报文中继给源端。而且即使它将差错报文转发给了源端,但是源端也会对这样一个差错报文感到迷惑,因为它所发的那个地址根本就不是发生差错的地址。RFC 2003建议本地代理维持软隧道状态信息,即保持一定的信息以保证能够识别返回的ICMP差错报文是哪个分组的差错报文。RFC 2003还建议在中继这个ICMP报文之前对其做一定的修改,例如把目的网络不可达改成目的主机不可达。

移动IPv4对本地网络的配置

前面提到了在隧道技术中本地代理首先要截取发往不在本地网络的移动节点的数据报,但是这个截取的过程也是需要对本地网络进行配置的。考虑三种不同的网络:1当本地网络中有一个与外界连接的路由器,而另外还有一个用于为移动节点提供服务的本地代理时。此时一个指向不在本地网络的移动节点的数据报路由到本地网络,本地路由器收到该数据报,并在本地网络发送ARP请求,询问这个IP地址的MAC地址,于是本地代理要兼任起ARP代理的责任,它发送ARP应答使得数据报被路由器转发给本地代理,此后本地代理再将数据通过隧道技术转发给移动节点。其实在此之前路由器就应该知道把数据报转发给本地代理,因为当移动节点注册它的care-of地址之后本地代理就会发送免费ARP来将发送给该移动节点的数据报定向到本地代理,这样本地网络中的其他节点都可以与这个移动节点通信,不论它是否在本地网络中。这里要注意移动节点在移动到外地网络的时候不能发送ARP请求,因为如果它发送ARP请求则外地网络中的其他节点会更新它们的ARP快速缓存,这样会造成当这个移动节点再次移出该网络的时候这些节点无法与此移动节点通信。2 当本地网络中有一个与外界连接的路由器,并且它就是本地网络中的本地代理时。此时本地代理需要发送免费ARP,原因同上。3 当本地网络根本没有物理层,而仅仅是有一个虚拟的网络时,此时网络内有一个兼任路由器和本地代理的主机,它收到数据报后会立即通过隧道技术转发。

移动IPv6和移动IPv4的比较

移动IPv6不需要外地代理的支持
移动IPv6支持路由优化
移动IPv6路由优化不需要预先指定的安全机制
移动IPv6允许路由优化使得路由器兼顾效率和“入口过滤”
移动IPv6在移动节点不在本地网络时通过IPv6路由头部而不是隧道来路由
移动IPv6不需要使用ARP,这也增加了其健壮性
移动IPv6不需要维持隧道软状态
移动IPv6的动态本地代理地址发现机制返回单独一个回应。而移动IPv4中采用广播的方法,这时本地网络中的所有本地代理都会分别返回回应。

免责声明:本站文字信息和图片素材来源于互联网,仅用于学习参考,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

-- End --