Week 6

Transport Layer

————————————————————————————————————————————————————————

现在来回顾一下IP的作用(如下图所示)


回顾完以后,下面我们就讨论一下第三层:Transport Layer,传输层

————————————————————————————————————————————————————

这一段先做一个大概分析。

要知道,让IP传输这么快的原因是因为IP不追求完美,它只考虑网络就够了,并不用要求说一定不能丢失数据,所以说作为IP,它的本分确实做到了,然而却没有完美,所以第三层,传输层,负责收拾它的烂摊子,以达到优化信息传输的效果

原话如下:

 The purpose of the TCP layer is to  compensate for the possible errors in the IP layer as well as make best use of  available resources

TCP层的目的是补偿IP层中可能出现的错误,并尽量利用可用的资源。传输层的其中一个作用就是:恢复丢失的信息。这里有一句很重要的话:TCP在计算哪些包有或没有跨越互联网层,以后才去恢复信息


什么意思呢?当发送信息者发送信息时,如果每发送一次就要等一下收信人的回复,这太浪费时间了,所以说,在发送信息的时候,发信人会源源不断的死命发信,直到收信人说:好了好了收到了,不要再发了收到了,发信人才停止发信。比方说一个人发送一个数据,这个数据被拆分成5个数据包,假设,通道宽度只有3,那么你就先发个3个吧(如上),比如100,200,300,你在不停的重复发送着这些数据包假设你发送的时候不小心把200丢掉了,对方收到了100,300,然后没有发现200,那么,你就需要继续发送200,不用再发100和300了,那么你就可以忘了他,不用再储存了,然后就是,200,400,500,以此类推,要知道,在这么繁忙的道路上你停车,或者一口气同时开这么多的车有些还是没用的车,是很没有效率的,所以说:临时储存+反馈机制+理智的轮回发送=超高效率。这个概念不仅是主机-主机,也可以延伸到主机-路由,路由-路由,路由-主机等。这里有一个概念,就是acknowledgement(确认回复)简称ACK,我把他解成一种反馈,刚刚上面所说的反馈就是这个,下面也有用到。

————————————————————————————————————————————————————

这一段做个具体一点的分析。

Van jacobsan是对第三层贡献极大的一位伟人,当时在1980年代的时候,由于数据的传输没有这么优秀,人人都感觉陷入了瓶颈,这问题到底在哪?随着这个问题的放大,第三层才逐渐浮出水面。所以这里Van设计了一个油管+活塞结构(我自己取的名字。好理解)以及涉及到了一个算法叫慢启动算法(Slow Start Algorithm



图一我们可以看到,当我们有很多数据需要发送的时候,在我们这边,就会有像油管一样粗的装置储存我们的信息,然而真正的网络带宽是中间像水管一样细的管道,所以说如果一次性发送太多的数据,就很容易引起大堵塞,所以说,先分组交换,然后把这些小份的数据包,试探性的慢慢发送,即很形象的形容为:慢启动,既然是慢启动,看得出慢,启动的意义又在哪里得到体现?那就是发送者和收信者之间,存在一个联系,每当发送者的一个数据包成功发送过去的时候,起到三个作用,即一举三得1.说明通道没有堵塞。2.收信者给你ACK反馈。3.收到ACK那你就发送下一个packet也就是说从一开始的试探性慢慢发送的时候,每一个数据包的成功发送,你都会得到这三个好处,一旦网络通畅,那你就敢大胆一点了,让数据包发送的快一点。这样就像图二那样,这个循环,逐渐走上正轨,慢慢加快的同时还能够判断网络的通畅程度并且采取相关措施,最后达到一个最值后,发生如下变化。

————————————————————————————————————————————————————

这一段做个具体分析。

首先,先要提到两个概念一个算法

1.cwnd即拥塞窗口

下面链接是一些介绍

(https://blog.csdn.net/u014287775/article/details/49999275)


2.慢启动门限(ssthresh)

3.拥塞避免算法(Additive Increase and Multiplicative Decrease)AIMD


从图一可以看出来,一开始就像刚刚说的试探性的测试,你每收到一个ACK就会把速度加快,即把通道打开,这打开是按照指数的速度打开的,所以很快就能上升到一定的值,但是值也是有限度的,当你达到门槛的时候,也就慢启动门限的时候,你的增长速度开始变慢,从指数变成线性运算,线性运算称之为Additive Increase,加法增加,这个慢启动门限就是,图二的面那条黄线,上面那一条黄线是通道的最大宽度,如果超过了就会超时了,就要从来,加法增大是指执行拥塞避免算法后,使拥塞窗口 cwnd 缓慢增以防止网络过早出现拥塞。而乘法减小,是指不论在慢开始阶段还是在拥塞避免阶段,只要出现超时(即很可能出现了网络拥塞),就把 ssthresh 减半,称为Multiplicative Decrease。即 ssthresh = cwnd/2,紧接着,cwnd = 1.实际上,慢启动阶段没有上图占比这么多,毕竟线性和指数是两个概念嘛。至于为什么是2的N次方增长大概是因为这样的速度好运转吧,竟慢启动门限用的是二分法。你会问:为什么不停留在那个最大值呢?因为压力大啊,要喘口气啊。这样做的目的是要迅速减少主机发送到网络中的分组数,使得发生拥塞的中间设备有足够的时间把缓冲区中积压的分组处理完毕第一次的门槛应该是撞墙之后才判断出来的吧,而且还不一定标准,应该是要撞两次墙才能判断门槛,具体为什么自己感受一下。对了,第四次开始就是只有乘法减少没有慢启动了因为门槛已经确认了。(我的理解是,慢启动是为了确立门槛而存在的)

更加具体的算法请看这: https://blog.csdn.net/jtracydy/article/details/52366461

————————————————————————————————————————————————————

这里换一个话题吧,那就是很常见的DNS域名系统就像互联网的地址簿,它是一个快速的大型分布式数据库,它使用缓存,即使网络部分瘫痪,它也能在本地快速运行,IP是从左往右读,而域名是从右往左读,下面的绿字就是一个他的形容方式,域名没有具体的层次,如果说非要框定一个层了话那就是2.5吧。


Week 7讲的是应用层,即在基于123层正常工作的情况下4层是有什么用,如何工作的。



猜你喜欢

转载自blog.csdn.net/a1164520408/article/details/80199828