4.1 网络层概述
- 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
- 要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由选择问题
- 因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
4.2 网络层提供的两种服务
- TCP/IP体系结构的因特网的网际层提供的是简单灵活的、无连接的、尽最大努力交付的数据报服务。
4.2.1 面向连接的虚电路服务
- 可靠通信由网络来保证
- 必须建立网络层的连接 -- 虚电路VC(Virtual Circuit)
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需要携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
- 这种通信方式如果再使用可靠传输的网路协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
- 通信结束后,需要释放之前所建立的虚电路。
- 很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
4.2.2 无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序。
- 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 因特网采用这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网的核心。
4.3 IPv4地址
4.3.1 IPv4地址概述
- 在TCP/IP体系中,IP地址是一个最基本的概念。
- IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32比特的标识符。
- IP地址由因特网名字和数字分配机构ICANN进行分配。
- IPv4地址的编址方法经历了三个历史阶段:
- 32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
4.3.2 分类编址的IPv4地址
- 注意事项:
- 只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
- 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
- A类地址
- 最小网络号为0,保留不指派
- 第一个可指派的网络号为1,网络地址为1.0.0.0
- 最大网络号127,作为本地环回测试地址,不指派
- 最小的本地环回测试地址为127.0.0.1
- 最大的本地环回测试地址为127.255.255.254
- 最后一个可指派的网络号为126,网络地址为126.0.0.0
- 可指派的网络数量为2^(8-1) -2 = 126 (减2的原因是出去最小网络号0和最大网络号127)
- 每个网络中可分配的IP地址数量为2^24 - 2 = 16777214(减2的原因是主机号为全0的网络地址和全1的广播地址)。
- B类地址
- 最小网络还也是第一个可指派的网络号128.0
网络地址为128.0.0.0 - 最大网络号也是最后一个可指派的网络号191.255
网络地址为191.255.0.0 - 可指派的网络数量为2^(16-2) = 16384
- 每个网络中可分配的IP地址数量为2^16 - 2 = 65534(减2的原因是除去主机号全0的网络地址和全1的广播地址)
- C类地址
- 最下网络号也是第一个可指派的网络号192.0.0
网络地址为192.0.0.0 - 最大网络号也是最后一个可指派的网络号223.255.255
网络地址为223.255.255.0 - 可指派的网络数量为2^(24-3) = 2097152
- 每个网络中可分配的IP地址数量为2^8 - 2 = 254(减2的原因是除去主机号为全0的网络地址和全1的广播地址)
- 特殊的IPv4地址
- 地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0;
- 以127开头且后面三个字节非“全0”或“全1”的IP地址是一类特殊的IPv4地址,既可作为源地址使用,也可作为目的地址使用,用于本地软件环回测试;
- 地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。
- 给下图各网络的IPv4地址分配方案。请按照节约IP地址的原则进行分配。
4.3.3 划分子网的IPv4地址
- 为新增网络申请新的网络号会带来以下弊端:
- 需要等待时间和花费更多的费用
- 会增加其他路由器中路由表记录的数量
- 浪费原有网络中剩余的大量IP地址
- 从主机号部分借用一部分作为子网号
- 32比特的子网掩码可以标明分类IP地址的主机号被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址。
- 已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。
(减2是要去掉主机号为“全0”的网络地址和“全1”的广播地址) - 默认子网掩码是指在未划分子网的情况下使用的子网掩码
4.3.4 无分类编址的IPv4的地址
- 划分子网在一定程度上缓解了因特网在发展中遇到的问题,但是数量巨大的C类网因为其地址空间大小并没有得到充分利用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
- 为此,因特网工程任务组IETF又提出了采用无分类编址的办法来解决IP地址紧张的问题,同时也成了了IPv6工作组。
- 1993年,IETF发布了无分类域路由选择CIDR(Classless Inter-Domain Routing)的RFC文档。
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
- CIDR可以更加有效分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
- CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
- CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址快”。
- 我们只直到CIDR地址快中的任何一个地址,就可以直到该地址块的全部细节:
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量
- 地址掩码(也可继续称为子网掩码)
- 请给出CIDR地址块128.14.35.7/20的全部细节(最小地址、最大地址、地址数量、聚合C类网数量、地址掩码)。
- 路由聚合(构造超网)
- 网络前缀越长,地址块越小,路由越具体
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
4.3.5 IPv4地址的应用规划
- 定长的子网掩码FLSM(Fixed Length Subnet Mask)
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
- 变长的子网掩码VLSM(Variable Lenght Subnet Mask)
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
- 假设申请到的C类网络为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。(定长的子网掩码划分)
- 变长的子网掩码划分
4.4 IP数据报的发送和转发过程
- IP数据报的发送和转发过程包含以下两个部分:
- 主机发送IP数据报
- 路由器转发IP数据报
- 为了将中重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,我们忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
- 间接交付
- 路由器收到IP数据报后如何转发?
- 检查IP数据报首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机
若没有出错,则进行转发 - 根据IP数据报的目的地址在路由表中查找匹配的条目:
若找到匹配的条目,则转发给条目中指示的下一跳
若找不到,则丢弃该IP数据报并通告源主机
- 下列网络设备中,能够抑制广播风暴的是:路由器
- 中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域;
- 网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域;
- 路由器工作在网络层,既能隔离冲突域,也能隔离广播域。
4.5 静态路由配置及其可能产生的路由环路问题
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
- 静态路由配置
- 默认路由
- 特定主机路由
- 静态路由配置错误导致路由环路
- 为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
- IP数据报进入路由器后,TTL字段的值减1.若TTL的值不等于0,则被路由器转发,否则被丢弃。
- 聚合了不存在的网络而导致路由环路
- 网络故障而导致路由环路
4.6 路由选择协议
4.6.1 路由选择协议概念
- 静态路由选择
- 由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 动态路由选择
- 路由器通过路由选择协议自动获取路由信息。
- 比较复杂、开销比较大。能较好地适应网络状态的变换。
- 适用于大规模网络。
- 因特网所采用的路由选择协议的主要特点:
- 自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)
- 因特网采用分层次的路由选择协议
- 常见的路由选择协议
- 路由器的基本结构
4.6.2 路由信息协议RIP的基本工作原理
- 路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,RIP协议使用运输层的用户数据报UDP进行传送。
- RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”。
- RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网路的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1。
- 允许一条路径最多只能包含15各路由器。“距离”等于16时相当于不可达。
因此,RIP只适用于小型互联网。
- RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
- 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
- RIP包含以下三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
- RIP的基本工作过程
- 路由器刚开始工作时,只知道自己到直连网络的距离为1。
- 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
- 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
- RIP的路由条目的更新规则
- 到达目的网络,相同下一跳,最新消息,更新发现了新的网络,添加
- 发现了新的网络,添加
- 到达目的网络,不同下一跳,新路由优势,更新
- 到达目的网络,不同下一跳,等价负载均衡
- 到达目的网络,不同下一跳,新路由劣势,不更新
- RIP存在“坏消息传播得慢”的问题
- “坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减少该问题带来的危害。
- 限制最大路径距离为15(16表示不可达)
- 当路由表发生变化时就立刻发送更新报文(即“触发更新”),而不是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送(即“水平分割”)
4.6.3 开放最短路径优先OSPF的基本工作原理
- 开放最短路径优先OSPF(Open Shortest Path First),是为客服RIP的缺点在1989年开发出来的。
- 开放标明OSPF协议不是受某一家厂商控制,而是公开发表的。
- 最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF。
- OSPF是居于链路状态的,而不是像RIP那样基于距离向量的。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
- 链路状态是指本路由器都和哪些路由器相邻,以及相邻链路的“代价”(cost)。
- “代价”用来表示费用、距离、时延、带宽等。这些都是由管理人员来决定的。
- 举例
- OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
- Hello分组封装在IP数据报中,发往组播地址224.0.0.5;
- - 发送周期为10秒
- 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。
- 使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Avdertisement)。LSA中包含以下内容:
- 直接网络的链路状态信息
- 邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
- R4的链路状态通告LSA
- 直接网络N1的链路状态信息
- 邻居路由器R1的链路状态信息
- 邻居路由器R3的链路状态信息
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即构建各自的路由表。
- OSPF有以下五种分组类型
- 类型1,问候(Hello)分组
用来发现和维护邻居路由器的可达性。 - 类型2,数据库描述(Database Description)分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息 - 类型3,链路状态请求(Link State Request)分组
向邻居路由器请求发送某些链路状态项目的详细信息。 - 类型4,链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态洪泛发送,即用洪泛法对全网更新链路状态。 - 类型5,链路状态确认(Link State Acknowlwdgement)分组
这是对链路状态更新分组的确认。
- OSPF的基本工作过程
- OSPF在多点接入网络中路由器邻居关系的建立
- 选取指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息
- 为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)
4.6.4 边界网关协议BGP的基本工作原理
- 因特网采用分层的路由选择协议
- 内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)
- 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
- 无需考虑自治系统外部其他方面的策略
- 外部网关协议EGP(例如边界网关协议BGP)
- 在不同自治系统内,度量路由的“代价”(距离、带宽、费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
- 自治系统之间的路由选择必须考虑相关策略(政治、经济、安全等)
- BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。
- 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人“。
- 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文以建立BGP会话
- 利用BGP会话交换路由信息(例如:增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。
- BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
- 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找到到达各自治系统的较好的路由。也就是构造出树型结构,不存在回路的自治系统的连通图。
- BGP适用于多级结构的因特网
- BGP-4有以下四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
- NOTIFICATION(通知)报文:用来发送检测到的差错。
- 直接封装RIP、OSPF、BGP的报文的协议分别是:
4.6.5 三种路由协议的比较
协议 | RIP(应用层协议) | OSPF(网络层协议) | BGP |
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路由选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻的路由器 | 网络中所有的路由器 | 和本结点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次,整个路由表;非首次,有变化的部分 |
4.7 IPv4数据报的首部格式
- 首部长度字段
- 占4比特,表示IP数据报首部的长度。该字段的取值为4字节为单位。
- 最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
- 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
- 可选字段
- 长度从1个字节到40个字节不等。用来支持排错、测量及安全的措施。
- 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度称为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
- 填充字段
- 确保首部长度为4的整数倍。使用全0进行填充。
- 区分服务
- 占8比特,用来获取更好的服务。
- 该字段在旧标准中叫做服务类型,实际上一直没有被使用过。
- 利用该字段的不同数值可提供不同等级的服务质量。
- 只有在使用区分服务时,该字段才起作用。一般情况下都不适用该字段。
- 总长度
- 占16比特,表示IP数据报的总长度(首部+数据载荷)。
- 最大取值为十进制的65535,以字节为单位。
- 标识
- 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
- 标志
- 占3比特,各比特含义如何:
- DF位:1表示不允许分片;0表示允许分片
- MF位:1表示后面还有分片;0表示这是最后一个分片。
- 片偏移
- 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
- 片偏移以8个字节为单位。
- 对IPv4数据报进行分片
- 生存时间TTL
- 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
- 现在以”跳数“为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
- 举例:生存时间TTL字段的作用 -- 防止IP数据报在网络中永久兜圈
- 协议
- 占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
- 常用的一些协议和相应的协议字段值如下。
- 首部检验和
- 占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码更简单,称为因特网检验和。
- IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
- 由于IP层本身并不提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。
- 源IP地址和目的IP地址
- 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
4.8 网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
- 主机或路由使用ICMP来发送差错报告报文和询问报文。
- ICMP报文被封装在IP数据报中发送。
- ICMP差错报告报文共有以下五种:
- 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络可不达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点应当把数据报的发送速率放慢。
- 时间超过:当路由器收到一个目的地址不是自己的IP数据报时,会将其生存时间TTL字段的值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,则丢弃该IP数据报外,还要向源点发送时间超过报文。另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
- 参数问题:当路由器或目的主机收到IP数据报后,根据其首部种的检验和字段发现首部在传输过程种出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机直到下次应将数据报发送给另外的路由器(可通过更好的路由)。
- 以下情况不应该发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
- 常用的ICMP询问报文有以下两种:
- 回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否可达及了解其有关状态。 - 时间戳请求和回答
ICMP时间戳请求报文是请求某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
这种询问报文用来进行时钟同步和测量时间。
- ICMP应用举例
- 分组网间探测PING(Packet InterNet Groper)
- 用来测试主机或路由器间的连通性
- 应用层直接使用网际层的ICMP(没有运输层的TCP或UDP)
- 使用ICMP回送请求和回答报文
- 跟踪路由tracerouter
- 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
- Windows版本
- tracert命令
- 应用层直接使用网际层ICMP
- 使用了ICMP回送请求和回答报文以及差错检测报告报文。
- Unix版本
- traceroute命令
- 在运输层使用UDP协议
- 仅使用ICMP差错报告报文
4.9 虚拟专用网VPN域网络地址转换NAT
- 虚拟专用网VPN(Virtual Private Network)
- 利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公用地址。
- 如下图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这样VPN称为远程接入VPN。
- 网络地址转换NAT(Network Address Translation)
- 虽然因特网采用了无分类编址方式来缓解IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有解除。
- 1994年提出了一种网络地址转换NAT的办法再次缓解了IPv4地址空间即将耗尽的问题。
- NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
4.10 IPv6地址
- IPv6的概念
- IPv6的地址用16B(即128bit)表示。
- IPv6减少了头部字段数目,仅包含7个字段
- IPv6支持QoS,以满足实时、多媒体通信的需要
- 由于目前网阔传输介质的可靠性较高,出现比特错误的可能性很低,且数据链路层和传输层有自己的校验,为了效率,IPv6没有校验和字段。
- IPv6的首部长度是固定不变的,因此不需要首部长度字段。
- IPv6中不允许分片。因此,如果路由器发现到来的数据报太大而不能转发到链路上,那么丢弃该数据报,并向发送方发送一个指示分组太大的ICMP报文。
- IPv6数据报的目的地址可以是以下三种基本类型地址之一:
- 单播:单播就是传统的点对点通信
- 多播:多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。
- 任播:是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是举例最近的一台计算机。
- IPv6扩展了IPv4地址的分级概念,它使用以下3个等级:
- 第一级(顶级)指明全球都直到的公共拓扑
- 第二级(场点级)指明单个场点
- 第三级指明单个网络接口。
- IPv6地址采用多级体系主要是为了使路由器能够更快地查找路由。
- IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略:
- 双协议栈技术:指在一台设备上同时安装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。
- 隧道技术:是将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输。
4.11 IP组播
- IP数据报的三种传输方式:
- 单播:用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点的传输方式。
- 广播:是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点的传输方式。
- 组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的结点才开始复制和分发,是一种点对多点传输方式。
- 单播:在发送者和每一接收者之间需要单独的数据信道。
- 组播:提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网路(如果有组播路由器的支持)。
- IP组播地址
- IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备被分配一个组播组IP地址(一群共同需求主机的相同标识)。
- 组播地址范围为244.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是单播地址。
- 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
- 对组播数据报不产生ICMP差错报文。
- 并非所有D类地址都可以作为组播地址。
- 硬件组播
- 同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。组播MAC地址以16进制值01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。
- IGMP协议于组播路由选择协议
- 网际组管理协议IGMP:IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
- ICMP和IGMP都是用IP数据报传递报文。
- IGMP工作的两个阶段:
- 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声称自己要成为改组的成员。本机组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
- 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组相应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机相应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。
- 组播路由选择协议
- 组播路由协议目的是找出以源主机为根节点的组播转发树。
- 构造树可以避免在路由器之间兜圈子。
- 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
- 三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)
4.12 移动IP
- 移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网路权限在漫游过程中不发生任何改变。
- 移动结点: 具有永久IP地址的移动设备。
- 归属代理(本地代理):一个移动结点的永久“居所”称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体叫做归属代理。
- 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
- 外部代理(外地代理):在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理。
- 转交地址(辅地址):可以是外部代理的地址或动态配置的一个地址。
- 移动IP通信过程
- A光进入外部网络:
- 获得外部代理的转交地址(外部代理广播报文)。
- 移动节点通过外部代理发送注册报文交给归属代理(包含永久地址&转交地址)。
- 归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后到达该归属代理的数据报且要发往移动节点的数据报将被封装并以隧道方式发给转交地址),并返回一注册响应报文。
- 外部代理接收注册响应,并转发给移动节点。
- A移动到下一个网络:
- 在新外部代理登记注册一个转交地址。
- 新外部代理给本地代理发送新的转交地址(覆盖旧的)。
- 通信
- A回到了归属网络:
- A向本地代理注销转交地址。
- 按原始方式通信。
4.14 网络层设备
- 路由器:是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
- 路由选择:根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
- 分组转发:
- 交换结构:根据转发表(路由表得来)对分组进行转发。
- 若收到RIP/OSPF分组等,则把分组送往路由选择处理机:若收到数据分组,则查找转发表并输出。
- 输入端对线路上收到的分组的处理
- 输出端口将交换结构所传来的分组发送到线路
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必将减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
- 三层设备的区别
- 路由器:可以互联两个不同网络层协议的网段。
- 网桥:可以互联两个物理层和链路层不同的网段。
- 集线器:不能互联两个网络层不同的网段。