第五章 网络层(三)
IP 控制协议
- 简介
- IP协议就是提供一种公共的数据格式,使得不同网络的数据可以相互传递
- IP协议只负责传送IP数据包,无法监视和控制网络中出现的一些问题,这些工作由Internet的控制协议来完成
- ICMP
- ARP
- RARP 、BOOTP和DHCP
- IP层除了IP协议之外还有很多的协议:ICMP /ARP /RARP 、BOOTP和DHCP等
ICMP 协议 (Internet Control Message Protocol)
- 这个协议的主要作用就是处理IP网络传递当中出现的一些问题,比如数据报的丢失、重复、延迟、乱序等
- ICMP提供了一种把通信服务中的差错向源站点报告的机制
- 2个主要功能
- 传递一些差错信息
- 传递一些控制信息
ICMP报文格式
- ICMP是控制消息和差错消息传递的一个报文,这个报文本身是由IP协议来传递的,这个报文会被当做IP的数据部分封装在一个IP的数据包里面,发送到相应的结点.
-
这个报文本身又分为2个部分,跟所有的协议报文一样,分为报头部和数据区,数据区没有什么用,主要内容都在头部
- 类型: 这一条ICMP是什么消息
- 代码: 消息的具体类型
- 校验和: 校验插座
ICMP报文主要类型
- 差错报文
- 提供网络当中出现的一些问题
- 控制报文
- 传递一些控制信息
- 请求应答报文
- 传递一些结点和结点之间的互通消息
ICMP应用举例
- 测试报文的可达性
- 使用ping命令(即调用ping过程)时,将向目的站点发送一个ICMP回应请求报文(包括一些任选的数据),如目的站点接收到该报文,必须向源站点发回一个ICMP回应应答报文,源站点收到应答报文(且其中的任选数据与所发送的相同),则认为目的站点是可达的,否则为不可达
- ping命令的实现
- 路由跟踪(tracert(Unix下为traceroute))
- tracert过程是通过ICMP数据报超时报文来得到一张途经路由器端口列表的
- 源主机向目的主机发一个IP报文,并置hop为1,到达第一个路由器时,hop减1,为0,则该路由器回发一个ICMP数据报超时报文,源主机取出路由器的IP地址即为途经的第一个路由端口地址
- 接着源主机再向目的主机发第二个IP报文,并置hop为2,然后再发第三个、第四个IP数据报,… …直至到达目的主机
- 但互联网的运行环境状态是动态的,每次路径的选择有可能不一致,所以,只有在相对较稳定(相对变化较缓慢)的互联网中,tracert才是有意义的
- 得到路径中最小的MTU
- 源主机发送一系列的探测IP数据报,并置DF = 1,即不允许分段,如途经某个网络的MTU较小,则路由器将丢弃该数据报并发回一个ICMP数据报参数错,要求分段,源主机则逐步减小数据报长度,并仍置DF = 1,直至某个探测报文成功到达目的主机,即得到路径中的最小MTU
ARP协议
- 地址解析协议(Address Resolution Protocol)
- RARP 、BOOTP和DHCP(略讲)
IP 路由
- IP的路由表是怎样构造出来的呢?
路由器和路由表
- 路由器是网络层的一个智能设备,承担了路由选择的任务,选择路由的依据是一张路由表,路由表指明了要到达某个地址该走哪一条路径
- 在路由表中,并非为每一个具体的目的主机的IP地址指明路径,而是为目的主机所在的网络指明路径,这样路由表的大小才落在可操作的范围内,因此查找路由表的依据是目的主机的网络地址
- 路由器对每一个接收到的分组(IP数据包),取出它的目的IP地址,然后根据目的IP地址中的网络地址查找路由表,确定下一步的传输路径,并从相应的路由器端口将分组送出,传送的路径轨迹是由所经过的路由器一步一步确定的
- 路由表
- 决定到某个子网去,下一站该送交哪一个路由器端口
- R2的路由表为
- 决定到某个子网去,下一站该送交哪一个路由器端口
静态路由和动态路由
- 路由表是怎样生成的呢?-两种方法:静态路由和动态路由
- 静态路由(Static Route)
- 人工在路由器上配置路由表(手工的告诉路由器该怎么走)
- 优点: 路由器不必为路由表项的生成和维护花费大量时 间,有时可以抑制路由表的增长
- 缺点:人工配置开销大,网络拓扑结构变更时需重新配 置路由表,一般只在小型网络或部分链路上使用
- 动态路由(Dynamic Route)
- 由动态路由协议自动建立并维护路由表
- 优点:网络拓扑发生变化时,动态路由协议将自动更新 路由表
- 缺点:路由器路由计算开销大
- 静态路由和缺省路由
- 缺省路由是静态路由的一个特例,也需要人工配置
- 互联网上有太多的网络和子网,受路由表大小的限制,路由器不可能也没有必要为互联网上所有网络和子网指明路径
- 凡是在路由表中无法查到的目标网络,在路由表中明确指定一个出口,这种路由方法称之为缺省路由
路由协议
- 静态路由是我通过这个拓补结构,然后通过这个路由器的特定命令来设置到哪个子网去找,走哪个端口
- 动态路由:怎么使得路由器知道,网络的某些拓补结构发生了变化,这就需要消息传递拓补结构变化的情况,那么传递拓补结构变化的消息呢?—-路由协议
- 路由协议就是传递网络拓补结构的
- 常见协议如下面3中: RIP协议 /OSPF协议/BGP协议
RIP协议 (略)
OSPF协议 (略)
BGP协议 (略)
IPv6
- 现在互联网上用的IP协议都是IPV4的版本.
- 之前讲的IP协议就是IPV4
- IPV4有很多不足的地方
- 美国推出下一代Internet计划,主要贡献包含了推出了一个新的IPV6的协议
IPv4的不足
- 地址基本耗尽,这是当前最棘手的问题
- 路由表越来越大
- 功能不足,缺少对多媒体信息传输的支持
- 缺少对高速传输的支持
- 缺少对安全的支持
- 缺少对主机漫游的支持
IPv6的主要改进
- 更大的地址空间:16字节,128位 (IPV4:32位)
- 首部的 简化:只有7个固定域,撤消了有关分段的域和校验和域,以便更快地处理分组,提高路由器的吞吐量,缩短延时
- 对IP的数据包做了改进,之前分为头部+承载部分(数据部分)
- 现在是把头部分为:固定头部+一系列的扩展头部
- 固定头部放每一个数据包必须要有的信息,可有可无的不放置了
- 扩展头部: 分段/校验等部分放在这里
- 更好地支持选项:选项是有次序的,以便路由器可简单地跳过与它无关的选项,加快分组的处理速度
- 增强了安全性:认证和隐私是关键特征
- 更加关注服务质量:以支持Internet上日益增长的多媒体应用
IPv6数据报
- 数据包格式
- 基本头部和扩展头部
- 基本头部格式
- 基本头部的格式说明
- 版本(Version):0 ~ 3位 (在IPV6中就是6)
- 流量类别(Traffic class):4 ~ 7位 (用来支持不同的服务质量)
- 0 – 7:可进行拥塞控制,拥塞时可放慢传输速率
- 8-15:实时应用,不可进行拥塞控制,不重发
- 流标签(Flow label):8 ~ 31位(为了支持多媒体提出的)
- 把在时间上敏感的一串报文,打上同一个标记,路由可优先通过
- 负载长度(Payload length):16位
- 除基本报头以外的长度
- 下一个头部(Next header):8位
- 指出扩展头部是什么类型 (指出基本头部后面是哪一个扩展头部,若是没有扩展头部,直接指向数据区了)
- 一个IPv6报文可以带有零个、一个或多个扩展头,由前一个头中的下一个头部域进行说明,如有扩展头部,则说明扩展头部的类型,如没有其它扩展头部,则说明数据报中携带的数据类型,如:
- 驿站限制(Hop Limit跳数限制):8位
- 类似IPv4的生存时间(Time To Live),在经过每个节点转发时减一,当Hop数被减至零时则抛弃该报文
- 源、目的地址:128位
- 如按IPv6的128位地址均匀分配,意味着地球上每M2平均分配的地址数有7 x 1025
- IPv6格式的扩展头部
- IPv6定义的扩展头部应按顺序排列
- IPv6定义的扩展头部应按顺序排列
- 基本头部和扩展头部
IPv6的分段与重组
- 每个分段将增加一个分段头部,并紧随基本头部之后
- 每个分段的基本头部即原基本头部,但其中的负载长度需作修改
- 一般情况下,要求报文长度小于576字节,若>576字节,由源站负责分段工作,沿途路由器不作分段和重组工作,路由器发现一个大于MTU的数据包,则丢弃,并发一ICMP消息给源站,由源站重新划分数据包并重发
IPv6地址
- IPv6地址表示法
- 冒分十六进制表示法
- X:X:X:X:X:X:X:X 其中X表示地址中16位二进制数的十六进制值
- 例:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
- 零压缩法
- 如其中有多个连续的零,则可用零压缩法
- 如:1080:0000:0000:0000:0008:0800:200C:417A 可写成:1080::8:800:200C:417A
- IPv4地址在IPv6中的表示
- X:X:X:X:X:X:d.d.d.d 最后32位地址为IPV4的地址点分十进制表示
- IPv4地址202.120.5.100 可写成 ::202.120.5.100
- 冒分十六进制表示法
- IPv6地址类型
- 在IPV4中,把地址分为A/B/C/D/E类
- IPV6中分为如下3类:
- 单目地址 Unicast
- 多目地址(组地址)Multicast
- Anycast地址
- 单目地址
- 跟IPV4一样一个IP地址对应一个网络接口,但是分配方式不一样
- IPV4先申请一个网络号,然后根据地址的类型进行分配
- IPV6不分类型,是统一的一种分配方式,是把128位分成若干组,前3位是010(表示改地址单址传输,是单目地址),即所有单目地址 (Unicast)前3位都是010
- 第二部分有5bit,表示这个地址由谁分配给我的,目前IPV6地址由2个机构分配:CCITT/Internet组织,这五个bit就是用来区分的
- IPV6组网
- IPV6组网有很多ISP,ISP想CCITT/Internet去申请自己的一组地址,就是前面的一组编号(16位(提供者标识符))
- 如果某个单位想组网,就向某个ISP申请,ISP又给你分配一定的编号(24位(用户标识符))
- 这个单位里面有很多部门,可以进行子网划分,所以把拿到的部分分为子网部分(32位(子网标识符))+主机部分(48位(结点标识符))
- 标识一个接口的标识符,发送的数据报将被送到该地址所标识的接口上
- 地址格式:
- IPV6首先是所有的地址分为单址传输/多址传输/Anycast这3种方式,通过前面3位来区分
- 对于单址传输有2个机构可以分配(CCITT/Internet),用5位进行编码
- 在IPV6中,注册机构为ISP进行分配的地址,位数是不定的,不像IPV4根据A/B/C类分配固定的网络号位数,IPV6中是没有规定的,ISP标识符可大可小,Internet推荐ISP(提供者标识符)占16位(只是推荐,不固定)
- 用户想ISP申请,ISP分配给他一个网络号,这个网络号又称用户标识符,推荐24位
- 32+48: 用户单位自己分配,推荐:32位子网号(子网标识符),48位主机号(结点标识符)
- 保留了两个地址:
- 跟IPV4一样一个IP地址对应一个网络接口,但是分配方式不一样
- 多目地址(组地址)Multicast
- 标识一组接口(一般属于不同的站点)的标识符,发送的数据报将被送到该地址所标识的一组接口上
- IPv6没有广播地址,其功能由多目地址了实现
- Anycast地址
- 标识一组接口(一般属于不同的站点)的标识符,发送到一个Anycast地址的数据报将被送到该地址所标识的一组接口中的任意一个接口上(根据路由协议实测距离最近的一个接口)
- multicast与anycast地址的区别: multicast必须将数据报送到该组的每一个成员;anycast地址只需送到组中的任意一个地址,一般为最近的一个
- 所有类型的Ipv6地址均指定给接口,而不是节点,通常一个单目地址只能分配给一个接口,而一个接口却可以拥有多个任意类型(单目、多目、Anycast)的Ipv6地址
IPv4到IPv6的过渡
- IPV4到IPV6的过渡
- 双协议站:过渡时期,站点必须同时支持IPv4和IPv6
- 隧道技术:IPv6主机之间通信必须使用IPv4的隧道
- 首部转换:用于发送方使用IPv6,而接收方使用IPv4
- IPv6试验网——6bone
- 作为向下一代互联网络协议过渡的重要步骤,国际的IPv6试验网——6bone在1996年成立了。现在,6bone已经扩展到全球50多个国家和地区,成为IPv6研究者、开发者和实践者的主要平台。
- CERNET(中国教育和科研网)国家网络中心于1998年6月加入6bone,同年11月成为其骨干网成员。1999年,CERNET在国内教育网范围内组建了IPv6试验床,并从6bone获得p-TLA(pseudo-Top Level Aggregation,伪顶级聚类)3FFE:3200::/24的地址空间;并且建立了5条以隧道为基础的国际IPv6虚拟链路,直接通达美国、英国和德国的IPv6网络,间接地与几乎所有现有的6bone成员互连。