事业无穷年 -- 韩愈


利用窗口控制提高速度:

TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低。

为解决这个问题,牛人们提出了窗口的概念。即使往返时间较长的情况下,它也能控制网络性能的下降。

使用窗口后,发送端发送一个段之后,没有必要等到收到对端针对这个段的ACK之后再发送下一个包,而是以更大的单位进行ACK.

窗口大小指 无需等待ACK而可以继续发送数据的最大值,下图所示的窗口为4个段,每个段的大小为1000:

窗口机制的实现使用了大量的缓冲区,如上图,一次连续发送4个段,这些发送出去的数据需要被保存在缓存中,直到收到对端返回的ACK,才能清除。 另外,注意,接受端返回的ACK一定是按照顺序返回的,如上图,肯定是先返回ACK1001,再是ACK2001......

为什么叫做滑动窗口呢:看下图:

窗口里的数据表示已经被发送出去,正在等待回馈的数据。


窗口控制与重发控制:

使用窗口时,如果出现段丢失怎么办?

1)ACK在返回的路途中丢失:

 在这种情况下,数据包已经到达了对端,实际上不需要再被重新发送了。在没有使用窗口控制的情况下,没有收到确认应答的数据会不断地重新发送,而在使用窗口控制的情况下,即使某些数据包的ACK被丢失也没有影响! 如下图所示,发送端收到了ACK 2001,就会说说明ACK1001已经被接受端返回了!!就没有必要再等待ACK1001了。

2)某个数据包丢失的情况:

 在这种情况下,如下图所示,如果发送端的1001-2000个字节(第二个数据包)丢失,接受端在接受到第3个数据包时,会提醒发送端:“我想要接受的是1001开始的数据段”,即发送ACK1001。如果接受端收到第4个数据段时,还没有收到第2个段,则继续发送ACK1001.  接受端连续收到ACK1001,会确认第2个包丢失,然后就会赶紧重发第2个数据包。 一般地,当发送端连续3次接受到ACK1001时,就会断定需要重发,不必继续等待设置的重传计时器时间了。

这种方式比较高效,因此也被称作高速重发控制。(学习笔记18中会还会提到,其与拥塞控制算法有关)


流控制 (窗口大小)

通信过程中,如果接受端处于高负荷情况,导致其不能接受数据,会导致发送端重新发送数据包,为避免这种无端的流浪浪费,TCP提供了流控制的机制: 让发送端根据接受端的实际能力来控制发送的数据量。

具体操作是,接受端自动向发送端发送自己可以接受的数据的大小,从而 发送端不会发送超过这个限度的数据。该限度被称为窗口大小。

TCP的首部中,专门有一个字段来通知窗口大小。


TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制的更多相关文章

  1. TCP/IP学习笔记16--TCP--特点,数据重发,连接管理,段

    TCP充分实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的包进行顺序控制,这些在UDP中都是没有的.UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议.TCP是面向有 ...

  2. TCP/IP学习笔记:TCP传输控制协议(一)

    1 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务.两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中 ...

  3. tcp/ip学习笔记-TCP

    tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,

  4. tcp/ip学习笔记(1)-基本概念

    为什么会有tcp/ip 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计 ...

  5. TCP/IP学习笔记18--TCP--拥塞控制 (慢开始, 拥塞避免, 快重传和快恢复)

                                                            用最多的梦面对未来   -- 李嘉诚 在某段时间,若对网络资源的需求超过了该资源所能提供 ...

  6. TCP/IP学习笔记(3)-IP、ARP、RARP协议

    这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...

  7. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  8. TCP/IP学习笔记12-- IP协议基础

    IP(internet protocol, 网际协议) IP相当于OSI参考模型中的第三层 -- 网络层. --网络层的下一层--数据链路层的主要作用是在 同一种数据链路 的节点之间进行包传递,而一旦 ...

  9. TCP/IP学习笔记7--TCP/IP模型通信例子学习

    "一位如蝴蝶般美丽的女子向我飞来,翩翩的舞姿如同云端轻盈的叶儿." -------------------------------------------------------- ...

随机推荐

  1. git merge与git rebase区别(转载)

    这是最近看的讲的比较通俗易懂的rebase与merge的区别了 https://www.jianshu.com/p/4079284dd970

  2. C# 监测每个方法的执行次数和占用时间(测试4)

    今天也要做这个功能,就百度一下,结果搜索到了自己的文章.一开始还没注意,当看到里面的一个注释的方法时,一开始还以为自己复制错了代码,结果仔细一看网页的文章,我去,原来是自己写的,写的确实不咋地. 把自 ...

  3. 守护进程daemon.c

    它的特点是:•不占用控制终端(后台运行)•独立于控制终端•周期性运行 #include<stdio.h>#include<unistd.h>#include<fcntl. ...

  4. 计蒜客 39268.Tasks-签到 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest A.) 2019ICPC西安邀请赛现场赛重现赛

    Tasks It's too late now, but you still have too much work to do. There are nn tasks on your list. Th ...

  5. 洛谷P3147 262144

    题目 此题数据范围小的话可以用区间\(DP\),但是该题目的数据范围并不能用区间DP来求解,因此我们考虑优化\(DP\). 每个数的生成一定是由这两个区间 考虑区间DP的弊端是并不知道每个数生成的区间 ...

  6. 原创:史上对BM25模型最全面最深刻的解读以及lucene排序深入讲解

    垂直搜索结果的优化包括对搜索结果的控制和排序优化两方面,其中排序又是重中之重.本文将全面深入探讨垂直搜索的排序模型的演化过程,最后推导出BM25模型的排序.然后将演示如何修改lucene的排序源代码, ...

  7. C#程序发送POST请求数据中+号丢失解决方案

    C#程序把RSA加密后的密码发送到后台总是校验失败,用wireshark抓包检查发现POST发出的密码中的+号都变成了空格.为了正确的发送数据,要用URL转码协议进行转码. 有两个方法进行URL转码 ...

  8. 第10组alpha冲刺(2/4)

    队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 完善项目APP原型 展示GitHub当日代码/文档签入记 ...

  9. 地址栏从url输入到页面显示

    本文链接:https://blog.csdn.net/MiemieWan/article/details/85708052地址栏输入url, 要通过dns解析(浏览器是不能识别url地址的,需解析成i ...

  10. 分布式并行计算MapReduce

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce ...