事业无穷年 -- 韩愈


利用窗口控制提高速度:

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. linux添加用户adduser出现 useradd:cannot lock /etc/passwd; try again

    找一下有个叫/etc/passwd.lock的文件,找到,给它用root删掉就好了,可能是上次使用到这个文件没有正常关闭.具体操作:切换到root用户,用cd etc到etc目录下,rm .pwd.l ...

  2. C# 反射(转)

    什么是反射 Reflection,中文翻译为反射.        这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’.‘模块(Module)’.‘类型 ...

  3. C++中指针形参问题

    1.C++指针做形参,会有很多陷阱,很多时候也许并不如我们想的那样.比如我们想通过一个函数改变指针的值: #include<</SPAN>iostream> using nam ...

  4. elasticsearch安装和部署

    1.可以在官网上下载不同版本的es,官网地址为:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 2.解压elastics ...

  5. c++中 string类型 转为 char []类型

    将string类型转换为字符数组char [] char arr[50]; //数组大小根据s的大小确定 string s= "12slfjksldkfjlsfk"; int le ...

  6. 机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)

    在<机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)>一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质.现在 ...

  7. WAMP 3.1.0 APACHE 2.4.27 从外网访问

    想测试一下从外网访问自己的电脑,找了一圈,网上教程都是修改APACHE 的 httpd.conf,经过1小时的摸索,发现完全不对. 正真的方法是修改httpd-vhost.conf,需要修改2处: 1 ...

  8. linux命令之------Chown命令

    Chown命令 1) 作用:将指定文件的拥有者改为指定的用户或组. 2) -c:显示更改的部分的信息. 3)-f:忽略错误信息. 4)-h:修复符号链接. 5)-v:显示详细的处理信息. 6)-R:处 ...

  9. GDOI2018 小学生图论题 [NTT]

    并没有传送门qwq 思路 首先要知道一个结论(或者说是一个套路):一个竞赛图缩点之后必定是一条链. 那么强联通分量的个数,就是这条链的边数+1. 考虑一条边什么时候会出现:当且仅当点集可以被分成\(S ...

  10. 绿色地狱 - 纽博格林赛道详解 | Nürburgring

    Nürburgring - Green Hell [統哥] 車迷人生必去一趟的德國紐柏林賽道之旅 F1赛道通常短而宽,一是为了观赏性,二是为了安全. 而Nürburgring赛道则是F1赛道的极端反面 ...