OSI层次:网络层
关键词:路径选择、路由、寻址
刻画了寻址和最优路径选择
这些存在于地理上分离的网络
1. 网络层概述
1.1. 网络层的责任
1.2. 面向连接的网络服务
面向连接 (Connection Oriented):在传输任何数据之前,在发送方和接收方之间建立连接。
和面向连接类似的概念是电路交换 (Circuit Switching, CS) ,但是两者不是一个空间的概念
- 面向连接:首先与接受者建立连接,然后开始数据传输。所有的数据依次通过同一个通道,或者更常见的是,通过同一个虚拟电路
- 电路交换:
1.3. 无连接网络服务
在无连接网络服务 (Connectionless Oriented) 中,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线(每个包会被区别对待)进行传输。邮政系统是一个无连接的模式,天罗地网式的选择路线,天女散花式的传播形式;IP、UDP就是无连接协议的例子。
和无连接网络类似的概念是**分组交换技术** (Packet switching technology),但是两者也不是一个空间的概念
- 当数据包从源传递到目标时,它们可以:
- 切换到不同的路径
- 不正常到达
- 设备根据各种标准确定每个包的路径,有些函数可能因数据包而异
1.4. 网络设备-路由器
关于路由器与路由协议更详细的内容可以查看这篇文章
路由器的功能是:
-
物理地互连网段形成逻辑段 或者 互联网络
-
根据IP地址做出逻辑决策
-
确定最佳路径
-
将数据包从传入端口切换到传出端口
2. IP 地址和子网
一个难蚌的相关协议
2.1. IP 数据报
-
版本——4位
- 指的是IP协议的版本
- 目前的IP协议版本号为4(即IPv4)
-
首部长度——4位
- 可表示的最大数值是15个单位 (一个单位为4字节) ,因此IP的首部长度的最大值是60字节,最小值是20字节
-
服务类型——8位
- 用来区分服务以获得更好的服务,这个字段之前一直没有被人们使用
- 区分服务,Delay = 1 延迟小,Throughput = 1吞吐量大,Reliability = 1 质量比较高,Cost = 1 最小代价
-
总长度——占16位
- 指的是首部和数据之和的长度,单位为字节,因此数据报的最大长度为65536字节,总长度必须不超过MTU (Maximum Transmission Unit, 最大传输单元)
-
标识 (identification)——16位
- 它是一个计数器,用来产生数据报的标识
-
标志——3位
注意:发送数据报过大,就要对其数据报分片处理,每一个分片都会含有一个标识(IP地址 + 标识),到达目的地要对其所有的分片进行重新组装;
- 最高位为0,标志字段MF (More Fregment), MF = 1表示后面还有分片,MF = 0 表示最后一个分片;
-
片位移——13位
- 指出:较长的分组在分片之后,某片在原分组中的相对位置,片位移以8个字节为偏移单位
-
生存时间——8位
- 记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值
-
协议——8位
- 指出此数据报携带的数据使用何种协议(TCP协议还是UDP协议)
- 以便目的主机的 IP 层将数据部分上交给哪个处理过程
-
首部检验和——16位
- 只检验数据报的首部,不包括数据部分,这里不采用 CRC 检验码而采用简单的计算方法
-
源地址和目标地址——8位
- 源地址:数据向外发送,发送机器本身的IP地址,也成为逻辑地址
- 目的地址:数据具体要发送目标及其的IP地址
2.2. IP地址
2.2.1. IP 地址组成
IP地址由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数,该表示方法称为点分十进制。IP地址由两部分组成:
-
网络ID
-
由**ARIN** (American Registry for Internet Numbers, 美国因特网号码注册中心) 分配
-
标志设备连接到的网络
-
可以由前三个八位中的一个,两个,或者三个识别出
-
主机ID
-
由**网络管理员** (Network Administrator) 分配
-
标志了该网络中的被连接的设备
-
可以由后三个八位中的一个,两个,或者三个识别出 (与网络ID互补)
2.2.2. IPv4 地址分类
IPv4 地址包括 ABCDE 五类
N表示Network,H表示Host
A类IPv4地址 | B类IPv4地址 | C类IPv4地址 | D类IPv4地址 | E类IPv4地址 | |
---|---|---|---|---|---|
网络标志位 | 0 | 10 | 110 | 1110 | 11110 |
四个字节的含义 | N.H.H.H | N.N.H.H | N.N.N.H | N.N.N.N | N.N.N.N |
IP地址范围 | 0.0.0.0 ~ 127.255.255.255 | 128.0.0.0 ~ 191.255.255.255 | 192.0.0.0 ~ 223.255.255.255 | 224.0.0.0 ~ 239.255.255.255 | 240.0.0.0 ~ 247.255.255.255 |
可用IP地址范围 | 1.0.0.1 ~ 127.255.255.254 | 128.0.0.1 ~ 191.255.255.254 | 192.0.0.1 ~ 223.255.255.254 | ||
是否可以分配给主机使用 | 是 | 是 | 是 | 否 | 否 |
网络数量(个) | 126 ($2^7-2$) | 16384 ($2^{14}$) | 2097152 ($2^{21}$) | — | — |
每个网络中可容纳主机数(个) | 16777214 ($2^{24}-2$) | 65534 ($2^{16}-2$) | 254 ($2^8-2$) | — | — |
适用范围 | 大量主机的大型网络 | 中等规模主机数的网络 | 小型局域网 | 留给IAB (Internet体系结构委员会)使用【组播地址】 | 保留,仅作为搜索、Internet的实验和开发用 |
备注 | 0.0.0.0为特殊地址,表示本网主机 | 255.255.255.255为特殊地址,用于定向广播 |
2.2.3. 主机数量
- 不同类别的主机最大数量是不同的
- A类网络中最多有 16,777,214 个主机 ($2^{24}–2$)
- B类网络中最多有 65,534 个主机 ($2^{16}–2$)
- C类网络中最多有 254 个主机 ($2^8–2$)
- 每个网络中的第一个地址(即主机号全为0)是预留的网络地址,表示本机所连接的网络地址
- 最后一个地址(即主机号全为1)预留的,用于表示所有主机
2.2.4. 预留地4址
-
网络地址
-
主机号部分地址全为0
-
A类网络地址实例: 113.0.0.0
-
网络中的主机只能在网络号相同的时候,与其它主机直接通讯
-
广播地址
-
用于给该网络中所有设备发送数据
-
广播IP地址是主机号全为1的地址
-
B类地址示例: 176.10.255.255
-
受限网络地址:255.255.255.255
2.2.5. IP寻址
私有地址空间
有一些IP地址范围预留给私有IP地址空间。下面是IPv4地址下全部的私有IP地址空间
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
为什么有了 IP 地址还要用 MAC 地址?
① IP地址一般情况下容易修改和变动,具有随意性,不能在网络上固定标识一台设备;
② MAC地址一般情况出厂时由厂家烧录到网卡中,不容易修改,在局域范围内容易唯一定位一台设备。
③ 从拓扑结构和分层上分析,IP地址属于网络层,主要功能在广域网范围内路由寻址,选择最佳路由,而MAC地址在网络接口层要形成适合于网络媒体上传输的数据帧。
注意:标识一个设备的三种方式:① 域名访问(www.baidu.com,应用层);② 设备的IP地址访问(网络层);③ 设备的MAC地址(在局域网当中唯一标识该设备,实际不用其访问,在网络接口层,具有固定的特性,不易发生紊乱现象)
参考文章: IP协议及IP数据包详解
IP地址耗尽 和它的解决办法 :
1981年,IETF定义了32位IP地址的IPv4。随着互联网的发展,网络位置(IPv4)渐渐被消耗殆尽,虽然当前的网络地址转换及无类别域间路由等技术可延缓网络位置(IPv4)匮乏之现象,但为求解决根本问题,从1990年开始,互联网工程工作小组开始规划IPv4的下一代协议,除要解决即将遇到的IP地址短缺问题外,还要发展更多的扩展,为此IETF小组创建IPng,以让后续工作顺利进行。
1994年,各IPng领域的代表们于多伦多举办的IETF会议中,正式提议IPv6发展计划,该提议直到同年的11月17日才被认可,并于1996年8月10日成为IETF的草案标准,最终IPv6在1998年12月由互联网工程工作小组以互联网标准规范(RFC 2460)的方式正式公布。
-
NAT(Network Address Translation, 网络地址转换)
-
CIDR(Classless Inter-Domain Routing, 无类别域间路由)
-
IPv6(Internet Protocol Version 6, 互联网协议)
2.3. 子网
网络管理员有时候需要把网络划分成更小的网络,即子网 (subnet),来提供额外的灵活性
从主机号的地址域借了几位用于表示子网地址域
2.3.1. 子网基础
-
子网是网络的小划分
-
提供寻址的灵活性
-
子网地址通常由网管分配
-
子网减少了广播域
2.3.2. 子网的借位
子网的借位指的是从主机位中借几位出来,作为子网位。即:$N + H \rightarrow N + S + H'$
为什么至少要借两位 ?
取一位的话无法区分 subNetID 和 masterNetID,如果你只借了一位来构造子网,那么你只有一个网络号0,以及广播号1
主机域大小 | 最多借位 | |
---|---|---|
Class A | 24 | 22 |
Class B | 16 | 14 |
Class C | 8 | 6 |
2.3.3. 副产品:浪费的地址
我们必须在需要的子网数量,可接受的每个子网中主机的数量,和导致的地址浪费中,保持平衡。
以C类网络为例
借的位数 | 构造的子网数量 | 每个子网中主机的个数 | 主机的总个数 | 利用率 |
---|---|---|---|---|
2 | 2 | 62 | 124 | 49% |
3 | 6 | 30 | 180 | 71% |
4 | 14 | 14 | 196 | 77% |
5 | 30 | 6 | 180 | 71% |
6 | 62 | 2 | 124 | 49% |
构造子网的数量 = $2^{借的位数}−2$ (注意要去掉全为 0 的网络号和全为 1 的广播地址)
2.3.4. 子网掩码
子网掩码 (subnet mask) 决定了我们用多少位来构建网络,以及多少位描述主机地址
特殊地,我们有:
-
A类 IP 地址的子网掩码: 255.0.0.0
-
B类 IP 地址的子网掩码: 255.255.0.0
-
C类 IP 地址的子网掩码: 255.255.255.0
一般地,我们有:
- 含子网的子网掩码: 与主机位对应的都为0,与网络位和子网位对应的都为1
3. 网络层设备
在这里,网络层设备指的就是路由器
关于路由器与路由协议更详细的内容可以查看这篇文章
- 路由器的功能是路径选择。更详细地说,是基于链路带宽、距离、延迟等等因素来选择传递数据包到目的地的下一个路径。
3.1. IP 地址与路由器
-
IP 地址被应用在软件层面,用于指出设备所在的网络
-
路由器连接到网络,每一个网络必须有一个独特的网络号使得路由能成功地连接
-
独特的网络号包含于IP地址中,被分配给每一个连接到该网络的设备
3.2. 路由接口
一个路由器通过接口连接到网络,接口也可能指IP路由 (IP Routing) 中的一个端口。每一个接口都有一个独一无二的网络地址
举例如下:
3.4. 路由功能
以下图为例
-
剥离框架中的数据链路报头(数据链路报头包括来源 MAC 地址和目的 MAC 地址)
-
检查网络层地址来决定目的地网络
-
查询它的**路由表** (Routing Table) 来决定使用哪一个接口来发送数据,使得数据可以到达目的地网络
-
通过B1接口发送数据,路由器会将数据封装在合适的数据链路框架(帧)中
3.6. IP地址分配
这针对的是网络中的每一个节点,不仅仅是路由器
-
静态地址分配
-
给每一个设备配置一个IP地址
-
但缺点也很明显:需要保留非常细致的记录以避免使用重复的IP地址
-
-
动态地址分配
4. ARP 协议
ARP (Address Resolution Protocol, 地址解析协议)
4.1. 作用
值得注意的是,发送方的设备必须同时有有目的设备的IP地址和MAC地址,才能与目的设备进行通讯。ARP 使得一台电脑可以获取与一个IP地址相关的MAC地址。
4.2. ARP操作
-
发送设备广播询问同一网段下的所有设备的MAC地址 (请求)
-
所有的设备进行IP地址匹配 (检查)
-
如果某一设备发现自己的IP地址符合请求报文中的IP地址,就对应主机回复自己的MAC地址 (应答)
-
发送设备将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。(ARP缓存表中每个条目具有一定的生命周期) (缓存)
我们不难发现,ARP 是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
4.3. 网际通讯
一个平凡的问题是:怎么与不在一个物理网段的设备通讯?
有两种常见的方法:
- 默认网关 (Default Gateway)
- 默认网关是连接来源主机所处的网段的路由接口的IP地址
- 为了让一个设备可以给其它网段上的设备发送数据,来源设备将数据发送到默认网关
- 代理 ARP (Proxy ARP)
- 代理ARP是ARP的一种变化形式
- 这种情况下,来源主机没有配置默认网关 (有较大的局限性)
5. 路由与被动路由协议
5.1. 网络协议操作
5.2. 被动路由协议
什么是被动路由协议 (Passive Route protocol)
通俗地说,可路由表示这个协议的信息包格式能被路由器接受
- 给网络层提供帮助的协议被称为被动 (routed) 路由协议或可路由 (routable) 协议
- IP是一个网络层协议。因此,它可以被互联网发送
下图展示了访问可路由协议的步骤
5.3. 不可路由协议
什么是不可路由协议
通俗地说,不可路由表示这个协议的信息包格式不能被路由器接受
-
不可路由协议不支持网络层
不得不提到,网路层的一个任务就是进行网络之间的通讯,可以认为是 “主机到主机” 的通讯;对比之下,传输层的重大任务就是 “进程到进程” 的通讯
-
其中最常见的不可路由协议是NetBEUI (NetBios Enhanced User Interface, 网络BIOS扩充用户接口)
- NetBEUI 是一个小、快、高效的协议,但只能在一个网段上运行
5.4. 路由协议
路由 (routing) 协议决定了被动路由 (routed) 协议前往目的地的路径
用于路由器之间的协议,以便它们可以动态地获知路由信息,并将它们添加到路由表中。
5.5. 路由协议的分类
路由协议可以分为静态路由和动态路由,也可以分成 DVP (这就是大名鼎鼎的 Bellman-Ford-Fulkerson 算法) 和 LSP (这也是大名鼎鼎的 Dijkstra 的 SPF 算法)
要将 路由协议的动静态 和 IP地址分配的动静态 区别开来
5.5.1. 静态和动态
- 静态路由:
- **网关**手动将路由信息输入路由器
- 动态路由:
- 路由器可以联机 (on the fly) 交换彼此信息
- 使用如下的路由 (routing) 协议来更新路由信息
- RIP, IGRP, EIGRP, OSPF
- 上述协议会在下面有详细介绍
静态路由VS动态路由
- 静态路由:
- 隐藏了部分互联网
- 测试网络中某个特定的链接
- 当只有一条路径到达目的网络时,便于维持路由表
- 动态路由:
- 维持路由表
- 定时更新路由信息
- 基于路由 (routing) 协议,共享路由信息
- 路由器可以适应变化的网络条件
5.5.2. 动态路由的 IGP 和 EGP
-
IGP (Interior Gateway Protocols, 内部网关协议)
-
RIP, IGRP, EIGRP, OSPF (下文会有介绍)
-
用于自治系统,管理局域网中的路由器,如:校园网,公司内网……
-
-
EGP (Exterior Gateway Protocols, 外部网关协议)
下图展示了 EGP 和 IGP 的直观区别
5.5.3. DVP 和 LSP
-
DVP (Distance Vector Protocol, 距离矢量协议)
RIP 和 IGRP 都算是典型的 DVP (DP算法)
- 从相邻的视角看网络拓扑
- 路由器之间添加距离矢量
- 周期性频繁的更新
- 复制一份路由表,传给相邻路由器
-
LSP (Link State Protocol, 链路状态协议)
OSPF 算是典型的 LSP (朴素的贪心算法)
- 了解整个网络拓扑
- 计算去其它路由的最短路径
- 由事件触发更新
- 把链路状态路由的更新信息发给其它路由
5.6. 常见的路由协议
5.6.1. RIP
RIP (Route Information Protocol, 路由信息协议) 是基于距离矢量算法的内部网关路由协议,利用跳数来作为计量标准。在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。也是目前最受欢迎的路由协议
-
跳数hop是唯一的度量标准
-
最大跳数为15
-
每30秒更新一次
-
不总是选择最快路径
-
产生很多网络拥塞
-
-
RIP v2 是 RIP v1的一个很重要的改进版本
5.6.2. IGRP & EIGRP
IGRP (Interior Gateway Routing Protocol, 内部网关路由选择协议) & EIGRP (Enhanced Interior Gateway Routing Protocol, 增强内部网关路由选择协议) 是基于距离矢量算法的内部网关路由协议,且都是思科 (Cisco) 专利
-
综合以延迟,带宽,负载,可靠性为度量标准
-
最大跳数为255
-
每90秒更新一次
-
-
EIGRP 是 IGRP的进阶版, 混合了路由(routing)协议
5.6.3. OSPF
OSPF (Open Shortest Path First, 开放最短路径优先) 是基于链路状态协议的内部网关路由协议
-
综合以代价,速度,可靠性,安全性为衡量
-
由事件触发更新
7. VLSM
什么是 VLSM (Variable Length Subnet Mask, 可变长子网掩码)
- VLSM 指的是允许一个自治系统使用不同的子网掩码
- 与之相对的概念是有类路由:一个网络只能使用一个子网掩码
7.1. VLSM概述
-
有了VLSM,网管可以在少量主机的网络上使用长子网掩码,大量主机的网络上使用短子网掩码
-
如果路由协议允许VLSM:
-
在网络连接上使用一个30位的子网掩码,255.255.255.252
-
给用户网络一个24位的掩码,255.255.255.0
-
或者是22位的掩码,255.255.252.0,给有着近1000用户的网络
-
-
优点:
-
更有效地使用IP地址
-
使用路由汇总的能力更强
-
-
支持 VLSM 的路由协议:
-
OSPF
-
Integrated IS-IS (Integrated Intermediate System to Intermediate System, 集成化中间系统到中间系统)
-
EIGRP增强内部网关路由选择协议
-
RIP v2
-
静态路由 (显然动态路由是不支持VLSM的)
-
过去建议不要使用第一个和最后一个子网,但是我们可以在Cisco IOS ver12.0中使用子网 0
在 IOS ver12.0 中, 思科路由器默认使用子网 0
**router(config)#**no ip subnet-zero
7.2. VLSM的优势
-
VLSM 允许一个组织在一个网络地址空间,使用不只一个子网掩码
-
使用 VLSM 通常被理解为“给子网划分子网”,可以用来使得寻址效率最大化
-
VLSM 是帮助缩小 IPv4 和 IPv6 之间差距的修正之一
7.3. 示例
已知一个C类地址192.168.10.0/24 (表示前24位为网络号) 已经被分配,珀斯、悉尼、新加坡分别有一个连接到KL的广域网。珀斯需要60个主机,KL需要28个主机,悉尼和新加坡各需要12个主机。
为了计算VLSM子网和各自的主机数,在地址范围中先分配最大的需求。需求水平应该按照从大到小的顺序排列。
步骤一
珀斯需要 $60$ 个主机。用 $6$ 位,因为这样有 $2^6-2=62$ 个可用主机地址,因此第四个八位中的前两位将表示/26的扩展网络前缀,剩余的 $6$ 位用来表示主机地址
将VLSM用在地址192.168.10.0/24上,有:
IP: 192.168.10.00hhhhhh /26
SM: 255.255.255.192 (11000000)
步骤二
KL 需要 $28$ 个主机。在 192.168.10.63/26 后,下一个可用的地址是 192.168.10.64/26。因为需要 $28$ 个主机,所以需要 $5$ 位表示主机地址,这样有 $2^5-2=30$ 个可用的主机。因此需要 $5$ 位来表示主机,$3$ 位用于/27的扩展网络前缀
将VLSM使用在192.168.10.64/26上,有:
IP: 192.168.10.010hhhhh /27
SM: 255.255.255.224 (11100000)
步骤三
现在悉尼和新加坡各需要12个主机,下一个可用地址从192.168.10.96/27开始。因为需要12个主机,所以需要4位表示主机地址,有 $2^4-2=14$ 个可用地址。因此4位代表主机,4位用于/28的扩展网络前缀
将VLSM用在192.168.10.96/27上,有:
192.168.10.0110hhhh /28
255.255.255.240 (11110000)
步骤四
现在给广域网分配链接地址,记住,每个广域网链接需要 $2$ 个IP地址,下个可获取的子网是192.168.10.128/28。因为每个广域网链接需要 $2$ 个网络地址,所以 $2$ 位用于表示主机,有 $2^2-2=2$ 个可用地址。因此需要 $2$ 位表示链接,$6$ 位表示 /30 的扩展网络前缀
将VLSM用在192.168.10.128/28上,有:
192.168.10.100000hh /30
255.255.255.250 (11111100)
result
-
只有没有被使用的子网可以被进一步划分子网
-
如果一个子网的任何地址被使用了,那么这个子网不能再被划分
7.4. 路由聚合
路由聚合 (Route Summarization) 是让路由选择协议能够用一个地址通告众多网络,旨在缩小路由器中路由选择表的规模,以节省内存,并缩短IP对路由选择表进行分析以找出前往远程网络的路径所需的时间的方法。
CIDR (无类别域间路由) 和 VLSM 的使用,不仅防止了地址浪费,还促进路由聚合
示例
计算
优点
-
减少路由表条目数
-
用于隔离拓扑的变化
-
为了让聚合正确工作,要仔细地在层次结构中分配地址,使得汇总的地址分享同样的高位比特
-
VLSM 允许路由聚合,通过将聚合完全基于左边共享的高位,来增加灵活性,即使网络是不连续的。
8. ICMP
8.1. 一些概念
ICMP(Internet Control Message Protocol, 因特网控制报文协议)是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。提高了 IP 数据报交付成功的机会
8.2. ICMP报文的格式
8.3. 两种ICMP报文
8.4. 目的站不可到达
-
网络不可到达(net unreachable)
-
主机不可到达(host unreachable)
-
**协议不可到达(**protocol unreachable)
-
**端口不可到达(**port unreachable)
-
**源路由选择不能完成(**source route failed)
-
**目的网络不可知(**unknown destination network)
-
目的主机不可知(unknown destination host)
8.5. ICMP差错报告报文的数据字段的内容
8.6. 不应发送ICMP差错报告报文的几种情况
-
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
-
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
-
对具有多播地址的数据报都不发送 ICMP 差错报告报文
-
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送 ICMP 差错报告报文
8.7. PING
PING (Packet InterNet Groper, 因特网包探索器) 是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在[ TCP/IP](https://baike.baidu.com/item/ TCP%2FIP/214077?fromModule=lemma_inlink)网络体系结构中应用层的一个服务命令,测试目的站是否可达及了解其有关状态
-
PING 是用 ICMP 的 “Echo request” 和 “Echo reply” 消息来实现的
-
PING 使用了 ICMP 回送请求与回送回答报文
-
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP或UDP
可见,上层可以跳过邻近的下层而直接使用底层协议,未必要一层一层地自顶向下。
9. 移动IP
9.1. 基本概念
移动IP (Mobile IP) 是由互联网工程任务组 (IETF) 制定的一种网上传输协议标准。由于移动终端的互联网接入点会不断发生变化,所以其IP地址在两方面发生分离,一是移动节点需要一种机制来唯一标识自己,另一是需要这种标识不会被用来路由。移动IP便是为了能让移动节点能够分离IP地址这两方面功能,而又不彻底改变现有互联网的结构而设计。
-
移动 IP 让电脑可以在从一个因特网接入点换到另一个接入点的时候,保持网络连接
-
移动 IP 和 nomadic (不定) IP 是不同的:
-
移动 IP 可以无视接入点的变化,自动保持电脑的网络
-
不定 IP 在接入点变化时,必须先停止连接,然后初始化新的电脑连接
9.2. 移动IP的运作
- 本地网络:移动节点被分配给名为本地网络 (home network) 的特定网络,在该网络里名为本地地址的IP地址是静态的.
- 外部网络:移动节点移至另一个网络, 该网络被认为是此主机的外部网络。
- 外部代理:移动节点通过网络节点(路由器) 注册,如果路由器在外部网络,名为外部代理。
移动节点与用户本地网络的、名为本地代理的类似代理通信, 将移动节点的转交地址(care-of address) 给予本地代理
9.3. 转交地址
移动 IP 提供两种获取转交地址的模式
9.3.1. 外地代理转交地址
-
该地址通常是发送通告的外地代理的 IP 地址
-
通过代理通告消息被通告给移动节点
-
外地代理是隧道的端点
-
外地代理通过隧道接收数据报时,会对收到的数据报解除封装。然后,外地代理会将内部数据报传送到移动节点
-
许多移动节点可以共用同一转交地址
9.3.2. 协同定位转交地址
-
由移动节点通过一些方法 (e.g. DHCP) 获取,作为自身临时IP
-
移动节点充当隧道的端点
-
移动节点对通过隧道传来的数据报解除封装
-
协同定位转交地址可使移动节点在没有外地代理的情况下正常工作
-
如果某个移动节点正在使用协同定位的转交地址,则该移动节点必须与该转交地址处于同一网段。否则,发往该转交地址的数据报将无法传送
9.4. 基本功能
9.4.1. 发现
移动节点使用发现程序来标识期望的本地代理和外部代理
使用ICMP协议
-
移动节点可能在IP层不知道的情况下,由于某些切换机制的作用,从一个网络移到另一个网络。
-
代理发现进程的目的是使代理能检测到这样的移动
-
作为代理的路由器或其他网络节点,周期性发布带广播扩展的路由器广播ICMP报文。报文包括路由器的IP地址
-
移动节点监听这些广播报文。将路由器的网络部分与自身本地地址的网络部分比较,如果不匹配就说明移动节点在外部网络
-
如果移动节点未能接收到代理信息,允许其发布一个ICMP路由器请求报文来寻求路由器响应
9.4.2. 注册
移动节点使用认证注册程序将它的转交地址告知它的本地代理
用UDP协议
-
注册程序的不安全性
-
移动IP被设计成能抵挡两类攻击
-
一个节点可能伪装成外部代理,并向本地代理发送注册请求,以求将目的为移动节点的通信转到自己.
-
恶意代理可能重发旧的注册报文,有效地将移动节点由网络中除去
-
为达到报文认证,每个注册请求和回应包含认证扩充
9.4.3. 隧道
用于将IP数据报由本地地址发至转交地址
使用IP协议
-
将原来整个数据报封装入一个首部带有转交地址的新IP数据报中。
-
隧道将原有的IP报文作为载荷,在外面包上一层新的IP包头,转换成为一个新的IP报文
-
在一定程度上提高了安全性