《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请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...
随机推荐
- 泛函编程(12)-数据流-Stream
在前面的章节中我们介绍了List,也讨论了List的数据结构和操作函数.List这个东西从外表看上去挺美,但在现实中使用起来却可能很不实在.为什么?有两方面:其一,我们可以发现所有List的操作都是在 ...
- custom struts framework
1. Difference between stucts1 and struts2 struts1 : Servlet used as Controller , you can visit the S ...
- js小数计算小数点后显示多位小数(转)
首先写一个demo 重现问题,我使用的是一个js在线测试环境[打开] 改写displaynum()函数 function displaynum(){var num = 22.77;alert(num ...
- c++之函数重载(函数匹配)
Case void f(); void f(int); void f(int, int); void f(double, double = 3.14); 匹配原则: 1)其形参数量与本次调用提供的实参 ...
- .net经验积累
希望对.net编程者有所帮助 1.学会配置环境变量 1.我的电脑-属性-环境变量-双击下面的path-粘贴路径 2.ctrl+r 输入软件名字按回车 2.常用vs2010快捷键 代码格式化:ct ...
- winform里面网页显示指定内容
今天有个同事问了一下我,怎么在winform里面打开网页啊?我们都是基于C/S的开发,很少接触winform,所以我当时就懵了,实在不知道怎么回答,所以索性说不知道.但是我又想了想,这个应该是个很简单 ...
- EntityFramework5学习
在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种由AD ...
- 美丽的阴影(剖析jquery主页)
jquery Download API Documentation Blog Plugins Browser Support jquery主页第一眼看到的就是这个玻璃渣效果,设计者利用高光和阴影制造出 ...
- mvc项目架构搭建之UI层的搭建
项目架构搭建之UI层的搭建 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 5.项目创 ...
- 2015年第12本(英文第8本):the Old Man and the Sea 老人与海
书名:The Old Man and The Sea(老人与海) 作者:Ernest Hemingway 单词数:2.7万 不重复单词数:2600 首万词不重复单词数:1500 蓝思值:940 阅读时 ...