针对网络层的业内问题:“在计算机网络中,网络层应该向运输层提供怎样的服务?面向连接还是无连接?”
问题的实质是:“可靠交付应该由网络负责还是端系统负责?”
面向连接和无连接:
现今的计算机网络都是采用无连接的,网络提供数据报服务,无连接的,尽最大努力交付数据报。网络层不提供服务质量的承诺,即所传分组可能存在出错、丢失、重复和失序的可能,也不保证分组传送的时限。
网络层无连接特点:简单、灵活、能适应多种应用
与IP协议配套使用的还有三个协议:
各层中连接需要的中转设备:
IP地址都分为两级(两个固定长度的字段)
两级IP地址记作: {
IP地址采用点分十进制计法:机器中存放的IP地址是32位的二进制码,每8位一组,再转化成可读性更高的十进制
分级IP地址的优点:
实质上,IP地址是标记一个主机/路由器和一条链路的接口
用转发器/网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都是具有相同网络号的
从层次角度区分:
IP地址是由软件实现的
从位置角度区分:
在物理网路中,只以MAC帧为参考变量,其他的那些都忽略掉
路由器在路由表中确定一下局域网IP地址
ARP(Address Resolution Protocol)
ARP协议的作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
ARP协议的目的:IP地址映射成硬件地址
无论网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
IP地址是抽象的逻辑地址,方便人们理解与管理,具体的物理链路上的设备还是要看硬件地址
ARP高速缓存(cache): 每一个主机都设置有一个ARP高速缓存,里面存储着各主机和路由器的IP地址到硬件地址的映射表
ARP解析过程: “主机A发送IP数据报给主机B”
ARP协议作用: 解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
若所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于局域网上的一个路由器,然后让这个路由器将分组转发给下一个网络,剩下的工作就由一个网络来做
从IP地址到硬件地址的ARP解析是自动进行的(主机的用户对这种地址解析过程是不知道的)
使用ARP的四种典型情况:
发送方是主机,要把IP数据报发送到 本网络上的另一个主机 ,这时用ARP找到目的主机的硬件地址
发送方是主机,要把IP数据报发送到 另一个网络上的一个主机,这时利用ARP找到本网络的的一个路由器的硬件地址,剩下的工作交给路由器
发送方是路由器,要把IP数据报转发到 本网络的一个主机,利用ARP找到主机的硬件地址
发送方是路由器,要把IP数据报转发到 另一个网络的一个主机,利用ARP找到本网络的一个路由器,剩下的工作交给那个路由器
因为全世界存在各式各样的网络,它们使用不同的硬件地址,要使这些个异构的网络互相通信就必须进行非常复杂的硬件地址转换工作。
IP地址通过网络号与主机号使每个连接到互联网的主机都拥有一个唯一的IP地址。且调用ARP实现IP地址到硬件地址的映射是由计算机软件自动实现的,用户看不到
于是在虚拟的IP网络上就可以直接用IP地址进行通信,因为内部的ARP解析转化已经自动完成了
一个IP数据报由首部和数据两部分组成
IP数据报的首部又分为两个部分:
固定部分:
IP数据报可以封装多种协议PDU(Protocol Data Unit 协议数据单元)
IP数据报分组转发流程:IP数据报的首部没有指明下一个路由器的地址
子网划分是从2级IP地址划分成3级IP地址
1985年开始,增加了一个子网号字段
子网划分是单位内部设置的,外部并不知道
对内3级IP地址,对外2级IP地址
子网字段是从主机号字段划分出来的一部分
(1)当没有划分子网时,IP地址是2级结构
(2)当划分子网后,IP地址是3级结构
(3)划分子网只是把IP地址的主机号host_id这部分进行再划分,不改变IP地址的原网络号net_id
IP地址:{<网络号>, <子网号>, <主机号>}
子网划分的优点: 分组转发变的更加简单,通过目的子网号能过滤掉许多主机
流程:
从外部看依然是一个整体网络,只是从内部划分成了多个子网,提高转发效率
子网划分的优点:
子网划分的缺点: 减少了能够在网络上连接的主机数
减少了路由器的数量;网络的管理更加灵活;更便于维护和管理;缺点是网络上连接的主机数减少了
子网掩码是子网划分之后才有的,从一个IP数据报的首部无法判断源主机所连接的网络是否进行了子网划分
子网掩码作用:判断IP是否进行了子网划分
子网掩码规则:
网络地址计算公式:
在子网划分的情况下,从IP地址不能唯一的得出网络地址,这是因为网络地址取决于那个网络所采用的子网掩码,IP数据报的首部也没有提供子网掩码的信息
CIDR提出的背景: 互联网遇到了瓶颈,B类地址在1992年就已经分配了一半,互联网主干路上的路由表中的项目数量急剧增长,整个IPv4的地址空间最终将全部耗尽
CIDR干了什么:
CIDR规则:“斜线记法(slash notation)”,在IP地址面加上一个斜线“/”,然后写上网络前缀所占的位数。例如:220.78.168.0/24
路由聚合:
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先被广泛使用的协议
距离(“跳转”):路由器的数量
RIP协议路由选择标准: 路由器数量最少(距离最短),哪怕另一条路由的路由器延时更低,只以数量判断
RIP协议的三个特点:
路由器之间交换路由表,相当于相互讨论得出最短路径(路由器数量最少)
RIP工作过程:
RIP的优点: 实现简单,开销小
RIP的缺点:
RIP小结: RIP就是选择路由距离最短(即路由器数量最少)的路径,不考虑其他因素。为了得到最短路径,路由器之间需要互相交流(交换路由表)得到最短距离。
IPv6第六版IP地址,我国在2014年到2015年也逐步停止了向新用户和应用分配IPv4地址,采用具有更大空间的IPv6地址
IPv6的新变化:
IPv6数据报由2大部分组成:
向IPv6过度只能采用逐步演进的方法,同时,还必须使新安装的IPv6系统能够向后兼容(即IPv6系统可以接收和转发IPv4数据报)
两种过度策略:
双协议栈方法: 双协议栈的主机在和IPv6主机通信的时候是采用IPv6地址,在和IPv4主机通信时采用IPv4地址。会根据DNS服务器返回的地址类型确定IPv4还是IPv6地址
隧道技术方法: 在IPv6数据报要进入IPv4网络时,将其封装成IPv4数据报,将整个IPv6数据报放到IPv4数据报的数据部分。离开IPv4网络时再取出来
(1)特殊主机:专网上的主机
(2)普通主机:互联网上的主机
NAT(Network Address Translation 网络地址转换)
使用场景: 在专用网络上使用专用地址的主机如何与互联网上的普通主机交互,且不用加密?(特殊主机如何与普通主机通信)
利用装有NAT的路由器实现特殊主机与普通主机的通信
装有NAT的路由器至少有一个有效的外部全球IP地址,所有在专网上的主机要和外部通信时都要先在NAT路由器上将本地地址转化为全球IP地址。
可以这样理解: 整个专网看作一个整体,整体对外拥有至少一个全球IP地址可以与外界通信,专网上的主机想要与外界通信都要利用这个全球IP地址,这个全球IP地址由NAT路由器实现,这个NAT路由器负责管理整个专网和外部信息的交互
注意: 只能由专网上的特殊主机发起请求
总结: NAT路由器就是专网和互联网的桥梁
Python 面试100讲(基于Python3.x)