计算机网络——各种时延和最小帧长

各种时延的理解:

时延:是数据(一个报文或分组,甚至比特)从网络或链路的一段传送到另一端所需要的时间。 

总时延=发送时延+传播时延+处理时延+排队时延

发送时延:是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

发送时延=数据帧长度(b) /信道带宽(b/s) [信道带宽就是数据率] 

传播时延:电磁波在信道中需要传播一定的距离而花费的时间。 

传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)

 处理时延:主机或路由器处理所收到的分组的时间。 

排队时延:分组在输入队列中排队等待处理,在输出队列中等待转发,就形成了排队时延。 


【例题】

考虑两台主机A和主机B由一条带宽为R bps、长度为M米的链路互连,信号传播速率为V m/s。假设主机A从t=0时刻开始向主机B发送分组。试求:


1) 传播延迟(时延)dp;
2) 传输延迟dt;
3) 若忽略结点处理延迟和排队延迟,则端到端延迟de是多少?
4) 若dp>dt,则t=dt时刻,分组的第一个比特在哪里?

(注:1k=10^3,1M=10^6)


【解】

1)传播时延dp = 信道长度(m) / 电磁波在信道上的传播速率(m/s) = M / V

2)传输延迟dt = 数据帧长度(b) / 信道带宽(b/s) = L / R
3)总延迟de = 传播时延 + 传输延迟 = M / V + L / R

4)dp > dt意味着最早发送的信号没有到达目的主机之前,数据分组的最后一个比特已经发送出来了,所以分组的第一个比特在距离主机的V * dt米的链路上


---------------------------------------我是分割线---------------------------

最小帧长的理解

      以太网中传输的数据帧的长度并不是一个常数,而是一个范围内的,以太网帧长度最大限制(MTU)是1518字节,最小长度是64字节。限制帧的最大长度是为了避免一台设备长时间占用信道,所以在传输过程中一定要有机制强制一个设备停止传输,让出信道的使用。那么为何要限制最小的帧长度呢?一个过小的数据会让以太网不能正常工作吗?

     这是一个历史问题,早期时的以太网称为标准以太网(或传统以太网),具体表现形式是10Mbps的基带总线局域网,其特点是:各站点共享共用信道,任何一个站点所发送的数据均沿着介质以广播方式传输,总线上其他所有站点均可以收到。这样就导致了多台设备同时发送信号的时候会发生碰撞,导致多台设备传输失败。然而,经过长时间的演进,特别是交换机的出现,让以太网成为了一个星型拓扑、全双工独享链路的网络。对于现在来说这个最小帧长的问题也就不是那么重要了。

    下面举一个例子来详细说明在总线拓扑结构上存在的这个问题:

首先需要建立一个印象:两个结点的数据碰撞时会boom一下爆炸掉,数据被毁坏,已经不是可用的了,因此,碰撞一发生,数据必须得重新发送。这个很自然吧!但是不建立这个基础,有些地方会觉得很卡,这是我出去散步时候想明白的,没有看到权威的说明,但对我来说是最好的解释。


OK,回过来说最小帧长问题。有了上面的共识,我们设想了一个这样的故事:将发送的数据离散化,或者说量子化,也即把数据变成一个个的人。 
场景如下:一条很宽的河流上方我们搭了一个钢索,人们过河需要通过钢索滑行过去。每次只能过去一个人,无论正向还是反向。河流的两边分别定义为A,B。从A到B和从B到A用时相同,均为ττ。为了真实模拟我们还得假设故事发生在一个黑夜,双方看不见对方,只能通过信使来告知结果。比如把一个人从A发送到B,A如何知道这个人已经顺利发送过去了呢?需要在A到达B后,马上send一个信使告诉老家A,他已安全抵达。这个信使也是需要同样的时间ττ才能回到A告诉A,上一个人到了,于是A可以继续发送下一个人了。如果A这边发送一个人,B同时也发送一个人,这两个人会在河流的中央炸成一朵烟花,消失在黑夜里。这样的碰撞事故如何被A,B知道呢?事故一发生,会自动生成两个信使,分别回去告诉A,B。也就是事故发生时间是在τ2τ2,信使回去告诉A,B,也用时τ2τ2。因为中间比较特殊,提出来看一下。那么如果事故发生不是在中点,A,B知道事故发生的时间又是怎样的呢?是不是离得越远,知道的越慢?对的。因为信使传回消息来,需要时间。恰好,事故发生地点离自己越远,表示自己这方发送的人已经走了越久,所以,一方知道事故发生的时间最长是在对方家门口。 
也即,A发送一个人过去,都到B了,B看不见啊,刚好发送一个人,迎头撞上,又是一朵烟花,消失了。变成数据,也是要重发的。


那么最小帧长是从哪里冒出来的呢?


这么想,人是连续发的。在事故发生之前,A一直在发送人,等信使恰好回来,其实已经发送了好几个人上去,然后知道了,第一个人炸没了,这一组都得重发。需要仔细考虑的是A如何确认自己可以安全发送下一组了?是不是上一组发完,信使没有回来报告出事了对不对?如果都已经发完了一组,现在在发下一组呢,信使回来说,刚才爆炸了,你说A怎么判断这是上一组的事故还是这一组的?判断不了对吧!于是引起了一个最小帧长的概念,要能判断事故发生是属于谁的,好进行下一步的安排。因此,恰好能判断的边界是:发生在B门口的爆炸事故传回到A,2τ2τ时间内,发送的人数。这一组人数更多一些,肯定能知道出事的正是当前组。

对应到数据帧,便是最小帧长。2τ2τ还有其他的别名,争用期什么的。不必管,背后的逻辑非常的生动。 

望你也有所体会~ 

至于为什么这个协议不能进行全双工通信,很明白了吧,两个站之间不能同时进行,否则会炸!   


文章参考:

https://blog.csdn.net/heatdeath/article/details/73431248

https://blog.csdn.net/u011240016/article/details/52719183



你可能感兴趣的:(计算机网络)