1、persist timer:当接收方建议的窗口大小为0时,发送方就会停止发送,直到接收方有缓存空间时再用一个窗口值非零的ACK提示发送方可以继续发送。但是这个称为window update的ACK报文段很可能会发生丢失,这个时候就不可避免地发送了死锁。因此,发送方需要设置一个persist timer,每隔一段时间就向接收方发送一个询问报文window probes,当接收方可以接收数据时就重新开始发送

2、通常发送方都会包含一个字节数据的报文段作为window probes,该字节的数据其实就是它真实要发送的下一个字节数据。并且与重传不同的是,window probes会一直进行下去,不会超过一定次数就停止重传

3、Silly Window Syndrome:为了避免大量的小数据包在网络上传输,通常接收方会等到缓冲已经满足一定大小时才重新将advertised window置为非零。如上图所示,第8个报文段其实是一个window probe,我们从接收方返回的ack来看,这个探测报文中的一个数据字节其实是被接受的,但是返回的建议窗口大小仍然为0,这时其实就是在避免小的建议窗口的出现。至于为什么最后一个ack报文段中建议的窗口大小只有509这么小呢?其实是因为之前已经建议了一个1533的窗口大小,发送方其实只发送了1024个字节的数据,如果这里突然将其变为0,那么发送方的窗口的右侧就可能向左移动(会导致已发送的数据变到窗口外去了),这是不允许的。

4、Keepalive timer:当我们在客户端和服务端建立一条TCP连接之后,如果两者直接不发送数据,那么不论过多久,不管连接中间路由器崩溃了多少次,只要两端的主机不重启,那么连接依旧是建立的。但是这会带来一些问题,例如很多客户机与同一台服务器之间建立了连接,并且这些客户机都被切断电源了,这时服务器不知道客户机都已经崩溃了,所以依然建立着连接,这样其实造成了资源的极大的浪费。因此keepalive timer就是一个定时询问机制,从而判断对方主机是否已经崩溃。

5、对于keepalive timer的设置一直有反对的声音,只要原因在于它们的存在可能导致原本良好的连接因为中间网络一些暂时的问题而导致连接关闭,不过即使是这样,大多数实现仍然保留了keepalive timer

6、通常,如果server与client之间超过两个小时没有活动,那么server就会向client发送一个探测,这时可能遇到以下四种情况:

1)client正常运行,这时server就会得到相应的返回报文,并且重置keepalive timer

2)client已经崩溃了,这样server就收不到返回报文了,于是server会每隔75s重发一次探测,发满十次后断开连接

3)client崩溃之后又重启了,这时server会得到返回报文要求reset,于是server会断开连接

4)最后,client依然在运行,但是网络不可达了,这时的结果和2)其实是相同的

一般来说,keepalive探测报的发送对应用程序是透明的,只有在2,3,4三种情况出现时,TCP才会告诉它

《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer的更多相关文章

  1. 《TCP/IP详解》读书笔记

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——13

    2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...

随机推荐

  1. 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile

    [源码下载] 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile 作者:webabcd 介绍与众不同 windows ...

  2. mysql 5.7.15发布

    2016-09-06,mysql发布了5.7更新5.7.15,修复的bug数项目之前的版本已经大大减少,说明越来越稳定了.估计再过三四个版本,就会有很多公司开始考虑生产中使用了.

  3. mysql乱码以及Data too long for column全解(最完整实用版)

    今天系统升级,开发.测试说本地环境.测试环境都没有问题,都用ssh client升的,演示环境报错了Data too long for column. 仔细检查了下,表字符集都是utf-8,目测长度肯 ...

  4. 关于JS闭包,作者不详(转)

    说明:本文由两篇文章结合而成,系从他人笔记中转过来的, 具体作者不详.因为觉得不错,遂共享之.如有侵权,立删致歉. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变 ...

  5. 当Thread.Sleep的暂停时间参数设置过小时,精度很差的解决方法

    一.问题产生 在C#和C++中有这样一个函数:void Sleep(int Timeout),可以让线程暂停指定的毫秒数. 但是我在win8下调用这个函数实现按照固定频率发送udp数据包时,会有一个问 ...

  6. tomcat已 .war 包的形式发布项目

    一:首相将写好的工程打成.war 文件包, 借助eclipse工具完成. 右键项目名称 --> Export --> WAR file  进入如下图 二: 进入到Tomcat的 webap ...

  7. Microsoft FIM: Working with Domino Connector v8

    Microsoft FIM: Working with Domino Connector v8 Posted on July 22, 2013 by Michael Pearn - 4 Comment ...

  8. 听说你会打地鼠(动态规划dp)

    题目来源:https://biancheng.love/contest-ng/index.html#/41/problems G 听说你会打地鼠 时间限制:300ms   内存限制:65536kb 题 ...

  9. 忙碌的Nova君 (活动安排问题、贪心算法)

    题目描述 理论上,Nova君是个大闲人,但每天还是有一大堆事要干,大作业啦,创新杯啦,游戏啦,出题坑人啦,balabala......然而精力有限,Nova君同一时间只能做一件事,并不能一心二用.假设 ...

  10. 阿里云ECS/Ubuntu下JDK、Tomcat、MySQL安装记录

    今天六一儿童节,然后... ... ... ... 然后就是父亲节呀孩子们!!! ———————————————————————割———————————————————————— 同事需要JDK.To ...