目录
(4).虚电路信令协议(signaling protocols):
一、网络层提供的服务:
从发送主机向接收主机传送数据段(segment)。其中发送主机将数据段封装到数据(datagram)之中,接收主机向传输层交付数据段。
在这个过程之中:每个主机和路由器都在运行网络层协议。其中路由器会检验所有穿过它的IP数据报的头部域(根据头部域来决定如何处理数据报)
二、核心功能-----转发和路由:
转发的概念:
将一个分组从路由器的一个输入端口转移到一个合适的输出端口的这样一个功能被叫做转发。
如何判断哪一个是所谓的合适的端口:
路由器在维护一个转发表,利用转发表可以确定在本路由器之中如何转发如何转发分组。我们收到数据报以后会发现在数据报之中会存放着一些地址(广义地址)信息。那么我就可以这个地址来查表,进而知道如何转发分组。
路由的概念:
确定分组从源到目的经过的路径。我们会通过一些路由算法来决定:
三、网路层的服务模型:
首先分为无连接的数据报(datagram)网络和有连接的虚电路(virtual-circuit)网络
类似于我们在传输层的UDP和TCP。
1.无连接的服务:
不事先为系列分组的传输确定路径。
每个分组独立确定传输路径。
不同分组可能的传输路径不同。
数据报网络。
(1)数据报网络的特点:
①:网络层没有连接。
②:每个分组携带目的地址。
③:路由器根据分组的目的地址转发分组。
(2)分组转发的策略:
首先一个大前提是:路由器是根据分组的目的地址来转发分组。具体的实现仍然以查询转发表来实现
①:直接根据IP地址转发
对于Internet而言IP地址是32位的二进制数(IPv4),对转发表的实现几乎不可行。
②以IP地址的范围为依据 :
我们针对地址范围:通过地址范围我们可以将具有共同地址范围的转发表入口进行聚合
非常理想的情况,在实际的网络中不会这么完美。一般情况下我们的转发表是这个样子的(即在不同的目的地址范围之间存在交集的关系例如:
对于第一个地址:我们只能找到一个满足其地址范围的转发表项即链路接口位0的结果。
对于第二个地址:我们可以找到两个包含其的范围我们选择了链路接口1
最长前缀匹配优先原则:在检索转发表的时候,优先选择与分组目的地址匹配的前缀最长的入口
2.连接的服务:
首先为系列分组的传输确定从源到目的经过的路径(建立连接)。
随后沿着该路径(连接)传输系列分组。
系列分组传输路径相同。
传输结束后拆除连接。
虚电路网络。
(1).虚电路的定义:
一条从源主机到目的主机,类似于电路的路径(逻辑上存在,实际不存在)。特点:用于分组交换,并且会利用链路的全部带宽。源到目的路径之中经过的所有网络层设备共同完成虚电路的功能。(比如从源主机、目的主机、以及路径之中的路由器都会参与虚电路的建立、维护、并且实现其功能)。
(2).每条虚电路包括:
1.从源主机到目的主机的一条路径
2.虚电路号(VCID),沿路每段链路一个编号。
3.沿路的每个网络层设备(例如路由器),利用转发表记录经过的每一条虚电路。
注意:
沿着某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址。同一条VC,在每一段链路的VCID不同,路由器转发的时候依据转发表改写/替换虚电路号。
(3).虚电路的通信过程:
首先建立呼叫(call setup)--->数据传输--->拆除呼叫。
对于每个分组而言:都会携带虚电路标识(VC ID),而不是目的主机地址。
虚电路经过的每个网络设备(例如路由器),维护每条经过它的虚电路连接状态。
上图是一个分组在虚电路的传输过程,可以看到在虚电路之中每一段链路的VCID都不一样。
这个是路由器R1内的转发表:我们可以看到标红的一行就是上图的分组的转发过程:由接口号1输入,随后根据其携带的VCID我们可以唯一确定其输出接口以及输出VC。
(4).虚电路信令协议(signaling protocols):
用于VC的建立、维护、以及拆除。应用于虚电路网络:例如ATM、帧中继网络。在Internet之中不采用。
3.两种模型的对比:
数据报网络:
弹性服务,没有严格的时间要求。
链路类型多,统一服务困难。
可以自恢复,性能控制。
VC网络:
严格的时间要求,可靠性需求,需要有保障的服务。
四、IPv4协议:
在Internet的网络层之中:主机、路由器网络层的主要功能:
这一小节学习IP协议
1.IP数据报(分组)的格式:
其包括两个部分首部+数据:有意思的一点,其数据部分就是我们的UDP/TCP段。(这是我的理解:应用层将对象(数据)交付给传输层,传输层通过不同的协议将数据加工附上各类不同的头部信息后组成报文段,报文段作为数据部分又参与IP数据报的组成)下面给出IP数据报的格式:
版本号:指IP协议的版本,目前广泛使用的是IPv4协议,所以版本号为4.
首部长度:用来指明首部的长度大小,大小占4位,一般情况下最常用的首部长度为20
总长度:指首部和数据报的长度之和,占16位
标识:是一个计数器,每产生一个数据报就加1,并且赋值给标识字段。其作用可以标识一个IP分组。
标志位:占有三位,对于最低位MF(More Fragment):0的时候表示当前为最后一个分片(或者还没有开始分片,1的时候表示该分片后面还有其他分片。标志字段的中间位DF(Don't Fragment),当为0的时候我们允许使用分片,1的时候禁止分片。
片偏移:占据13位,指出较长的分组在分片以后,某一片在原来分组的相对位置。
首部校验和:IP数据报的首部校验和只检验分组的首部,不校验数据部分。
生存时间:标识分组在网络之中的寿命,以确保分组不会永远的在网络之中循环。路由器在转发分组之前,将其TTL减去1,在转发。当TTL变为0必须丢弃。
协议:占8位,指出该分组携带的数据是基于什么类型的协议(可以理解为携带的报文段在传输层之中采用的协议,即分组的数据到达接收方以后交付给哪一个传输层协议)
源地址:占四字节,标识发送方的IP地址。
目的地址:占四字节,标识接收方的IP地址。
2.IP数据报分片:
首先我们需要引入一个概念:MTU(最大传输单元)———链路层数据帧可以封装数据的上限,对于不同的来链路其MYU有所不同:
当大IP分组向较小MTU链路转发的时候,可以被分片:一个IP分组分为多片IP分组,这些IP分组进入主机以后会继续重组。IP首部的相关字段用于标识分片以及确定分片的相对顺序(包括:总长度、标识、标志位、片偏移。)
接下来我们看具体的分片过程:
首先:我们假设原来的IP分组的大小位L,待转发的链路的MTU为M。
若L>M,且有DF=0,那么我们就可以采取分片的操作。
分片时的每一个分片的标识复制原来的IP分组的标识。
通常情况下:出去最后一公分片,其他的分片均被分割为MTU下允许的最大分片。
一个最大分片可以封装的数据应该是8的倍数
我们利用一个表格来解决这个问题设计的计算:
情景:我们已知的IP分组为3000字节,首部为标准大小,在MTU=1500的情况下 ,发送该分组时候会有多少个分片?写出各个分片的信息(长度,偏移,MF)。
先将首部去除3000-20=2980(数据大小为2980B);
接下来分组:由上文的分片过程可以知道:分片时的每一