计算机网络——网络层
主要实现网络互连,进而实现数据包在各网络之间的传输,解决:
- 网络层向运输层提供什么服务(可靠/不可靠传输)
- 网络层寻址问题
- 路由选择问题
TCP/IP协议栈的网络层使用网际协议IP,是协议栈的核心协议,故TCP/IP中常称为网际层
4.1 ip地址
32位(4字节)的二进制数(IPv4),提高可读性每8位用十进制表示如:192.168.1.101
组成: 两个字段-网络号和主机号,常用A B C类
- A类:1.0.0.0到127.255.255.255,可用A类网络有126个,每个网络能容纳1亿多个主机
10.X.X.X是私有地址,127.0.0.1表示本机
- B类:128.0.0.0-191.255.255.255,可用B类网络有16382个,每个网络能容纳6万多个主机
172.16.0.0—172.31.255.255是私有地址
- C类:192.0.0.0到223.255.255.255。C类网络达209万余个,每个网络能容纳254个主机
192.168.X.X是私有地址
- D类IP地址在历史上被叫做多播地址(multicast address),即组播地址
- E类IP地址是以“1111”开始,为将来使用保留。他的第一字节的范围是240~255,主要用于Internet试验和开发。
IPV4与IPV6的区别:32位(4字节)和128位(8字节)地址,解决 IPv4 枯竭的问题。
- 按照地址左起第一个十进制数可只网络类别:<127:A,128-191:B,192-223:C
- A类地址网络号为左起第一个字节,B类为前两个,C类为前三个
- 不能派给主机或路由器接口的地址:
- A类网络号为0和127
- 主机号 全0,这是网络地址
- 主机号 全1,这是广播地址
特点
-
IP 地址是一种分等级的地址结构,分两个等级的好处是:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而主机号则由得到该网络号的单位自行分配
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
-
实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须不同,称为多归属主机
- 一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,这些局域网都具有同样的网络号 net-id
4.1.2 子网
网络划分成子网,为了识别子网有了32位的子网掩码。 子网掩码为1的部分对应IP地址中的网络号,0对应主机号。如某IP网络号24位,主机号8位,则子网掩码11111111.11111111.11111111.00000000,即255.255.255.0。
故将IP地址和子网掩码进行“与”运算,即可判断出网络号得知是否在同一子网。未进行子网划分则有默认的子网掩码。
A类地址默认子网掩码255.0.0.0,B类:255.255.0.0,C类:255.255.255.0
子网划分具体细节
第一字节(左数第一字节)为192,即八位中的左数第二2、3位,用两位来划分子网故分出 4 个子网
4.1.3 超网
无分类编址CIDR,使用变长的子网掩码,进一步提高IP地址的资源利用率。
- 消除了传统的ABC类地址及划分子网的概念,CIRD把32位的IP地址划分成为两个部分,网络前缀和剩下的部分,表示方法为,在IP地址后面加上“/”,然后写上网络前缀所占位数。
- 把网络前缀相同的IP地址组成一个CIDR地址块,如128.14.35.7/20 用二进制表示 100000000 00001110 00100011 00000111,所以我们很容易可以得出这块地址中最小地址为128.14.32.0,即 100000000 00001110 00100000 00000000,最大地址为128.14.47.255,即 100000000 00001110 00101111 11111111(前20位不变).
- 为了更加方便进行路由选择,CIDR使用32位的地址掩码,1的个数就是网络前缀的长度,如上面所举例中的/20的地址块的地址掩码是 11111111 11111111 11110000 00000000
故网络前缀越短,其地址块所包含的地址就越多,这样可以根据实际情况更加有效的分配IPv4的地址空间。而由很多个CIDR地址快构成的庞大的网络就就被称为“超网”。
4.1.4 IPv4的应用规划
定长的子网掩码: 即划分子网的 IPv4 也称为定长的子网掩码
采用定长的子网掩码划分,只能划分出2^n个子网,其中 n 是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同,不够灵活,容易造成IP地址的浪费
题中要求分配五个子网,各子网最大地址需求为28,故将8位主机号分为 3+5 ,3位子网号共8各子网,5位主机号共 32各地址则刚好满足需求,故子网掩码为 255.255.255.11100000,即255.255.255.224,所以得到子网地址:一直到第四行都是前32位地址即子网 1的范围
变长的子网掩码: 即无分类编址则为变长的子网掩码
分析各子网需求,N1到N5 分别需要分配前缀为 “/28” “/27” “/28” “/28” “/30” 的子网块,即分别要地址大小为 16、32、16、16、4的地址块,于是动态地将各子网地址紧密地划分:
4.2 IP 数据报的发送和转发
通过目的地址IP和源地址的子网掩码进行逻辑与运算得到目的网络地址
- 目的网络地址和源网络地址 相同,就是在同一个网络中,属于直接交付
-
目的网络地址和源网络地址 不相同,就不在同一个网络中,属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
- 用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为默认网关
例如,路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关
收到数据报后的转发
检查IP数据报首部是否出错:
-
若出错,则直接丢弃该IP数据报并通告源主机
-
若没有出错,则根据 IP 数据报的目的地址在路由表中查找匹配的条目:
- 若找到匹配的条目,则转发给条目中指示的下一跳
- 若找不到,则丢弃该数据报并通告源主机
路由器是隔离广播域的
4.3 静态路由配置
默认路由
可静态设置路由表中的默认路由,当路由表中找不到目的地址匹配项时匹配默认路由(优先级最低)
4.4 路由选择协议(动态路由)
- 自适应:动态路由选择,能较好地适应网络变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统 AS
- 自治系统 AS:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
路由器的结构、转发过程
路由器是一种具有多个输入端口,和输出端口的专用计算机,其任务是转发分组
- 分组转发部分
- 交换结构
- 一组输入端口:
- 一组信号输入后物理层将信号转换为比特流
- 链路层识别出帧并去掉帧头和帧尾交给网络层
- 普通待发分组则根据首部中目的地址基于转发表进行查表转发,找不到则丢弃分组
- 一组输出端口:
- 网络层更新数据分组首部中某些字段的值,如将分组生存时间减1,然后送交链路层封装
- 数据链路层将数据分组封装成帧,交给物理层处理
- 物理层将帧看成比特流将其变换成相应的电信号进行发送
路由器的各端口还会有输入缓冲区和输出缓冲区
- 输入缓冲区用来暂存新进入路由器但还来不及处理的分组
- 输出缓冲区用来暂存已经处理完毕但还来不及发送的分组
- 路由选择部分
核心构件是路由选择处理机,它根据使用的路由选择协议周期性地与其他路由器交互路由信息,更新路由表,即通过三层发送出自己的路由报文
如果送交给输入端口的网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交给路由选择处理机,路由选择处理机根据分组的内容来更新自己的路由表
路由信息协议RIP
- 实现简单,开销较小。
- 限制了网络的规模,能使用的最大距离为 15;
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- “坏消息传播得慢”,使更新过程的收敛时间过长。
开放最短路径优先 OSPF (Open Shortest Path First)
注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
边界网关协议BGP
BGP(Border Gateway Protocol) 是不同自治系统的路由器之间交换路由信息的协议,属于 EGP
4.5 IPv4数据报组成
4.6 ICMP网际控制报文协议
和路由器用 ICMP来发送差错报告报文和询问报文,封装在IP数据报中
差错报告报文
-
终点不可达:见评论,给源点发送终点不可达报文
-
源点抑制:路由器或主机由于拥塞丢弃数据报时,向源点发送源点抑制报文,源点放慢发送速率
-
时间超过:每个IP数据报有生存周期字段 TTL,每个路由器会对收到的数据报做-1操作
- 若减完不为 0则转发出去
- 结果为 0 则丢弃数据报,并向源点发送时间超过报文
-
参数问题:根据首部校验和字段发现传输中出现误码,则丢弃并发回参数问题报文
-
改变路由(重定向):改变路由报文指示路径可优化
询问报文
应用举例
分组网间探测PING(Packet InterNet Groper)
跟踪路由(traceroute)
实现原理:先对路径第一个路由器发TTL=1 的回送请求,得第一个路由器;同理最后得目的主机
4.7 虚拟专用网 VPN
IP 地址紧缺,且一个机构无需把所有主机连接到外部的互联网,故为扩大空间机构内部的主机可由本机构自行分配 IP地址,也称机构内的虚拟专用网,非需要申请的、在因特网上使用的共有地址
一个机构至少需要有一个路由器有合法的全球地址,从而实现不同的机构之间通信,两个专用网内的主机间发送的数据报是通过了公用的因特网,但在效果上就好像是在本机构的专用网上传送一样
数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术
4.8 网络地址转换 NAT
使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
装有NAT软件的路由器叫做 NAT路由器, 至少有一个有效的外部全球IP地址,所有使用私有地址的主机在和外界通信时,都要在NAT路由器上将其私有地址转换为全球IP地址
- 使用私有地址的主机给因特网上使用全球 IP的主机发送数据报
- 主机给源主机发回数据报
- 当专用网中的两台使用私有地址的主机同时要给使用全球地址的另一台主机发送数据报时,在NAT路由器的NAT转换表中就会产生两条记录,分别记录两个私有地址与全球地址的对应关系
导致问题:NAT路由器有N个全球 IP地址则最多只能 N台主机同时和因特网主机通信,解决:
网络地址与端口号转换 NAPT
大多数网络应用使用运输层协议TCP或UDP传送数据,故可利用运输层的端口号和主机地址一起进行转换,从而实现多台专用主机同时和外部主机通信
内网主机与外网主机的通信,是否能由外网主机首先发起?
否定,来自外网的数据报在 NAPT转换表中无法找到相应的记录,需要应用使用特殊的NAT穿越技术来解决问题
- NAT 对外网屏蔽了内网主机的地址对内网主机提供了一定保护