TCP/IP详解学习笔记--TCP的坚持和保活定时器

TCP的坚持定时器

1.基本概念

TCP的接收方指名希望从发送方接收的数据字节(窗口大小)来进行流量控制,如果窗口大小为0,那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗口大小的ACK为止,那么如果接收方发送的这个ACK中途丢失了呢(这种可能性是有的)?此时发送方收不到信息,就默认窗口大小还为0,那它就继续阻塞在那,这样就造成了死锁。那么如何解决此类问题呢,解决方案就是我此片博文的题目,TCP的坚持定时器。为了防止上述死锁的发生,TCP的发送方使用了一个坚持定时器,来周期性的向接收方查询,以便发现窗口是否已增大

2.糊涂窗口综合症

如果大家以前了解过TCP的话,那么相信大家也听说过糊涂窗口综合症吧。它的大致意思是这样的,就是当接收方窗口大小变为0时,发送方就会阻塞,上文中有提到,当接收方窗口大小刚空出来一个很小的空间然后就去通知发送方,发送方同样也会发一个很小的数据,然后导致接收方窗口变为0,等接收方稍微在腾出来点空间。。。。如此往复,每次发送方和接收方都只能弄到很少的数据,严重降低了传输效率,这就是所谓的糊涂窗口综合症

我们可以使用如下方法来解决此类问题

(1)接收方不通告小窗口。除非窗口比MSS大或者比接收方缓存的一般空间小才通告发送方

(2)发送方避免糊涂窗口的措施是只有以下条件才发送数据

.可以发送一个满长度的报文段

.可以发送至少是接收方缓存区一半的报文段(主要针对小缓存区的主机)

.能够发送手头所有数据,并不希望收到ACK(此算法可能禁止了Nagle算法)

TCP的保活定时器

当TCP的俩端建立连接后,而不发送任何数据,那么只要这俩个主机不崩,无论经过多长时间,中间路由是否坏掉,电话线是否断掉,此连接会依然存在

这种现象表明俩个应用都没有自己去检测非活动状态的定时器

保活功能定时器

当TCP连接的俩端临时出现故障时,保活功能就会产生一个很好的连接终止效果

保活功能主要是为服务器程序提供的,服务器需要知道客户机是否已经崩溃

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 05:33:13

TCP/IP详解学习笔记--TCP的坚持和保活定时器的相关文章

TCP/IP详解学习笔记--TCP的基本概念

1.TCP的服务 虽然TCP和UDP最后都会通过IP层传输,但是二者却为用户提供完全不同的服务,TCP提供的是面向连接的,可靠的字节流服务 面向连接意味着俩个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接.可以用打电话比喻TCP的连接,要想俩个人通话,首先一方要拨通另一方的电话,等待另一方接通电话之后才可以通话,TCP连接只有俩方能通话,这和UDP完全不同 TCP通过如下方式来提供可靠的服务 .应用数据被分成TCP认为最合适的数据块 .当TCP发出一个段时,它启动一个定时器,等待目的

TCP/IP详解学习笔记--TCP数据流

1.TCP的交互数据流 (1)基本概念 所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包含的数据不超过10个字节,例如聊天等telnet的软件的TCP数据流就属于TCP交互数据流 (2)经受时延的确认 TCP收到数据时并不会马上发送数据,相反它会推迟数据的发送,以便让ack和该方向要发送的数据一起发送(搭个便车,不然ack就得自己自己组成一个数据段发送,这样有可能造成网络发生拥塞),但是如果此方向一直没数据发送,那么ack就得一直等下去?当然不会,系统会给其定一个最长等

TCP/IP详解学习笔记--TCP连接的建立与终止

1.基本概念 由于TCP是一个面向连接的协议,无论在哪一方发送数据之前,都必须先在双方之间建立连接,接下来我们就讨论建立连接的具体过程 2.建立TCP连接 如下图所示: 1.首先请求端发送一个序列号为1(表明该方的起始序列号为1)的SYN段,此时由于连接还未建立成功,所以携带的数据为0,并前发送端还告诉接收端它所能接收的最大报文段mss 2.接收端收到SYN段后,也给对方回一个SYN端,告知对方它的其实序列号为5并携带给对方回的ack,同时也告诉对方它所能接收的最大报文段mss 3.请求端在收到

TCP/IP详解学习笔记--TCP的超时与重传

1.基本概念 TCP之所以可以安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的测量 要测超时时间,TCP必须要发送一个特别序号的字节和接收包含该字节的确认之间的RTT,但是,确认本身就是有延时的,所以一般有一种简单的测量超时时间的公式 RTO = RB 其中R为随RTT变化而变化的平滑因子 3.拥塞避免算法 前边的博客有写道,当发送端使用慢启动算法时,由于其发送的数据段呈指数增长,因此也很容易达到网络

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

TCP/IP详解学习笔记

TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 TCP/IP详解学习笔记(6)-UDP协议 TCP/IP详解学习笔记(7)-广播和多播,IGMP协议 TCP/IP详解学习笔记(8)-DNS域名系统 TCP/IP详解学习笔记(9)-TCP协议概述 TCP

TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

TCP/IP详解学习笔记(一) 概述

生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢固 2. 对算法,数据结构认知太浅 3. 对界面程序以及GUI相关学习比较排斥 我也一直主观上逃避对这些知识的学习,这也是为什么我写的内容都是以实践为主了.从本系列开始,我尝试离开大脑的舒适区,巩固自己理论相关的知识. TCP/IP作为整个现代互联网社会的基础,有着至关重要的作用,因此学习掌握协议栈

TCP/IP详解学习笔记(1)

这里是<TCP/IP详解>卷一的一些笔记以及自己对书中的理解,我会结合抓包软件Wireshark来分析,但由于条件有限,无法模拟出书中作者的网络,只能简单的分析,如果发现错误,请帮忙指正.   首先我们讲什么是TCP/IP协议: 两台主机要通信必须遵循相同的规范,对互相发送的报文要知道该如何处理,就像发送XML和JSON数据一样,他们需要按照预先规定的格式组织进行发送,而接收端也要按照这种格式来解读.网络通信协议做的就是这个,而tcp/ip就是协议中用的最广泛的一种. TCP/IP的分层使得协