TCP的成块数据流


1:一般的数据流

解释:比如说报文段4,当报文段4到达bsdi的时候,bsdi就开启一个定时器,200ms的经受时延的ACK,但是当200ms的定时器到达之前,又来了一个报文段,因此此时就应该发送一个应答报文,这个报文就是7,。在比如说报文段11,12的确认ACK就是14,报文段13,15的确认ACK就是16,这些都是和上面一样的道理!!但是报文段8,就是一个开启了经受时延定时器,并且在定时器时间到达之前,并没有到来的报文,而使定时器溢出,溢出了就应该发送一个ACK!!这是常用的隔一个报文段发送ACK的成块数据TCP协议

2:当一方发送过快的时候

要注意ACK有累计确认的功能,当收到多个报文的时候,即之发送最后的一份ACK!!!

在上图中,我们发现,在报文段8中,窗口变为了0,此时通告发送方不能在发送数据,在报文段9中,因为接收方已经消耗了接受队列中的数据,因此发送一个应答报文,告知窗口已经打开~~

3:滑动窗口


1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。

2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发

生在另一端的接收进程读取已经确认的数据并释放了 T C P的接收缓存时。

3) 当右边沿向左移动时,我们称之为窗口收缩。 Host Requirements RFC强烈建议不要使

用这种方式。但 T C P必须能够在某一端产生这种情况时进行处理。第 2 2 . 3节给出了这样的一个

例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。

对照的报文如下(因为窗口属性是属于接收方的,所以信息应该从应答方来观看

3.PUSH标志

发送方使用该标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与PUSH一起传送的数据以及接收方TCP已经为接收进程收到的其它数据。

(1)发送方将发送缓冲区的数据立即发送给接收方。
(2)接收方将接收缓冲区的数据立即提交给接收进程。

如果待发送数据会清空发送缓冲区,该包将自动设置PUSH标志。

举一个列子


这里为什么4,5,6,7报文有PSH标志,因为在这里,是来一条发一条,告诉发送方要立即发送数据,二在报文段8的时候,窗口变成了0,此时应该进行等待,所以此时10,11,12,发送的报文都先应该如队列,在进行最后的PSH一次性发送

4:慢启动

如果发送方和接收方之间存在多个路由器和速率较慢的链路时,一些中间的路由器必须缓存分组,并有可能耗尽存储器的空间,这种连接方式会严重降低了TCP连接的吞吐量。

拥塞窗口(cwnd)原理:

1)发送方开始发送一个报文,然后等待ACK。

2)当收到该ACK时,拥塞窗口从1增加到2,即可以发送2个报文段。

2)发送方再发送2个报文段,然后等待ACK,当收到这两个报文段的ACK时,拥塞窗口就增加为4。这是一种指数增加的关系。

如此循环.....

在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组,这就通知发送方它的拥塞窗口开得过大。

慢启动算法用于保证新分组进入网络的速率与另一端返回确定的速率相等。
拥塞窗口是发送使用的流量控制,通告窗口是接收方使用的流量控制。




来自为知笔记(Wiz)

优质内容筛选与推荐>>
1、Windows UWP开发系列 – 3D变换
2、.NET中的异步编程,高并发处理详解地址
3、图像格式与分辨率
4、.NET:C# 如何实现的闭包?
5、Impress Your Clients With Personalized Greeting Cards


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号