点此链接可跳转到:计算机网络笔记整理——目录索引页
参考书籍:《计算机网络》第八版 谢希仁编著
网络层提供的两种服务
虚电路服务
网络负责可靠交付
采用面向连接的通信方式,通信之前先建立虚电路,以保证双方通信所需的一切网络资源,再使用可靠传输的网络协议,使所发送的分组无差错、按序到达终点,不丢失、不重复。
数据报服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
网络在发送分组时不需要先建立连接,每一个分组(即IP数据报)独立发送。网络层不提供服务质量的承诺。所传送的分组可能出错、丢失、重复和失序(不按序到达终点),也不保证分组传送的时限。
虚电路服务与数据报服务的对比
网络互联的概念、设备、层次、协议
网络互连是指将不同的网络连接起来,以构成更大规模的网络系统,实现网络间的数据通信、资源共享和协同工作。网络互连都是只用路由器进行网络互连和路由选择。
网际协议IP是TCP/IP体系中两个最主要的协议之一,与之配套使用的还有三个协议:
- 地址解析协议ARP
- 网际控制报文协议ICMP
- 网际组管理协议IGMP
实现网络互联的中间设备:
- 物理层中继系统:转发器
- 数据链路层中继系统:网桥或桥接器
- 网络层中继系统:路由器
- 网桥和路由器的混合物:桥路器
- 网络层以上的中继系统:网关
分类IP地址
每一类地址都有两个固定长度的子段组成,其中一个是网络号net-id,它标志主机(或路由器)所连接到的网络,另一个是主机号host-id,它标志该主机(或路由器)
各类IP地址的指派范围
注:根据最新标准B类地址网络号128.0以及C类地址网络号192.0.0不再保留,故B类地址最大可指派网络数应该为16384,第一个可指派的网络号应为128.0;C类地址最大可指派网络数应该为2097152,第一个可指派的网络号应为192.0.0
参考:B类地址第一个可分派的网络号为什么不是128.0? - tckidd的回答 - 知乎
https://www.zhihu.com/question/37927675/answer/82062124
5类IP地址的范围:
A:1.0.0.0 - 126.255.255.255
B:128.0.0.0 - 191.255.255.255
C:192.0.0.0 - 223.255.255.255
D:224.0.0.0 - 239.255.255.255
E:240.0.0.0 - 247.255.255.255
私有地址的范围分别是:
A类地址范围:
10.0.0.0—10.255.255.255
B类地址范围:
172.16.0.0—172.31.255.555
C类地址范围:
192.168.0.0—192.168.255.255
一般不指派的特殊IP地址
无分类编址CIDR
CIDR:无分类域间路由选择
CIDR消除了传统的A类、B类和C类地址以及子网的概念,可以更有效的分配IPv4的地址空间
2级结构:网络前缀和主机号
网络前缀的位数可以取0~32之间的任意值
CIDR记法:斜线记法 a.b.c.d/n:二进制IP地址的前n位是网络前缀
地址块
CIDR把网络前缀都相同的连续的IP地址组成“CIDR地址块”
一个CIDR地址块包含的IP地址数,取决于网络前缀的位数
128.14.32.0/20表示的地址块共有212个地址,因为斜线后面的20是网络前缀的位数,所以主机号是12位
这个地址块的起始地址是128.14.32.0
最小地址:128.14.32.0
最大地址:128.14.47.255
全0和全1第主机号地址一般不使用
注意:地址表示的含义
地址掩码
地址掩码长度=32位
由一连串1和接着的一连串0组成,1的个数就是网络前缀的长度
(IP地址)AND(地址掩码)=网络地址
三个特殊的CIDR地址块
全球国家及地区分配IP数排名
路由聚合
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
IP数据报
一个IP数据包由首部和数据两部分组成
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 版本:IP协议的版本,目前的IP协议版本号为4(即IPv4)
- 首部长度:占4位,可表示的最大数值是15个单位(一个单位4字节),因此IP首部的最大长度为60字节
- 总长度:首部和数据之和的长度,占16位,因此数据报的最大长度为65535字节,总长度必须不超过最大传送单元MTU
- 标识:计数器,用来产生IP数据报的标识,同一数据报的分片使用同一标识
- 标志:占3位,目前只有两位有意义,标志字段的最低位是MF(More Fragment)。MF=1表示后面“还有分片”。MF=0表示最后一个分片。标志字段中间的一位是DF(Don’t Fragment),只有当DF=0时才允许分片
- 片偏移:占13位,指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位。(除最后一个数据报片外,其他每个分片的长度一定是8字节的整数倍)
- 生存时间:记为TTL,指示数据报在网络中可通过的路由器数的最大值
- 协议:指出此数据报携带的数据使用何种协议,以确定目的主机的IP层需将数据部分上交给哪个协议进程
- 首部校验和:只校验数据报的首部
- 可变部分:就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富,实际上这些选项很少被使用。
例题
ARP协议
IP地址与MAC地址的区别
- MAC地址(或物理地址):是数据链路层和物理层使用的地址;IP地址:是网络层和以上各层使用的地址,是一种逻辑地址
- MAC地址具有唯一性;IP地址不具有唯一性
- MAC地址是Ethernet网卡上的地址,长度为48位;IP地址目前主流是32位长
- IP地址放在IP数据报的首部,MAC地址放在MAC帧的首部
- 从源主机到目的主机的通信中,IP数据报首部中的源IP地址和目的IP地址始终不变,而数据链路层的帧首部中的源地址和目的地址在随着网络的不同而不断变化。
地址解析协议ARP
作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
ARP高速缓存:存放所在局域网内各主机和路由器的IP地址到硬件地址的映射表
当主机A向本局域网上的主机B发送IP数据报时,现在其ARP高速缓存中查找B的IP地址
- 如有,就可查出其对应的硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
- 如没有,ARP进程在本局域网上广播发送一个ARP请求报文。收到ARP相应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存
ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填1)/目标方IP地址
本地广播ARP请求:路由器不转发ARP请求
ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址
ARP分组封装在物理网络的帧中传输
ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题,当目的主机和源主机不在同一个局域网,则通过ARP找到本局域网上的某个路由器的硬件地址,剩下的工作由这个路由器完成
发送方是路由器,要把IP数据包转发到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址
发送方是路由器,要把IP数据包转发到另一个网络上的一个主机。这时用ARP找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器完成。
网际控制报文协议ICMP
ICMP是IP层的协议
ICMP报文有三大类:ICMP差错报告报文、ICMP控制报文、ICMP询问报文
ICMP差错报告报文有3种:终点不可达、时间超过、参数问题
ICMP控制报文有2种:源点抑制报文(不再使用)/改变路由(重定向)
ICMP请求报文有2种:回送请求或回送回答、时间戳请求或时间戳回答
ICMP的应用:
PING:用来测试两个主机之间的连通性,应用层直接使用网络层ICMP,没有通过运输层TCP或UDP
Traceroute:用来跟踪一个分组从源点到终点的路径
MTU:利用IP数据报标志字段的中间位DF
- 将IP数据报的标志字段的DF位置1;
- 当路由器发现IP数据报长度大于MTU时,丢弃并发回一个要求分片的ICMP报文;
- 将IP数据报长度递减,DF位置1重发,知道不再收到ICMP报文。
ICMP的作用:
为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。
ICMP协议是TCP/IP协议的一个子协议。用在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。即提供差错报告和询问报文。
NAT
装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球地址
使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网互联
- 内部主机A用本地地址IPA和互联网上主机B通信所发送的数据报必须经过NAT路由器。
- NAT路由器将数据报的源地址IPA转换成全球地址IPG,并把转换结果记录到NAT地址转换表中,目的地址IPB保持不变,然后发送到互联网。
- NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是IPB而目的地址是IPG
- 根据NAT转换表,NAT路由器将目的地址IPG转换为IPA,转发给最终的内部主机A
当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址
路由器的构成、转发分组、路由表
路由器的构成
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
整个的路由器结构可分为两大部分:路由选择部分和分组转发部分
- 路由选择部分也叫作控制部分,主要任务是构造路由表,同时不断地更新和维护路由表
- 分组转发部分,是数据层面,由交换结构、一组输入端口和一组输出端口组成。
转发分组的流程
分组在互联网中是逐跳转发的
基于终点的转发:基于分组首部中的目的地址传送和转发
最长前缀匹配:在查找路由表时可能会得到不止一个匹配结果,应从匹配结果中选择具有最长网络前缀的路由
两种特殊路由:
- 主机路由:对特定目的主机的IP地址专门指明的一个路由,网络前缀就是a.b.c.d/32,放在转发表的最前面,可方便地控制网络和测试网络,或需要考虑某种安全问题时采用
- 默认路由:不管分组的最终目的网络在哪里,都由指定的路由器R来处理,用特殊前缀0.0.0.0/0表示,可减少路由表所占用的空间和搜索路由表所用的时间
路由表
按主机所在的网络地址来制作路由表
路由协议
互联网采用分层次的路由选择协议,这是因为
- 互联网的规则非常大
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门采用的路由选择协议,但同时还希望连接到互联网上
自治系统AS:在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略
两类路由选择协议:
- 内部网关协议IGP:在一个自治系统内部使用的路由选择协议,包括RIP、OSPF
- 外部网关协议EGP:在不同自治系统之间进行路由选择时使用,使用最多:BGP-4
- 自治系统之间的路由选择叫做域间路由选择,自治系统内部的路由选择叫做域内路由选择
内部网关协议RIP
RIP是一种分布式、基于距离向量的路由选择协议
每个路由器都要维护从它自己到其他每一个目的网络的距离记录
距离:一个路由器到直接连接的网络的距离为1,到非直接连接的网络的距离为所经过的路由器数加1;“距离”也称为“跳数”,每经过一个路由器,跳数就加1。
一条路径最多只能包含15个路由器。“距离”等于16时即相当于不可达,只适用于小型互联网
RIP协议的特点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
- 按固定的时间间隔交换路由信息(如30秒)
路由表的建立
- 路由器在刚刚开始工作时,路由表为空,它只知道和他直连的网络,并将其加入路由表
- 以后,每一个路由器也只和相邻路由器交换并更新路由信息
- 经过若干次更新后,所有的路由器都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
- RIP协议的收敛过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程
距离向量算法
例题:路由表更新
坏消息传播慢
- R1说:我到网1的距离是16(表示无法到达),是直接交付
- R2在收到R1的更新报文之前,还发送原来的报文,R2并不知道R1出了故障
- R1收到R2发的更新报文后,误以为可以通过R2到达网1,于是修改自己的路由信息为1,3,R2。表示“我到网1的距离为3,下一条经过R2”
- R2收到后又更新自己的路由表为1,4,R1
- 这样不断更新下去,知道R1和R2到网1的距离都增大到16时,R1和R2才知道网1是不可达的
优缺点
优点:实现简单,开销较小
缺点:
RIP限制了网络的规则,它能使用的最大距离为15
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加
“坏消息传播得慢”,使更新过程的收敛时间过长
内部网关协议OSPF
开放最短路径优先OSPF
使用了Dijkstra提出的最短路径算法SPF
最主要的特征就是使用链路状态协议,而不像RIP那样的距离向量协议
特点
- OSPF直接用IP数据报传送
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法,路由器向所有相邻的路由器发送信息,而每一个相邻的路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息(“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”,也称为“代价”)
- 当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法发送链路状态信息
链路状态数据库:各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑图,在全网范围内是一致的。
OSPF的链路状态数据库能较快的更新,OSPF的更新过程收敛得快是其重要优点
区域
OSPF将一个自治系统再划分为若干个更小的范围,叫做区域,每个区域都有一个32位的区域标识符(用点分十进制表示)
划分区域的好处是将利用洪泛法交换信息的范围局限于每一个区域中,在一个区域内部的路由器只知道本区域的完整网络拓扑
OSPF采用层次结构的区域划分。在上层的区域叫做主干区域(标识符为0.0.0.0),作用是连通其他在下层的区域,从其他区域来的信息都由区域边界路由器进行概括,在主干区域内的路由器叫做主干路由器,主干路由器可以同时是边界路由器,在主干区域内还要有一个路由器专门和其他自治系统交换路由信息,这样的路由器叫做自治系统边界路由器
其它特点
- OSPF对于不同类型的业务可计算出不同的路由
- 到同一网络有多条相同代价的路径,可以将通信量分配给这几条路径。叫做多路径间的负载均衡
- 支持可变长度的子网划分和无分类编址CIDR
- 每一个链路状态都带上一个32位的序号,序号越大状态越新。
OSPF分组类型
- 问候分组:发现和维持邻站的可达性
- 数据库描述:给出自己的链路状态数据库的摘要信息
- 链路状态请求:向对方请求发送自己缺少的某些链路状态的详细信息
- 链路状态更新:用洪泛法对全网更新链路状态
- 链路状态确认:对链路更新分组的确认
OSPF不用UDP而是直接用IP数据报传送
外部网关协议BGP
BGP是不同自治系统的路由器之间交换路由信息的协议
力求选择出一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳的路由
采用路径向量路由选择协议
BGP路由
- eBGP连接(external BGP):两个边界路由器进行通信时,必须先建立TCP连接,运行eBGP协议,这种TCP连接又称为半永久性连接(双方交换完信息后仍然保持着连接状态)
- iBGP连接(internal BGP):在AS内部,两个路由器之间还需要建立一个逻辑连接(也使用TCP连接)。运行iBGP协议,在一个AS内部所有的iBGP必须是全连通的。即使两个路由器之间没有物理连接,但它们仍然有iBGP连接
- IGP、iBGP、eBGP的关系
BGP发言人往往就是BGP边界路由器
一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息。利用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站或对等站。
BGP路由=[前缀,BGP属性]=[前缀,AS-PATH,NEXT-HOP]
前缀:指明到哪一个子网(用CIDR记法表示)
AS-PATH:自治系统路径,通告BGP路由所经过的自治系统,每经过一个AS,就将其自治系统号加入AS-PATH
NEXT-HOP:下一跳,通告的BGP路由起点
三种不同的自治系统
BGP路由如何避免兜圈子?
AS在检查收到的BGP路由的AS-PATH中已经有了自己,立即删除掉这条路由(在属性AS-PATH中,不允许出现相同的AS号)
BGP的路由选择
- 本地偏好值最高的路由
- AS跳数最小的路由
- 热土豆路由选择算法(分组在AS内转发次数最少的路由)
- 路由器BGP标识符的数值最小的路由
IPv6
IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组,而不是数据报
主要变化:
- 更大的地址空间
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用(自动配置)
- 支持资源的预分配
- 首部改为8字节对齐
IPv6数据报由两大部分组成:基本首部、有效载荷(也称为净负荷。允许有零个或多个扩展首部,再后面是数据部分)
地址格式
IPv6数据报的目的地址可以是以下三种之一:
- 单播:点对点
- 多播:一对多
- 任播:IPv6新增的一种类型,任播的终点是一组计算机,但只交付其中的一个,通常是距离最近的一个
IPv6采用冒号十六进制记法
每个16位的值用十六进制表示,各值之间用冒号分割
允许把数字前面的0省略,例如可以把“0000”中的前3个0省略,写成1个0
零压缩:一连串连续的0可以为一对冒号所取代。FF05:0:0:0:0:0:0:B3 可压缩为 FF05::B3
在任一地址中只能使用一次零压缩
点分十进制记法的后缀
冒号十六进制记法可结合使用点分十进制记法的后缀,在IPv4向IPv6的转换阶段特别有用
0:0:0:0:0:0:128.10.2.1
零压缩->::128.10.2.1
CIDR的斜线表示法仍然可用
60位的前缀12AB00000000CD3可记为
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或:12AB::CD30:0:0:0:0/60
或:12AB:0:0:CD30::/60
IPV6地址分类