第六部分 Internet新技术
第27章 移动IP 移动主机:指改变了网络接入点的主机。 这种编址方法适合于固定主机,因为地址的一部分定义了这个主机所连接的网络。 移动IP要解决的问题:具有固定IP地址的计算机如何从另一个网络接入因特网?
移动IP的设计目标 每个移动主机必须能够保留和使用自己的固定IP地址。 除少量特殊节点以外,不允许对其它的固定主机及路由器做任何改变。
移动IP解决方案 两个地址: 每个主机有一个家乡网络和家乡网络上的一个家乡地址,家乡地址是永久地址,总是可以通过该地址找到移动主机。 移动主机在外地网络时有一个转交地址(care-of address),当切换到不同的外地网络时转交地址也要相应改变。
家乡地址和转交地址
使用代理 家乡网络上有一个家乡代理,为处于外地网络的移动节点记录当前的转交地址,并将发送到家乡地址的数据包转发到转交地址。 外地网络上有外地代理,为处于外地网络的移动节点提供转交地址,并提供数据包的路由服务。 移动主机也可以充当外地代理,这要求移动主机能够接收转交地址,并具有所需的软件与家乡代理通信。这时的转交地址称为同地点转交地址(co-located care-of address)。
家乡代理和外地代理
移动主机的通信过程 为和远程主机通信,移动主机需要经过代理发现、注册和数据传送三个阶段。 代理发现: 路由器使用ICMP路由器通告报文,通报它连接在某个网络上,是否愿意充当家乡代理或外地代理,以及作为外地代理时可以提供的转交地址表。 若移动主机未收到代理通告,可以使用ICMP查询报文进行代理询问。 移动主机根据收到的代理通告,可以判断自己位于家乡网络还是外地网络,以及是否切换了外地网络。
代理通告报文 Type:值为16 Code:8位标志
Code字段
注册 当移动主机移动到外地网络并发现了外地代理后,必须进行注册: 注册报文封装成UDP发送,代理使用熟知端口434,移动主机使用临时端口。 移动主机把注册请求发送给外地代理,通报它的家乡地址、家乡代理地址和选择的转交地址。 外地代理注册这个请求,并将报文转发给家乡代理,家乡代理将移动主机的家乡地址和转交地址记录在绑定表中。 家乡代理将注册应答(证实或否认)发送给外地代理,外地代理再转发给移动主机。 注册报文封装成UDP发送,代理使用熟知端口434,移动主机使用临时端口。
注册请求和响应
注册请求报文 Type:报文类型,对于注册请求报文,此字段为1。 Flag:标志 Identification:匹配请求和响应。 Extensions:由家乡代理用来验证移动主机的身份。
标志字段
注册响应报文 Type:报文类型,对于注册响应报文,此字段为3。 Code:给出注册请求的结果(接受或拒绝)。
数据传送 接收数据 发送数据 当远程主机要向移动主机发送分组时,使用移动主机的家乡地址作为目的地址。 该分组被路由到移动节点的家乡网络上,被家乡代理截获。 家乡代理查找绑定表,获得移动节点当前的转交地址(即外地代理地址)。 家乡代理将数据包发送到转交地址。 外地代理将数据包转发给移动节点。 发送数据 移动节点在外地网络上发送分组时,分组由外地代理负责路由,其过程与在家乡网络中一样。
数据传送过程
移动IP的低效率 两次穿越 当移动主机已经移动到远程主机所在的网络上时,远程主机向移动主机发送的分组要穿越网络两次。
移动IP的低效率(续) 三角路由: 远程主机发送的分组先被路由到家乡代理,再被路由到外地代理或/和移动主机。
解决方案 当家乡代理将第一个分组转发给外地代理后,就向远程主机发送更新绑定分组,告知移动节点当前的转交地址。远程主机将此信息缓存起来,此后直接使用移动节点的转交地址发送数据。
家乡代理如何截获分组 ARP代理: 免费ARP: 家乡代理负责为位于外地网络的移动主机发送ARP响应,家乡代理用自己的MAC地址进行响应。
数据包如何发送到移动主机 家乡代理通过隧道方式将数据包发送到转交地址: 家乡代理将数据包封装到一个单播IP包中,源地址为家乡代理的IP地址,目的地址为转交地址。 外地代理取出原始分组,确认移动主机为已注册的主机,将分组封装在链路层帧中发送给移动节点,移动主机的MAC地址从封装注册请求的帧中获得。
习题 21,29,30,31,32,33
第28章 Internet上的实时通信 本章讨论的实时通信是指实时多媒体通信,多媒体是指音频流和视频流。 实时多媒体应用的分类: 流式存储音/视频: 压缩的音/视频文件已经存储在服务器上,用户下载这些文件进行播放 用户可以暂停、倒退、快进或者检索多媒体内容 实时实况音/视频: 类似于传统的电台广播和电视,只是通过因特网来传输 实时交互音/视频: 允许人们使用音/视频进行实时通信 对端到端延时的要求很高
实时多媒体通信的特点 数据传输有严格的延迟及延迟抖动上限要求 解决延迟抖动要求数据携带时间戳,以便确定在接收端的回放时间,并且要求接收端有接收缓存 对数据有排序的要求 通常使用多播方式传输数据 根据可获得的带宽,数据流的码速率可调节 多个数据流混合
实时传输协议RTP TCP和UDP均不适合实时多媒体通信: RTP被设计用来传输Internet上的实时多媒体数据: RTP建立在UDP基础之上,使用UDP的交付机制。 RTP的主要贡献是增加了时间戳、序号及混合设施。
RTP在TCP/IP协议栈中的位置
RTP报头格式 报文序号:连续递增,用于检测不按顺序的交付或数据丢失。 载荷类型:指出载荷域使用的编码算法。 时间戳:包中第一个样本的采样时间。 同步源标识:如果有多个数据源,同步源为混合器,其它源为参与源。 参与源标识:每个标识定义一个源。
实时传输控制协议RTCP RTCP是与RTP配合使用的一个协议,用于处理反馈、同步和用户接口,但不传输任何数据。 源描述报文:源周期地发送自己的描述信息,这些信息可显示在接收方的屏幕上。 再见报文:源用该报文来宣布退出会议。 特定应用报文:允许为新的应用定义新的报文类型。
RTP/RTCP使用的UDP端口 RTP和RTCP是应用层上的协议,但与其它应用程序不同,它们不使用熟知端口。 RTP使用偶数的临时端口号。
因特网广播 在实际的因特网广播实现中,每个客户与电台建立一条单独的TCP连接,然后在TCP连接上传输音频数据。 因特网广播采用TCP单播而不是RTP多播的原因: 许多ISP不支持多播 TCP已被广泛应用并被所有的软件包支持,而RTP却陌生得多 许多系统的防火墙仅允许某些熟知端口的TCP包和UDP包通过,携带RTP报文的UDP包通常会被过滤掉
流式存储音/视频 基本过程: 客户机请求存储在服务器上的音/视频文件。 服务器将音/视频文件发送到客户指定的一个套接字。 客户机使用媒体播放器播放音/视频文件。 通常采用RTP协议传输音/视频文件,采用RTSP(Real-Time Streaming Protocol)协议提供交互性操作。
实现一:使用一个Web服务器
实现二:使用Web服务器和元文件
实现三:使用媒体服务器
实现四:使用媒体服务器和RTSP
实时交互式音/视频应用 需要一个会话控制协议,负责在会话的双方之间建立、管理和终止呼叫连接,SIP和H.323就是这样的两个协议。
第30章 专用网、虚拟专用网和网络地址转换 内联网(intranet): 外联网(extranet): 实现机构内/机构间保密通信的方法: 使用TCP/IP协议族的局域网,对这个网络的接入仅限于机构内部的用户。 外联网(extranet): 使用TCP/IP协议族,在网络管理员的控制下,机构外的某些特定用户组可以访问某些资源。 实现机构内/机构间保密通信的方法: 专用网 混合网 虚拟专用网
30.1 专用网 设计为在机构内部使用,允许访问共享资源,提供保密性。 只有一个场所的小机构可以使用孤立的局域网。 具有几个场所的大机构可以创建专用互联网,使用路由器和电信专线将不同场所的局域网连接起来。
专用网地址 Internet管理机构为专用网保留了三组地址,任何机构不必申请就可以使用这组地址中的一个来构造专用网,路由器不会转发这样的分组。
混合网 机构内部的数据通过专用互联网交换,机构之间的数据通过全球因特网交换。
30.2 虚拟专用网(VPN) 建立在公共网上的一个覆盖网络,使用全球因特网进行机构内和机构间的通信,但保证通信是保密的。 虚拟:没有使用真正的专用网络。 专用:保证场所间的通信是保密的。
VPN的实现 在每个局域网上设置一个安全网关,安全网关之间使用IPSec和隧道技术:
数据包封装
数据包传输
30.3 网络地址转换(NAT) 网络地址转换技术允许在网络内部使用专用地址,而仅使用全局地址访问Internet。
网络地址转换器 负责在两种地址之间进行转换: 对于外出的分组:将分组的源地址替换为自己的全局地址。 对于进入的分组:将分组的目的地址更换为相应节点的专用地址。
NAT路由器如何确定进入分组的目的地址? 方案一:只使用一个IP地址 NAT路由器记录外出分组的目的地址,建立与源地址的映射关系;收到进入分组时,用分组的源地址查找地址转换表,确定目的地址。(图) 这种方法只允许同时有一台内部主机连接到一台外部主机上,且通信必须由专用网发起。
方案二:使用一个IP地址池 NAT使用一个具有N个全局IP地址的地址池。 对于每个进入的分组,使用分组的源地址(外部主机地址)和目的地址(转换地址)查找地址转换表,确定分组的目的地址并替换。 最多可以有N台主机同时连接到一台外部主机上。
方案三:网络地址端口转换 同时使用IP地址和端口号区分连接。 对于每个外出的分组,记录源地址和源端口号,选择一个转换地址以及NAT上的一个临时端口号,建立端口地址转换表。 对于每个进入的分组,使用分组的目的地址(转换地址)和目的端口(NAT选择的临时端口)查找地址转换表,确定分组的目的地址及目的端口,并替换。 允许专用网主机和外部服务器程序之间有多对多的关系。
NAT和ISP 将顾客分组,每一组对应一个全局地址,每一组使用一个地址转换表。
第31章 IPv6和ICMPv6 提出IPv6的主要目的: 增加地址空间 简化协议,加快分组的转发处理 实现多播功能 实现移动通信功能 增加服务质量支持 提供更好的安全性 …...
31.1 IPv6地址 128位地址,使用冒号十六进制表示法,每16位以十六进制的形式写成一组,组之间用冒号分隔,如8000:0:0:0:0023:4567:89AB:CDEF。 一个段(两个冒号之间的4个数字)中开始的一些0可以忽略,如8000:0:0:0:23:4567:89AB:CDEF。 可将连续的多组0压缩为一对冒号,如以上地址可以表示为:8000::23:4567:89AB:CDEF。 允许CIDR记法,如8000::23:4567:89AB:CDEF/60
地址类型 单播地址 多播地址 任播地址(anycast):定义一组具有相同前缀的计算机,发送到任播地址的分组必须且仅交付给这个组成员中的一个,通常是最靠近或最容易到达的。
地址结构 地址划分为两个部分,第一部分为类型前缀,定义地址的目的。 任何一个类型前缀都不是其它类型前缀的前缀,因而只要给出地址,就能确定类型前缀。
IPv6地址的类型前缀
单播地址分配 单播地址可以基于提供者或地理区域来分配,采用分级结构进行编址。
地址分级结构 可以将基于提供者的地址看成是具有多个前缀的分级的标识: 类型前缀定义类型 注册前缀定义注册机构 提供者前缀唯一定义一个提供者 用户前缀唯一定义一个用户 子网前缀唯一定义一个子网
本地地址 本地链路地址:用于孤立的网络 本地场所地址:用于某个场所孤立的若干个网络
保留地址 类型前缀为00000000的地址空间是保留的,其中有一些重要的特殊地址,如全0地址、环回地址(127个0跟一个1)、IPv4兼容地址和IPv4映射地址等。
IPv4兼容地址 96位0,后接32位IPv4地址。如IPv4地址2.13.17.14变成0::020D:110E 当使用IPv6的计算机要把报文发送给另一个使用IPv6的计算机,但数据包必须通过IPv4的网络时,可使用IPv4兼容地址。
IPv4映射地址 80位0,后接16位1,后接32位IPv4地址。如IPv4地址2.13.17.14变成0::FFFF:020D:110E。 当使用IPv6的计算机打算把分组发送给仍然使用IPv4的计算机,而分组所经过的大部分网络是IPv6网络,可以使用IPv4映射地址。
31.2 IPv6分组格式 IPv6分组以一个40字节的基本头开始,后面跟着零个或多个扩展头,然后是数据。
优先级(PRI) 发送方可在PRI域定义数据包的优先级,路由器在发现网络拥塞时按优先级从低到高的顺序丢弃数据包。 IPv6将网络流量划分为两大类: 受拥塞控制的流: 非实时流属于这一类,优先级为0~7,按照重要性及用户体验来设定,从高到低依次为控制流、交互式流、attended bulk data traffic、unattended data traffic、background data、no specific traffic。 不受拥塞控制的流: 实时多媒体流属于这一类,优先级为8~15,尚没有标准,可以按照用户要求的服务质量等级来定义。
流(flow) 流是具有相同传输特性(源/目的、优先级、选项等)、并要求相同处理(使用相同的路径和资源、具有相同的服务质量和安全要求等)的一系列数据包。 流由源地址和流标号(flow label)唯一标识。流标号由发送方分配,不支持流的节点忽略该域。 支持流的路由器维护一张流表(flow table),表中记录每一个流需要的处理;在收到一个数据包后,根据其流标识查找流表,提供相应的服务。 最简单的流表可以用来加速包的转发,提供路由交换功能。 与资源预留等协议相结合,复杂的流表可支持服务质量。
下一个首部(next header)
扩展首部
IPv6基本头与IPv4固定头
IPv6基本头中去掉的域 去掉了IHL域,因为IPv6的基本头总是40字节长。 去掉了protocol域,代之以Next header。 去掉了头校验,因为计算校验和太花时间,加之现在网络非常可靠,链路层和传输层上往往又都有校验和。
IPv6基本头中增加的域 流标号:标识一个特定的流,支持对分组的区分处理。 扩展头:支持选项服务。 提供了与安全相关的选项,提高了协议的安全性。 增加协议功能只需要定义新的扩展头,提高了可扩展性。 基本头中只携带分组转发必需的最小信息,减小了分组开销。
31.3 ICMPv6 ICMPv6合并了IPv4中的ARP和IGMP,而RARP则被取消了,因为BOOTP能够完成RARP的功能。
ICMPv6报文--差错报告 与ICMPv4相比: 去掉了源端抑制报文:因为优先级和流标号允许路由器控制拥塞,丢弃不太重要的报文。 增加了分组太大报文:因为IPv6路由器不负责分片
分组太大报文 MTU字段告诉发送端网络能接受的最大分组长度。
重定向报文 增加了一个选项,让主机知道目标路由器的物理地址。
ICMPv6报文--查询 与ICMPv4相比: 去掉了时间戳请求/响应报文:在其它协议中(如TCP)实现了,且以前未使用过。 去掉了地址掩码请求/响应报文:IPv6的地址中包含子网部分,不需要掩码 增加了邻站查询/通告报文:实现ARP功能 增加了成员关系报文:实现IGMP功能。
路由器询问和通告 路由器询问中增加了主机物理地址。 路由器只通告自己的信息,增加了几个选项,用以通告自己的物理地址和MTU等。
邻站询问和通告 邻站询问中增加了一个选择,宣布发送者的物理地址。
组成员关系报文 组成员关系使用三种类型的报文: 报告:由主机向路由器报告自己所属的多播组 查询:路由器向主机询问组成员关系 终止:主机告知路由器退出某个多播组
组成员关系报文
31.4 从IPv4过渡到IPv6 三种方案: 双协议栈 隧道技术 头部转换
(1)双协议栈方案 主机运行IPv4和IPv6两个协议栈。源节点发送分组前先查询DNS;若DNS返回IPv4地址,就发送IPv4分组;若返回IPv6地址,就发送IPv6分组。 双栈节点对于IPv4包和IPv6包使用相同的地址(IPv4兼容地址)。
IPv4兼容地址 96位0,后接32位IPv4地址。如IPv4地址2.13.17.14变成0::020D:110E
(2)隧道方案 当两个使用IPv6的计算机彼此通信,而分组需要通过IPv4区域时,使用隧道技术发送分组。 自动隧道技术 配置隧道技术
自动隧道技术 接收主机运行双协议栈;发送主机使用接收主机的IPv4兼容地址作为目的地址。 IPv6/IPv4边界路由器提取嵌入在IPv6地址中的IPv4地址进行数据包封装。 目的主机接收IPv4数据包,取出IPv6分组交给IPv6协议软件处理。
配置隧道技术 接收主机只运行IPv6协议栈;发送主机使用接收主机的IPv6地址作为目的地址。 IPv6/IPv4边界路由器使用自己和目的IPv6/IPv4路由器的IPv4地址进行数据包封装。 目的IPv6/IPv4边界路由器取出IPv4包中的IPv6分组,交给接收主机。
(3)头部转换方案 当IPv6节点和IPv4节点通信时,使用头部转换方案,转换IPv6报头和IPv4报头。 发送给IPv4节点的数据包使用IPv4映射地址作为目的地址,IPv6/IPv4边界节点从IPv4映射地址中得到接收节点的IPv4地址,将IPv6报头转换成IPv4报头,发送给IPv4节点。
IPv4映射地址 80位0,后接16位1,后接32位IPv4地址。如IPv4地址2.13.17.14变成0::FFFF:020D:110E。 当使用IPv6的计算机打算把分组发送给仍然使用IPv4的计算机,而分组所经过的大部分网络是IPv6网络,可以使用IPv4映射地址。
习题 40,41,42,45,46,52,53