网络层(上)
计算机网络-网络层(上)
Created: Oct 28, 2019 10:56 PM
作者: Tian Ling
标签: 网络层
邮箱: 397124191@qq.com
笔者注:最近更新可能会有些慢...
网络层提供的两种服务
虚电路服务: 有人认为应当借助电信网的成功经验,让网络负责可靠交付。当两台计算机进行通信时,应当先建立连接,以预留双方通信所需的一切网络资源。然后双方就沿着已建立的虚电路发送分组。这样分组的首部就不需要填写完整的目的主机地址,而只需填写这条虚电路的编号,因而减少了分组的开销。
互联网采用的设计思路: 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
笔者的理解:计算机网络的端系统是有只能的计算机,即使网络层不可靠,上层的协议会智能处理,使它可靠。
数据报服务:网络在发送分组时不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供质量的承诺。
两种服务的对比:
注:鉴于TCP/IP体系的网络层提供的是数据报服务,因此下面我们的讨论都是围绕网络层如何传送IP数据包这个主题。
网际协议IP
网际协议IP是TCP/IP体系种两个最主要的协议之一。
与IP协议配套使用的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
关系图如下:
注:在这一层中,ARP画在最下面,因为IP经常要使用这个协议。ICMP和IGMP画在这一层的上部,因为它们要使用IP协议。
虚拟互连网络
呐,就是这样
使不同的网络看起来好像是统一的网络。
分类的IP地址
所谓分类的IP地址就是将IP地址划分成若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,它标志主机所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号,它标志该主机(或路由器)。一台主机在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。
这种两级的IP地址可以记为:
IP地址 ::={<网络号>,<主机号>}
IP地址的书写:
常用的三种类别的IP地址
A类地址的网络号字段占1个字节,只有7位可用,但可指派的网络号是126个(2的7次方-2)。减2的原因是:1、IP地址中全0的IP地址是个保留地址,代指“本网络”;2、网络号为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用。
什么意思呢?
比如主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。
A类地址的主机号占3个字节,因此每一个A类网络中的最大主机数是2的24次方-2,这里减2的原因是:1、全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0);2、全1的主机号字段表示该网络上的所有主机。
B类C类以此类推...
IP地址的重要特点
- 每一个IP地址都由网络号和主机号两部分组成。IP地址是一种分等级的地址结构。分等级的好处:1、IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配;2、路由器仅根据目的主机所连接的网络号来转发分组,这样就可以使路由表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间。
- 实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。
- 按照互联网的观点,一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络。具有不同网络号的局域网必须使用路由器进行互连。
- 在IP地址中,所有分配到网络号的网络都是平等的。所谓平等,是指互联网同等对待每一个IP地址。
IP地址与硬件地址
首先复习一下,硬件地址是指固化在网卡(适配器)的ROM中,也称为物理地址;又因为在局域网的MAC帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。
而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址放在数据报的首部。
注:虽然IP数据报会经过路由器,但是它首部的源地址和目的地址不会发生改变。
地址解析协议ARP
问题:如何由IP地址获取对应的硬件地址?此外,当有新主机加入,或者旧主机移除时,该如何改变映射关系?
解决:ARP解决这个问题的方法是:在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表会经常动态更新(新增或者删除)。
每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
问题:当有新主机加入导致ARP缓存中找不到对应主机的MAC地址,咋办?
解决:广播一个ARP请求分组。ARP请求分组的主要内容是:”我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为209.0.0.6的主机的硬件地址。“ ; 局域网内所有主机都会收到,但只有符合条件的主机会响应。响应是单播传递的。
问题:为什么要对每一个映射地址项目都设置生存时间?
解决:主机A和B通信,A的ARP高速缓存中保存有B的硬件地址。但B的网络适配器突然坏了,B立即换了一块。A的缓存中还存有之前的地址,显然已经失效了。过了一段时间后自动删除,然后通过广播,又能获得B的硬件地址。
注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。不同局域网的主机,解析的是路由器的MAC地址。
使用ARM的四种典型情况
问题:为什么要使用IP地址,而不直接使用MAC地址呢?
解决:全世界存在各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够相互通信就必须进行非常复杂的硬件地址转换工作,由用户主机来完成是不太可能的事情。
IP数据报的格式
版本: 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。
首部长度: 占4位。所表示数的单位是32位字。
区分服务: 占8位,用来获得更好的服务。
总长度: 指首部和数据之和的长度,单位为字节。总长度字段为16位。
注:IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。当一个IP数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层所规定的MTU值。
标识: 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报就加1,并赋值给标识。
标志: 占3位,但目前只有两位有意义
- 标志字段中的最低位记为MF(More Fragment)。MF=1表示后面”还有分片“的数据报。MF=0表示这已经是若干个数据报片中最后一个。
- 标志字段中间的一位记为DF(Don't Fragment),意思是”不能分片“。只有当DF=0时才允许分片。
- 片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位。
如下图:
- 生存时间:占8位,常用英文缩写是TTL(Time To Live),表明这是数据报在网络中的寿命。
- 协议: 占8位,指出此数据报携带的数据是使用何种协议。
- 首部校验和: 占16位。这个字段之间只检验数据报的首部,但不包括数据部分。IP首部的校验和不采用CRC检验码,而采用一种比较简单的方法:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置为零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接受方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码。若首部未发生任何变化,则结果必为0.
- 源地址: 占32位
- 目的地址: 占32位
IP数据报首部的可变部分
增加IP数据报的功能。
IP层转发分组的流程
之前提到过,根据网络号转发到对应的路由器,然后由统一局域网的路由器使用ARP转发交付给目标。
以上这种叫特定主机路由,基于目的主机所在的网络,适合对外连接数比较多的路由器。
还有一种默认路由,适合对外连接数比较少的。
分组转发算法:
注:以上还并未涉及到路由表一开始是如何建立的以及路由器表中的内容应该如何进行更新。
未完待续...