《TCP/IP详解 卷一》读书笔记-----TCP超时重传
1、TCP提供的是可靠传输,它通过接收方发送一个确认报文ACK来提供这种可靠性。但是数据报文和确认报文都可能会丢失,所以TCP会给发出的数据报文设置一个时间,如果超时了则进行重传
2、Karn's Algorithm:当发生了一次超时重传之后,我们不能根据发回的对于重传数据的ACK更新RTT和RTO(retransmission timeout 重传时间)的值。因为我们不知道这个ACK是对于第一次传送的数据的确认(可能是第一次发送的数据在网络中有延时或者是它对应的ACK报文有延时)还是对重传数据的确认。直到我们收到不是对应于重传数据的ACK报文,才能根据它更新RTT和RTO的值
3、Congestion Avoidance Algorithm:拥塞避免算法,首先设置两个变量,拥塞控制窗口cwnd,慢启动阈值ssthresh,然后按如下步骤操作:
1)初始化cwnd为一个报文段大小,ssthresh为65535个字节
2)TCP不能发送超过拥塞控制窗口(congestion window)和流量控制窗口(advertised window)之中较小值的数据
3)当发生拥塞时(超时或者收到三个重复的ACK),ssthresh被设置为当前窗口大小(两个窗口的较小值)的一半,并且如果拥塞是超时导致的,cwnd被设置为一个报文段大小
4)当有新的数据被确认时,我们增加cwnd的值,这时要根据cwnd和ssthresh之间的关系分别对待,当cwnd<ssthresh的时候,使用慢启动算法,即指数型增长cwnd,当cwnd>=ssthresh的时候就采用拥塞避免算法,线性增长cwnd,具体的实现如下图所示

4、Fast Retransmit and Fast Recovery Algorithms:快速重传和快速恢复算法,当发送方收到三个重复的ACK报文段时,说明对应的报文段丢失了,于是没有等到超时,发送方就重发了相应的报文段,这就是快速重传。而且重传之后直接进入拥塞避免而不进入慢启动,这就是快速恢复。这里需要注意的是,当接收方收到一个乱序的报文段时,会立即发送ACK报文,告诉发送方自己收到了一个乱序的报文并且说明自己想得到的报文段的序号
5、TCP连接通常会遇到source quench,host unreachable,network unreachable这三类ICMP错误报文。当收到source quench时,通常会导致cwnd变为一个报文段,然后慢启动,但是ssthresh不变。当收到host unreachable 和 network unreachable这类报文时,通常会将它忽略,然后不断重传数据,当然,最后可能因为超时而终止
6、当发生超时重传的时候,TCP不一定要重传和之前一模一样的报文段,而是可以接下来要传输的数据也放到重传的报文段中,称为repacketization,这可以提高传输的效率。之所以能够这样做,是因为TCP是通过传输数据的字节编号来进行确认的,而不是传输的报文段的编号
《TCP/IP详解 卷一》读书笔记-----TCP超时重传的更多相关文章
- 《TCP/IP详解》读书笔记
本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层 一.整体概念 1.各层协议的关系,只讨论四层 各层常见的协议: 网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...
- TCP/IP详解 卷一学习笔记(转载)
https://blog.csdn.net/cpcpcp123/article/details/51259498
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- 『TCP/IP详解——卷一:协议』读书笔记——02
2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...
- 『TCP/IP详解——卷一:协议』读书笔记——18
2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...
- 『TCP/IP详解——卷一:协议』读书笔记——15
2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...
- 『TCP/IP详解——卷一:协议』读书笔记——14
2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...
- 『TCP/IP详解——卷一:协议』读书笔记——13
2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...
随机推荐
- 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom
[源码下载] 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom 作者:webab ...
- php 7 windows redis 扩展
搜了一圈也没找到redis 对于 php 7 windows 扩展,最后还是在apache lounge论坛找到了php7全扩展包 本人把里面的扩展全进行了上传(下载见本文底部) 在这里主要讲讲 ph ...
- 为阿里云存储开发的PHP PEAR 包:Services_Aliyun_OSS
阿里云开放存储服务 OSS:用于存储图片.apk等静态资源,使用阿里云带宽,不占用开发者服务器带宽. 阿里云官方PHP SDK: http://aliyun.com/product/oss/#help ...
- 对getElementsByTagName("*")获取全部元素的总结
var all=document.getElementsByTagName("*") //获取整个页面的标签元素 alert(all.length); ...
- ADODB.Connection 错误 ‘800a0e7a’ 未找到提供程序
问题表现:做网站ASP页面提示:ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. 解决方案:一般都是64位系统的原因,把IIS切换为32Bit模式运 ...
- ABAP指针
1. 什么是ABAP指针:在ABAP里面,field symbol就相当于c语言的指针.如果你定义并且分配了相应的结构或者变量给它,其实它就指向这个结构或者变量的地址,如果修改了field symbo ...
- Dynamics AX for Retail POS Development blogs
Dynamics AX for Retail POS Development Dynamics AX for Retail POS Development - Code Samples AX for ...
- ubuntu下nagios配置
参考文献: http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html http://my.oschina.net/duangr/blo ...
- I/O之输出流 OutputStream类
java的I/O技术可以将数据保存到文本.二进制.ZIP压缩文件中,下面来说说一些基本的常识(今天只讲理论).先来说说流,何为流?“流就是一组有 序的数据序列,根据操作的类型,可以分为输入(Input ...
- MQTT for UWP
老规矩,先简单介绍下MQTT: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协 ...