-
电路交换
在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存、链路传输速率)。
在发送方发送信息之前,电路交换方式必须在发送方和接收方之间建立一条连接,被称为电路;同时,建立这条电路,需要消耗一定的时间。
沿着发送方和接收方之间路径上的交换机都将为建立的连接维护连接状态,这导致了电路交换方式可靠性不高的问题(因为只要有一个交换机出问题了,连接就被打破了)。
在连接期间,电路在该网络链路上预留了恒定的传输速率,这保证了通信的性能。
给这条电路分配的资源是这条电路独享的资源,这样如果这条电路上没有数据发送,这些资源就会被浪费。
电路一般不会占用全部的链路,如果把一条链路(1Mbps)分配给一条电路(100Kbps),这是一种浪费。所以,要将链路分成片,分片方式有:频分复用(Frequency-Division Mutliplexing,FDM),时分复用(Time-Division Mutliplexing,TDM),波分复用(Wave-Division Mutliplexing,WDM)
-
分组交换
在端系统间通信会话期间,不会预留端系统间沿路径通信所需要的资源(缓存、链路传输速率)。
链路带宽资源不再分片,而是把全部带宽都用于通信。
多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。存储转发传输机制是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。
存储转发传输机制会带来存储转发时延。
分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)),用于存储转发到某条链路的分组。如果到达的分组需要到某条链路,但是该链路正在传输其他分组,那么这个到达的分组就必须在输出缓存中等待,这就带来了排队时延。
当一个分组已到达需要排队,但是输出缓存已满,这时就会出现分组丢失(丢包)(packet loss)。
路由器决定分组转发到哪条链路的原理:分组的首部包含了目的地的IP地址。每台路由器都有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索它的转发表,找到对应的输出链路。路由器将分组导向查到的那条输出链路。
分组交换是时分复用使用链路资源,但是没有固定的划分模式,所以称为统计多路复用。
分组交换网络按照有无网络层的连接,分成:数据报(datagram)网络和虚电路(virtual circuit)网络。
ICP(Internet Content Provider),互联网内容提供商,如百度,微信,会构建专用的网络,为用户提供更好的服务。ICP 也会和 ISP 互联。
-
分组丢失的原因
输出队列是有限的,排满时就会发生分组丢失了。输出队列不可以设计为无限的,因为无限的队列意味着无限的等待,用户不会接收无限的等待。
-
分组延时
节点处理(nodal proceeding)延时:检查bit级差错,检查分组首部和决定该分组导向何处的时间,在微秒或更低的数量级。
排队(queuing)延时:分组等待传输的时间,取决于拥塞情况,实际的排队延时可以在毫秒到微秒量级。
传输(transmission)延时:把一个分组的所有比特全部推向链路所需要的时间。分组长度为 L 比特,从路由器 A 到路由器 B 的链路传输速率是 R bps,那么传输延时 = L / R。实际的传输延时可以在毫秒到微秒量级。
传播(propagation)延时:分组在链路上传播的时间,取决于两个路由器之间的距离 d,和该链路的传播速率,传播延时 = d / s。
注意区分传输延时和传播延时,传输延时是路由器推出整个分组所需要的时间,是分组长度和链路传输速率(是主机或路由器向链路发送数据的速率)的函数,与两台路由器之间的距离无关;传播延时是一个比特从一个路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传输速率无关。
TraceRoute 程序是使用了 ICMP 协议的。
-
流量强度用于估计排队延时
a 表示分组到达队列的平均速率(a 的单位是分组/秒,即pkt/s);
R 表示链路传输速率,即主机或路由器向链路发送数据的速率,从队列中推出比特的速率,单位:bps,即 b/s;
L 表示分组长度(假定所有分组都是 L 比特组成的),单位是比特。
假定该队列无限大,比率 La / R 被称为流量强度。L/R 表示从队列中推出一个分组的速率,单位是s/pkt,而 a 表示分组到达队列的速率,La/R > 1,则表示分组到达队列的平均速率超过从该队列传输岀去的速率,这样会导致队列无限增加,排队延时也将无限增加。因此,流量工程中的一条金科玉律是:设计系统时流量强度不能大于1。
-
吞吐量
时延,丢包,吞吐量都是计算机网络中重要的性能测度。
吞吐量:在发送端和目的端之间数据传输的速率(bps)。
瞬时吞吐量(instantaneous throughput):在一个时间点的速率
平均吞吐量(average throughput):在一段时间内的平均速率
吞吐量取决于瓶颈链路(bottleneck link)的传输速率。
-
因特网的复杂性
因特网有大量的应用程序和协议、各种类型的端系统、分组交换机以及各种类型的链路级媒体。因此,必须组织网络体系结构。
-
分层的网络体系结构
模块化:把复杂的功能分成子功能,每个模块完成一个特定的子功能,各模块组合起来成为整体,完成整个系统所要求的功能。
而分层是特殊的模块化,只有上下层模块之间才可以相互沟通,不允许跨层调用。
将网络复杂的功能分成功能明确的层次,每一层实现其中一个或一组功能,提供给上层使用的那些功能被称为服务;
本层协议实体相互交互执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务;
在实现本层协议的时候,直接利用了下层提供的所有服务:本层要和对等层通信,需要使用下层提供的服务来实现;
本层的服务:借助于下层提供的服务实现新的功能,也包括下层提供的服务。
改变服务的实现不会影响该系统其他组件,这是因为该层对上面提供相同的服务(相同的层间接口),并且使用来自下面层次的相同服务,当这一层的实现变化时,该系统的其他部分保持不变。
分层的缺点:效率低一些。
-
服务和服务访问点
服务:低层实体向高层实体提供它们之间通信的能力。低层实体是服务提供者(service provider),高层实体是服务用户(service user)。
服务访问点SAP(service access point):上层使用下层提供的服务通过层间的接口(地点)。服务提供者用来区分不同的上层服务用户的穿过层间的信息,标记不同上层实体的信息。
原语(primitive):提供服务的形式。
-
服务的类型
面向连接的服务(connection-oriented service):两个通信实体为进行通信而握手(准备好相应的资源(缓存区,重置控制变量,设置超时定时器)),称为建立一个连接。
无连接的服务(connectionless service):两个通信实体在通信前不需要建立一个连接(不需要预留资源),不需要通信双方都是活跃的。
-
服务和协议
服务是低层实体向高层实体提供的功能,是垂直的关系;
协议是对等层实体之间在通信的过程中,需要遵守的规则的集合,是水平的关系。
本层协议的实现需要依赖下层提供的服务;本层实体通过协议为上层提供更高级的服务。
-
数据单元(DU)
SDU:service data unit 服务数据单元,上层交给下层传输的数据
ICI:interface control information 接口控制信息
IDU (interface data unit)= ICI + SDU
PDU:protocol data unit 协议数据单元,包括上层叫下来的数据和本层的头部信息
-
Internet 协议栈
应用层:在传输层进程到进程数据传输基础之上,完成应用报文的交换。如FTP,HTTP,SMTP,DNS 协议。
传输层:在端到端的数据传输基础之上,区分进程到进程之间数据,把IP层的不可靠的服务变为TCP可靠的服务。如TCP协议,UDP协议
网络层:在源主机和目的主机之间以分组为单位的端到端的数据传输(路由和转发),不可靠的传输。如 IP 协议,路由协议。
链路层:在相邻两点之间传输以帧为单位的数据,识别帧头和帧尾之间的帧。如 PPP, Ethernet。
物理层:发送方把帧(frame)中的比特变为物理信号在链路中传播,接收方把物理信号还原为比特。
-
ISO/OSI 参考模型
互联网协议栈里面没有表示层和会话层。如果需要这两层,就必须在应用层实现。
-
各层次的协议数据单元
应用层:报文(message)
传输层:报文段(message segment)
网络层:分组 packet,无连接方式:数据报 datagram
数据链路层:帧 frame
物理层:位 bit
-
封装与解封装
主机实现了所有 5 个层次,链路层交换机实现了第一层和第二层,所以不能识别IP地址,只能识别以太网地址,路由器实现了第一层到第三层,所以能够识别IP地址。
发送端的封装:在发送端,一个应用层报文(M)被传送给传输层;传输层收到报文并附加传输层首部信息(Ht),共同构成传输层报文段(segment),这里 segment 就封装了 message,即 segment = Ht + message;网络层收到传输层报文段后,会附加网络层首部信息(Hn),生成了网络层数据报(datagram),这里 datagram 就封装了 segment,即 datagram = Hn + segment = Hn + Ht + message;链路层收到网络层数据报后,会增加链路层首部信息(Hl),生成链路层帧(frame),这里 frame 就封装了 datagram,即 frame = Hl + datagram = Hl + Hn + Ht + message;物理层把帧中的bit转为物理信号传播出去。
接收端的解封装:在接收端,物理层把物理信号转为bit;链路层在一系列比特中识别出帧头和帧尾,生成帧,解封装为链路层首部信息和网络层数据报;网络层收到数据报后,解封装为网络层首部信息和传输层报文段;传输层收到报文段后,解封装为传输层首部信息和应用层报文;应用层收到报文后,供应用程序使用。
参考:交换机和路由器的区别是什么,它们有什么不同?