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

1.基本概念

TCP之所以可以安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据。

2.超时时间的测量

要测超时时间,TCP必须要发送一个特别序号的字节和接收包含该字节的确认之间的RTT,但是,确认本身就是有延时的,所以一般有一种简单的测量超时时间的公式

RTO = RB

其中R为随RTT变化而变化的平滑因子

3.拥塞避免算法

前边的博客有写道,当发送端使用慢启动算法时,由于其发送的数据段呈指数增长,因此也很容易达到网络通道的极限,此时,网络上的路由就会将部分分组丢失,因此TCP又给发送端设置了一种拥塞算法,此算法就是用来解决分组丢失问题的

拥塞算法假定正常情况下分组的丢失率是非常小的低于(1%),所以当双方出现大量丢失分组现象,则说明网络出现拥堵

拥塞避免算法和慢启动算法一般结合使用,此时需要给发送端维持俩个变量,一个是拥塞窗口cwnd,和一个慢启动门ssthresh,算法过程具体如下

(1)对于一个给定的连接,将初始化cwnd为1,和ssthresh为65535字节

(2)TCP输出的数据不能超过接收方给的通告窗口和拥塞窗口的最小值,拥塞窗口是发送方使用的流量控制,通告窗口是接收仿使用的流量控制

(3)当拥塞发生时(超时或收到重复确认),ssthresh就会被设置为当前窗口的一般,即拥塞和通告窗口的最小值

(4)此时我们先进行慢启动,发送的数据段将呈指数增长,很快便达到了修改后的ssthresh(窗口的一般)的值,此时慢启动将不在以指数的方式增长发送量了,而是每收到一个确认,则发送量就增长1的线性增长

4.快速重传与快速恢复

当我们收到失序的报文段时,TCP需立即产生一个ACK(一个重复的ACK),这个重复的ACK不应该延迟,该ACK是想让对方知道收到了失序的报文段,并告诉对方希望收到的序号

由于我们并不知道一个重复的ACK是由丢失的报文段引起的还是仅仅由重新排序所引起的,因此我们就稍微等待一下,在做判断。当在重新排序的报文段被处理并产生一个新的ACK之前只可能收到1-2个重复的ACK,如果收到3个以上的ACK就很可能是报文段丢失了,于是我们就直接重传丢失的报文段,而无须等待超时定时器的溢出(也就是不需要等到超时时间到了才判断丢了)接下来执行的就是拥塞避免算法,这就是快速恢复。

5.按每条路由进行度量

现在较新的TCP实现的路由表项中维持了许多指标,当一个TCP连接关闭时,如果已经发出了足够多的数据来获得有意义的统计资料,且目的节点的路由表项不是一个默认表项,那么下列信息就保存在在路由表项中使用:平滑的RTT,慢启动门限等

6.重新分组

当TCP重传时,它不一定要重传同样的报文段,相反TCP允许进行重新分组,而进行发送一个较大的报文段

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

时间: 2024-08-28 08:18:21

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的坚持和保活定时器

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

【转】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的分层使得协