参考视频:王道计算机考研 计算机网络
参考书:《2022年计算机网络考研复习指导》
网络层:向上提供简单的、无连接的、尽最大努力交付的数据报服务。
拥塞:在通信子网中,因出现过量的分组而引起网络性能下降的现象。
数据在各层的传输形式:
OSI参考模型 | 各层次的传输单元 |
---|---|
应用层 | 报文 |
传输层 | 报文段 |
网络层 | IP数据报,分组(如果IP数据报太大就切割成分组) |
数据链路层 | 帧 |
物理层 | 比特流 |
数据平面:用于控制数据处理过程中各种具体处理转发过程。处理时间短,在路由器中用硬件实现。
控制平面:用于控制、管理网络协议的运行,比如 OSPF 协议、RIP 协议、BGP 协议。处理时间长,在路由器中用软件实现。
分为两种:
每路由器法:
SDN 法:
注:上面的交换机实际上是路由器。
SDN 控制器的三个层次:
例题:
小结:
路由算法的分类:
层次路由:
示例:
一个 IP 分组由首部和数据部分组成:
IP 数据报格式:
名称 | 英文 | 注释 | 大小 |
---|---|---|---|
版本 | Version | ipv4或者ipv6 | 4位 |
首部长度 | IHL | 此处数值再乘以4才是真正大小,同时因为IP数据报固定长度为20字节,所以此处最小值为5,即二进制的0101 | 4位 |
区分服务 | DSCP + ECN | 希望获得哪种服务,用的比较少 | 8位 |
总长度 | Total Length | 首部+数据的长度,最大为216-1=65535B | 16位 |
标识 | Identification | 用来表示是哪一个数据报的分片,不同的分片标识各不相同 | 8位 |
标志 | Flags | 用来表示是否分片和分片是否结束 | 3位,但实际有用的只有后两位 |
片偏移 | Fragment Offset | 用来标记分片之后,该分片在原来的数据报的位置,以8字节为单位 | 13位 |
生存时间 | Time To Live 即TTL | 每经过一个路由器TTL-1,0时自动放弃,根据系统不同默认的TTL不同 | 8位 |
协议 | Protocol | 用来标记协议名的字段值,如TCP、UDP、ICMP等 | 8位 |
首部检验和 | Header Checksum | 检验首部的字段是否出错,出错就丢弃此数据报 | 8位 |
源地址 | Source IP Address | 发送方ip地址 | 32位 |
目的地址 | Destination IP Address | 接收方ip地址 | 32位 |
可选字段 | Options | 用来排错等安全检测 | 未知,可在0-40位之间 |
填充 | 将数据报对齐成4字节的整数倍,数值全部为0 | 未知,根据可选字段来定 |
注:总长度单位是 1B,片偏移单位是 8B,首部长度单位是 4B。
最大传送单元(MTU):一个数据链路层数据报能承载的最大数据量。
以太网的 MTU 是 1500 字节。
如果 IP 分组超过了某链路的 MTU 值?
IP 数据报分片。
例题:
IP 地址:全球唯一的表示某一个主机或者路由器接口的32位/4字节编码。
IP 地址::={<网络号>, <主机号>}
示例:
IP 地址分类:
因为网络号最开始第一位是0,一共八位,所以二进制表示位0xxxxxxx,最大就是27-1=127,但是因为127.xxx.xxx.xxx是特殊IP地址,所以将其去掉。
为什么B类最大是191.255.xxx.xxx?
因为网络号最开始两位是10,一共八位,所以二进制表示位10xxxxxx,最大就是10111111=191,最小就是10000000=128,无特殊IP地址。
为什么C类最大是223.255.255.xxx?
因为网络号最开始三位是110,一共八位,所以二进制表示位110xxxxx,最大就是11011111=223,最小就是10000000=192,无特殊IP地址。
A类地址减2的原因:
B类地址减1的原因:128.0这个网络号不可指派。
C类地址减1的原因:192.0.0这个网络号不可指派。
每个网络中最大主机数减2的原因:
特殊 IP 地址:
32为全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。
IP地址的特点:
网络地址转换(NAT)的概念:将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的IP地址。
网络地址转换(NAT)的作用:
为了网络安全,划出了部分IP地址为私有IP地址:
私有地址只用于LAN,不用于WAN,并且允许私有IP地址被LAN重复使用。
路由器对目的地址是私有地址的数据报一律不进行转发。
两级IP地址的缺点:
子网划分:在IP地址中增加一个子网号字段,使两级IP地址变成了三级IP地址。
从主机号借用若干比特作为子网号,当然主机号也就减少了相同比特。
三级IP地址 = {<网络号>, <子网号>, <主机号>}
示例:
子网掩码:一个与IP地址相对应的、32bit的二进制串,由一串1和一串0组成。
其中,1对应于IP地址中的网络号和子网号,0对应于主机号。
将IP地址与其子网掩码逐位与(&)运算,就得到相应子网的网络地址。
示例:
分组转发算法:
注意:
例题:
这道题可以看出来,即使子网掩码不同,相同IP地址对应的子网IP地址也可能相同。
但是,子网掩码不同,划分的子网数目不同。
为什么划分的子网数目不同?或者说怎么算划分的子网位数目?
以255.255.192.0为例,255是11111111即八个1,192是11000000即2个1,一共是82+2=18个1,一共有32位地址,所以剩余有32-18=14位。再以255.255.224.0为例,255是11111111即八个1,224是11100000即3个1,一共是82+3=19个1,一共有32位地址,所以剩余有32-19=13位。
这道题先将255.255.252.0计算出一共有8+8+6=22位网络号位,所以就有32-22=10位主机号位。
将180.80.77.55解析,可以知道在77部分某部分开始会用来表示主机号位。77的二进制是0100 1101,因为一共有22位网络号位,所以010011 (此处分开) 01,从这个01开始是主机号位。
所以用来表示子网ip地址的应该是180.80.76(010011 00).xxx。
但是本体是发布广播地址,所以主机号全部都要是1,所以应该是180.80.79(010011 11).255(11111111)注意79括号内后两位二进制11。
IP地址 = {<网络前缀>, <主机号>}
斜线计法(CIDR计法):IP地址/网络前缀所占比特数
路由聚合(构成超网):将网络前缀都相同的连续IP地址组成CIDR地址块。
这种做法有利于减少路由器之间的路由选择信息的交换,提高网络性能。
如图,通过缩短前缀,网络1和网络2就可以合并在206.1.0.0/16的子网下。
但是这样转发表之中就会有多个匹配结果,所以我们使用最长前缀匹配。
例题:
最长前缀匹配:查找路由表时,应选择具有最长网络前缀的路由。
前缀越长,地址块越小,路由越具体。
例题:
IP地址是网络层使用的地址,硬件地址是数据链路层使用的地址(如MAC地址)。
通过数据封装,把IP数据报分组封装成MAC帧后,数据链路层看不见数据报分组的IP地址。
由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此只能在IP网络的网络层使用IP地址寻址。
注:地址解析协议(ARP)是网络层协议。
注:从IP地址到硬件地址的解析是自动进行的。
示例:
例题:
主机如何获得IP地址?
动态主机配置协议(DHCP)是应用层协议,使用C/S方式,基于UDP。
网际控制报文协议(ICMP)是网络层协议。
为了提高IP数据报交付成功的机会,使用网际控制报文协议(ICMP)来让主机/路由器报告差错和异常情况。
ICMP报文分类:
ICMP差错报告报文:
注:源点抑制已废弃不用。
ICMP差错报告报文数据字段:
不应发送ICMP差错报告报文的情况:
注:组播是指由一点到多点,但不是无脑发到所有点。无脑发到所有点的是广播,组播有筛选条件。
ICMP询问报文:
注:3和4已废弃不用。
ICMP的应用:
PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP/UDP。
Traceroute(Tracert)工作在网络层。
为什么会有IPv6?
因为32位的IPv4地址已经消耗殆尽。
网络地址转换(NAT)实现了路由聚合,节省了全球IP地址。
无分类域间路由选择(CIDR)实现了子网划分,使得IP地址分配更合理。
但这两种方法也只是在IPv4的基础上扩展了IPv4地址数目,治标不治本。只有IPv6能从根本上解决IP地址的耗尽问题。
IPv6数据报格式:
名称 | 英文 | 作用 | 位数 |
---|---|---|---|
版本 | Version | 协议版本,此处因为是IPv6所以总是6 | 4位 |
优先级 | Traffic Class | 又来区分数据报的类型和优先级 | 8位 |
流标签 | Flow Label | 和IPv4标识某个数据报分片不同,这是对于一整个数据报流的标记 | 20位 |
有效载荷长度 | Payload Length | 指的是扩展首部+数据部分的大小,和IPv4的总长度和首部长度都不同,IPv6的首部长度是固定的40字节 | 16位 |
下一个首部 | Next Header | 基本首部的下一个首部指的是有效载荷里标记的的扩展首部,有效载荷里的扩展首部再指向有效载荷里标记的的扩展首部,直至最后指向数据 | 8位 |
跳数限制 | Hop Limit | 基本相当于IPv4当中的TTL,每到一个路由器-1,减到0时丢弃 | 8位 |
源地址 | Source Address | 发送方IPv6地址 | 128位 |
目标地址 | Destination Address | 接收方IPv6地址 | 128位 |
IPv6地址表示形式:
IPv6基本地址类型:
名称 | 作用 | 要求 |
---|---|---|
单播 | 一对一通信 | 可做源地址,目的地址 |
多播 | 一对多通信,以前的广播地址当做覆盖所有主机的多播 | 可做目的地址 |
任播 | 一对多当中的一个通信,看似一对多,实则一对一 | 可做目的地址 |
IPv6对比IPv4:
IPv6向IPv4过渡的策略:
隧道技术:如果是IPv6的数据报到了IPv4,就用IPv4重新封装,把IPv6数据报前面加上IPv4伪装成IPv4数据报继续传输,直至到了IPv6路由再解开IPv4伪装。
自治系统(Autonomous System,AS):单一技术管理下的一组路由器。
路由协议分类:
路由信息协议(RIP)是一种分布式的基于距离向量的路由选择协议。
路由信息协议(RIP)是应用层协议,使用UDP传送数据(端口520)。
路由信息协议(RIP)的特点:
距离向量算法:
例题:
路由信息协议(RIP)的报文格式:
路由信息协议(RIP)的优点:
路由信息协议(RIP)的缺点:
“慢收敛现象”:
开放最短路径优先协议(OSPF)是网络层协议。
开放最短路径优先协议(OSPF)概述:
开放最短路径优先协议(OSPF)的五种分组类型:
链路状态算法:
注:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表不会存储完整路径,而只存储“下一跳”。
为使开放最短路径优先协议(OSPF)能够用于更大规模的网络,开放最短路径优先协议(OSPF)将一个自治系统再划分为若干更小的范围,称为区域。
区域有层次之分,上层的区域称为主干区域,负责连通其他下层的区域,并且连接其他自治系统。
划分区域的好处:将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。
开放最短路径优先协议(OSPF)的分组(数据报):
开放最短路径优先协议(OSPF)分组直接使用IP数据报传送,该信息直接作为IP数据报的数据部分。
开放最短路径优先协议(OSPF)的特点(与RIP协议对比):
边界网关协议(BGP)是应用层协议,借助TCP传送。
边界网关协议(BGP)只能力求寻找到一条能够到达目的网络且比较好的路由(不能成环)。
边界网关协议(BGP)概述:
边界网关协议(BGP)交换的是一组路径向量。
边界网关协议(BGP)交换信息的过程:
边界网关协议(BGP)的报文格式:
一个BGP发言人与其他AS中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此基础上交换BGP报文以建立BGP会话,利用该会话交换路由信息。
边界网关协议(BGP)的特点:
BGP-4共使用4种报文:
IP数据报的三种传输方式:
组播一定仅应用于UDP。
主机使用因特网组管理协议(IGMP)加入组播组。
组播组的主机可以来自不同的物理网络(组播路由器提供支持)。
主机组播时仅发送一份数据,只有数据在传输路径出现分岔时才将分组复制后继续转发。
IP组播地址:
IP组播分类:
硬件组播:
因特网组管理协议(Internet Group Management Protocol,IGMP):
因特网组管理协议(IGMP)让连接本地局域网的组播路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
因特网组管理协议(IGMP)是网络层协议,使用IP数据报传送报文。
注:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,并不知道成员个数。
组播路由选择协议:
组播路由选择协议的目的是找出以源主机为根节点的组播转发树,其中每个分组在每条链路上只传送一次。
组播路由选择协议的作用:成员可以自行找到转发组,自行决定参加哪个组播。
组播路由选择协议的三种路由算法:
小结:
支持移动性的因特网体系结构与协议共称为移动IP。
移动IP技术:移动结点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。
基于IPv4的移动IP定义三个功能实体:
归属代理和外埠代理统称为移动代理。
基本概念:
移动IP通信过程:
注意,移动IP不等于动态IP(通过DHCP服务器动态获得一个IP地址)。
路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接异构网络并完成路由转发。
注:路由器隔离了广播域。
从结构上看,路由器由路由选择和分组转发两部分组成。
路由器是网络层设备,实现了网络模型的下三层。
输入端口:
输出端口:
路由器中输入/输出队列产生溢出是造成分组丢失的重要原因。
回顾: