4 网络层
4 网络层
4.1 网络层概述
- 网络层的主要任务是实现 网络互连,进而实现数据包在各网络之间的传输。
- 要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输” 还是 “不可靠传输”)
- 网络层寻址问题
- 路由选择问题
- 因特网(Internet)是目前全世界用户数量最多的互联网,它使用 TCP/IP协议栈
- 由于TCP/IP协议栈的网络层使用 网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为 网际层
4.2 网络层提供的两种服务
4.2.1 面向连接虚电路服务
- 可靠通信由网络来保证
- 必须建立 网络层的连接虚电路VC(Virtual Circuit)
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后 每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)
- 通信结束后,需要释放之前所建立的虚电路
- 很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
4.2.2 无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的 首部必须携带目的主机的完整地址
- 这种通信方式所传送的 分组可能误码、丢失、重复和失序。
- 由于 网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价 格低廉(与电信网的交换机相比较)。
- 因特网采用了这种设计思想,也就是 将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
4.3 IPv4地址及其应用
4.3.1 IPv4地址概述
- IPv4地址 就是给因特网(Internet)上的 每一台主机(或路由器)的每一个接口分配一个在全世界范围内是 唯一的32比特的标识符。
4.3.2分类编址的IPv4地址
分类的IPv4地址共分为 5 类:A类地址、B类地址、C类地址、D类地址、E类地址。
注意
- 只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
- 主机号为“全0” 的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1” 的地址是广播地址,不能分配给主机或路由器的各接口
4.3.3 划分子网的IPv4地址
- 子网掩码32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码连续比特1对应网络号和子网号
- 连续比特0来对应主机号
- 子网掩码和对应IPv4地址进行逻辑与运算即可获得该地址所在子网的网络地址
- ::重点::给定一个分类的IP地址和其相应的子网掩码,求的子网划分细节
- 划分出的子网数量
- 每个子网可分配的IP地址数量
- 每个子网的网络地址和广播地址
- 每个子网可分配的最小和最大地址
4.3.4 无分类编址的IPv4地址
- CIDR地址块
- 只需知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:
- 地址块的最小地址/最大地址
- 地址块中的地址数量
- 每地址块聚合某类网络(A类B类C类)多数量
- 地址掩码(或称子网掩码)
- 路由聚合:找共同前缀
- CIDR使用斜线记法,如:192.168.0.1/24
- 网络前缀越长,地址块越小,路由越具体
4.3.5 IPv4地址的应用规划
- 定长网络掩码FLSM
- 变长网络掩码VLSM
4.4 IP数据报的发送和转发过程
- 主机发送IP数据报
判断目的主机是否与自己在同一个网络- 若在同一个网络,属于直接交付
- 若在不同网络,则属于简介交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
- 路由器转发IP数据报
- 检查IP数据报首部是否出错
- 根据IP数据报的目的地址在路由表中查找匹配的条目
4.5 静态路由配置及其可能产生的路由环路问题
- 静态路由配置指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
- 该方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
- 路由条目的类型
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
- 特殊的静态路由条目
- 默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0)
- 特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)
- 黑洞路由(下一跳为null0)
4.6 路由选择协议
4.6.1 路由选择协议概述
- 静态动态路由选择协议对比:
- 静态路由选择
- 由人工配置的网络路由、默认路由、特定主机路由、自动获取路由信息。黑洞路由等都属于静态路由
- 人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
- 一般只在小规模网络中采用。
- 动态路由选择
- 路由器通过路由选择协议
- 比较复杂、 开销比较大。能较好地适应网络状态的变化
- 适用于大规模网络
- 路由选择协议
- 因特网采用分层次的路由选择协议
4.6.2 路由信息协议RIP的基本工作原理
- 路由信息协议RIP(Routing Iformation Proo)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
- RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每-一个网络的距离记录。这是一组距离,称为“距离向量”。
- RIP使用跳数(Hop Coun)作为度量(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的每个路由器都会产生链路状态通告LSA(Link State Adverisement)。LSA中包含以下内容:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
- 使用OSPF的每个路由器都有一 个链路状态数据库LSDB,用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到-致。
- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
- OSPF有以下五种分组类型
- 问候(Hello) 分组
- 数据库描述 (Database Description)分组C
- 链路状态请求(Link State Request)分组
- 链路状态更新 (Link State Update)分组
- OSPF在多点接入网络中路由器邻居关系的建立
- 链路状态确认 (Link State Acknowledgment)分组
- 选举指定路由器DR(designailed router)和备用的指定路由器BDR(backup designated router)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息
- 为了使OSPF能够用于规模很大的网络,OSPF把-一个自治系统再划分为若干个更小的范围,叫做区域(Area)。
- 划分区域的好处就是把利用洪泛法交换链路状体信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络.上的通信量。
4.6.4 边界网关协议BGP的基本工作原理
- 外部网关协议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(通知)报文:用来发送检测到的差错。
4.7 IPv4数据报的首部格式
- 版本占4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 (即IPv4)
- 首部长度占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。
最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。 - 可选字段长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。 - 填充字段确保首部长度为4字节的整数倍。使用全0进行填充。
- 区分服务占8比特,用来获得更好的服务。1998年, 因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。-般情况下都不使用该字段。
- 总长度 占16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。
- 标识 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
- 标志占3比特,各比特含义如下: DF位: 1表示不允许分片; 0表示允许分片;MF位: 1表示“后面还有分片”; 0表示"这是最后一个分片" ;保留位:必须为0。
- 片偏移 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。片偏移以8个字节为单位。
- 生存时间TTL 占8比特.表示IP数据报的生存时间。
最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
IP数据报每经过一个路由器, 路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。 - 协议占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
- 首部检验和占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作, 因此在IPv6中, 路由器不再计算首部校验和,从而更快转发IP数据报。 - 源IP地址和目的IP地址 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
4.8 网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
- 主机或路由器使用ICMP来发送差错报告报文和询问报文。
- ICMP报文被封装在IP数据报中发送。
- ICMP差错报告报文共有以下五种:
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 变路由(重定向)
- 以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
- 常用的ICMP询问报文有以下两种:
- 回送请求和回答
- 时间戳请求和回答
- ICMP应用:
- 分组网间探测PING
- 跟踪路由traceroute
4.9 虚拟网络VPN和网络地址转换NAT
- 利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网被称作虚拟网络VPN
- 由于绝大多数的网络应用都是使用运输层协议TCP或者UDP来传输数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT
- NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
本文来自博客园,作者:mobbu,转载请注明原文链接:https://www.cnblogs.com/mobbu/p/17577534.html