04 网络层
第四章 网络层¶
统计信息:字数 12419 阅读25分钟
P41 4.1 网络层概述¶
网络层:实现网络互连,实现数据包在各个网络之间的传输
解决问题:向运输层提供什么服务;网络层寻址;路由选择(网络拓扑经常改变的大型互联网,路由表不适用)
因特网使用 TCP/IP 协议,网络层也称为网际层
P42 4.2 网络层提供的两种服务¶
面向连接的虚电路服务:网络层建立虚电路连接,通信双方沿着虚电路发送分组;通信结束后需要释放虚电路。互联网没有使用这个思路。
无连接的数据报服务:可靠通信由主机保证,不需要建立网络层连接,每个分组走不同的路径;每个分组首部携带目的主机的完整地址。通信的分组可能误码,丢失,重传,失序等。网络不提供端到端的可靠传输服务,路由器比较简单,价格低。
这样,将复杂的网络处理功能放在互联网边缘(主机内部的运输层),因特网核心尽最大努力分组交付。
后文内容:网络层如何传输 IP 数据报
P43 4.3.1 IPv4地址概述¶
IPV4是因特网每一台主机(路由器)的每一个接口,分配一个在世界范围内唯一的32位比特的标识符(通常使用十进制表示方法使用)。2011年已经分配完毕,新的 IPV6 正在部署。
IPV4经过三个阶段:分类编址;划分子网;无分类编址
P44 4.3.2 分类编址的IPv4地址¶
IPV4分成:ABCDE类地址。
A 前8位是网络号,后24位是主机号(网络号小于127)
B 前16位是网络号,后16位是主机号(网络号128-191)
C 前24位是网络号,后8位是主机号(网络号192-223)
D 多播地址(1110)
E 保留
ABC三类地址可以分配;全部是0的是网络地址,全部是1的是广播地址,这两个不能分配给主机或者路由器的接口
A类地址:第一个可指派的网络号时1,网络地址是 1.0.0.0。最大网络号是 127,作为本地环回测试地址,不指派。本地环回测试地址:127.0.0.1 到 127.255.255.254。
B类地址:第一个网络号是 128.0 网络地址是 128.0.0.0 最后一个是 191.255 网络地址是 191.255.0.0 每个网络中可分配的IP地址数量可以算出
C类地址:第一个网络号 192.0.0 网络地址是 192.0.0.0 最大网络号是 223.255。255 网络地址是 233.255.255.0
P45 4.3.3 划分子网的IPv4地址¶
如果新增一个子网,重新申请新的网络号,那么需要时间金钱成本,浪费原有网络中剩余的IP地址,会增加其他路由表记录的数量。
所以,使用子网掩码,从IP地址中的主机号部分,借用了几个比特作为子网号。
子网掩码:使用连续的0表示主机号,使用连续的1表示网络号和子网号。将 IP 地址和子网掩码与运算,可以获取所在子网的网络地址。
例如:网络号是 218。75.230.0,子网掩码 255.255.255.128 ,属于C类地址,前24位是网络号,后面8位是主机号。然后子网掩码 128 ,就是第一个是子网号(分配了两个子网0-1)每个子网可以分配126个地址(去掉全部0和1的两个地址,是网络地址和广播地址)。
P46 4.3.4 无分类编址的IPv4地址¶
在IPV4后面加上斜线,在斜线后面写上网络前缀所占的比特数量
CIDR 地址块,无分类域间路由选择:没有ABC类地址区别,没有划分子网,可以有效分配IPV4的地址空间。
128.14.35.7/20 表示网络前缀占用20比特,主机前缀占用32-20=12比特
路由聚合:网络前缀越长,地址块越小,路由更具体。查表转发时,选择匹配的网络前缀最长的那条路由。
P47 4.3.5 IPv4地址的应用规划¶
定长的子网掩码(FLSM)和变长的子网掩码(VLSM)
就是给定一个实际场景(25台主机),然后分析使用什么子网类型等,申请什么类型的IP地址。根据实际子网数量,计算需要划分的子网数量(子网掩码)2的指数。优先分配主机多的子网。
定长的子网掩码:不同子网使用同样的子网掩码,这样每一个子网分配的地址数量相同,可能造成地址的浪费。
变长的子网掩码:不同子网,根据主机数量不同,设置不同的子网掩码,按序分配,这样最大利用地址。
P48 4.4 IP数据报的发送和转发过程¶
发送过程:主机发送IP数据报(如果同一个网络,直接交付;如果不是同一个网络,属于简介交付,需要传输给主机所在网络的网关-即路由器,由路由器帮忙转发)
转发过程:路由器转发IP数据报。路由器转发IP数据报的过程:检查IP数据报首部,如果正确,进行转发;如果错误,丢弃IP数据报,报告原始主机。路由器可以处理广播风暴。
IP 层不负责可靠传输,路由器不能确保传输的IP分组不丢失
主机的默认网关,需要配置成路由器的IP地址,这样主机才能通过路由器,发送IP数据报。如果默认网关配置错误,那么无法将IP分组发送到路由器。
P49 4.5 静态路由配置和路由环路问题¶
静态路由配置:用户给路由器人工配置路由表(小型网络中使用)
每个节点的路由器有对应的路由表,转发报文时,选用目的网络前缀最长的路由条目进行转发(优先精确匹配)
如果静态路由配置错误,可能造成路由环路问题(R1到R2,R2到R1)
为了防止IP数据报路由环路问题,在IP报文首部设置了生存时间TTL,每次传播都减少1,如果TTL减小到0(认为存在路由环路),那么就被丢弃。
如果由于网络问题,造成了路由表中目标地址不存在,就是路由黑洞,该路由条目自动失效。
P50 4.6.1 路由器和路由信息协议RIP¶
RIP 特点:
自适应:动态路由选择,适应网络状态变化
分布式:不同路由器交换路由信息
分层次:整个因特网划分成很多小的自治系统(子网内部网关协议IGP,子网之间外部网关协议EGP)
IGP 分为很多协议(RIP 路由信息协议)
路由器基本结构 = 路由选择(内部路由表算法)+分组转发(输入输出端口,不同层级报文的解析和封装)路由表对网络拓扑进行计算优化,仅包括目的网络到下一跳的映射。
P51 4.6.2 RIP的基本工作原理¶
RIP 使用跳数表示到达目的网络的距离(路由器直连网络距离为1,一个路径上最多15个路由器,超过15就不可达,仅适用于小型互联网)
RIP 认为经过路由器最少是最优解;当到底同一个网络有多条路由后,可以进行等价负载均衡。
RIP:和相邻路由器交换信息;交换自己的路由表,周期性交换(例如30s)
路由器刚开始工作时,只知道自己到直连网络的距离是1,仅和相邻的路由器周期交换并更新路由信息。若干次交换更新后,每个路由器知道到达本AS内各个网络的最短距离和下一跳地址(收敛)。
路由表更新举例:
- 如果有新的网络,直接添加;
- 如果到目标网络有新的路由,如果新的路由有优势,使用新的路由
- 如果到目标网络有新的路由,如果和已有相等,负载均衡
- 如果到目标网络有新的路由,如果旧的路由有优势,不更新
坏消息传的慢;路由环路(如果路由表变化了,立即发出更新报文,而不是等待周期性发出报文)如果有路由环路,显示最大跳数是15,避免死循环。
P52 4.6.3 开放最短路径优先OSPF¶
open shortest path first
使用了 Dijkstra 的最短路径算法 SPF,基于链路状态,并不是基于距离向量的,这个算法保证了不会出现路由环路。
链路状态:本路由器和哪些路由器相邻,链路状态如何(带宽,时延,费用等)就是一个有向图,不同路径的权重不同(人为设置权重)
不同路由器之间问候分组,建立维护邻居关系(IP数据报,10s周期发送),测试连接状态,将状态存储在 LSDB 链路状态数据库中。
路由器基于LSDB进行最短路径优先算法SPF计算,构建出到达其他路由器的最短路径,构建路由表。
在多点接入网络中,设置一个指定路由器 DR 执行 SPF,其他非DR的路由器,只和DR建立邻居关系。还有备用制定路由器(BDR)
P53 4.6.4 边界网关协议BGP¶
在不同系统内,图的权重不同,所以不能用之前的模型计算路由表。
所以使用外部网关协议 EGP(BGP 是其中的一种,边界网关协议)
外部需要考虑综合因素(政治经济安全)不仅考虑带宽和费用
在边界处的路由器发起通信(TCP报文段通信)
P54 4.7 IPv4数据报的首部格式¶
这部分题目都是大题(重点掌握)
固定部分(20字节)
- 首部长度:以四字节为单位(min 5 max 15)最小20字节(只有20字节的首部),最大60字节(首部长度20+可变部分40)
- 区分服务:8比特,不同数值表示提供不同等级的服务质量(可选)
- 总长度(16比特):IP数据报总长度(首部+数据载荷)
- 标识:同一个数据报的个分片数据报,标识相同
- 标志:MF 01 表示是否允许分片,DF 01 是否是最后一个分片
- 片偏移:分片数据报的数据载荷的偏移量(必须是整数,且被8整除)
(如果IP数据报很长,那么分成几个分片数据报,标识,标志,片偏移用于IP数据报分片,收到后再组合成完整的数据报)
- 生存时间:TTL 跳数为单位,经过路由转发后减少1,避免路由循环问题
- 协议:数据部分是什么协议(TCP6,UDP17等)
- 首部校验和:检测首部传输过程中是否有差错:IP数据报经过路由器后,需要重新计算校验和,因为TTL,片偏移等会重新变化,所以需要重新校验。
- 源IP地址和目的IP地址
可变部分(40字节):长度从1-40不等,用来拍错测量等,实际使用不多(增加了路由器处理IP数据包的开销)
P55 4.8 网际控制报文协议ICMP¶
为了有效转发IP数据报,提供成功交付的机会,网际层使用了网际控制报文协议(internet control message protocol);主机或者路由器使用这个协议发送差错报告报文和询问报文。
差错报告报文:当路由器或者主机无法交付数据报时,就向发送点发送 ICMP 不可达报文(例如终点不可达,超时等)参数操作报文(校验发现参数错误)对于 ICMP 差错报文不再发送 ICMP 差错报告报文;特殊的0.0.0.0 不发送
询问报文:回送请求和回答,时间戳请求和回答(请某个主机回复一下时间)
例如:分组网间探测:PING 命令(检测主机和路由器的联通行,应用层直接使用网际层的ICMP,没有走运输层的TCP或者UDP)
跟踪路由:traceroute 测试IP数据报从源主机到达目的主机,经过哪些路由器(Windows 使用 tracert 直接走 ICMP,Unix 使用 traceroute 走 UDP)
P56 4.9 虚拟专用网VPN——网络地址转换NAT¶
Virtual Private Network 虚拟专用网:两个私有的网络无法通信,所以利用公用的因特网作为某个私有网络内部的桥梁,实现访问另一个私有的网络(内网穿透)
内部主机,发送消息到内部的路由器,然后路由器转换IP后,通过公网请求另一个私有网络的路由器,经过转发IP后,访问另一个主机的资源。
IP 隧道技术:在家访问校园网内网的服务
此时需要使用NAT协议(网络地址转换 network address translation)内网下的电脑对外部通信时,显示的是路由器的外部IP。
NAPT:网络地址与端口号转换:大部分应用使用TCP或者UDP传送数据,可以利用运输层的端口号和IP地址,一起进行转换。用一个全球IP地址可以使得拥有多个本地地址的主机,同时和因特网上的主机进行通信。
外网主机不能首先发起通信:收到来自外网的IP数据报后,在 NAPT 转换表中,找不到对应的记录。如果是 P2P 应用需要外网主机主动通信,需要特殊的技术实现内网穿越NAT。