TCP/IP详解(三)

超时与重传:

TCP在发送一个包时,启动一个定时器,如果在定时器溢出之前没有收到ACK,则认为发出的包丢失了,此时会重传丢失的包。这就是超时重传。

其中定时器的时间不是一个固定值,它是根据RTT计算的。是一个变化量(RTO)。

等待超时再重传比较慢,有一种更快的方法可以用于判断是否丢包,这就是快速重传。

在接收端收到乱序的包时,会返回一个ACK,序号是它期望接受的下一个包。如果多次收到重复的ACK,则说明这个期望的包很有可能丢了。少次收到重复的ACK也许是因为包延时了。这个次数一般被设为3。即在收到第三个重复的ACK(即第四个相同的ACK)时,发送端会重发。

拥塞控制:

慢启动算法:在刚建立连接后或者超时重传时,会使用慢启动。即控制窗口cwnd最开始为1个包的大小,当到1个ACK,就加1个包的大小,这样,控制窗口会呈几何增长(2^k)。当第一次发生超时重传或者快速重传,慢启动门限ssthresh被设为cwnd/2,最低不小于2个包的大小。

如果是超时重传,则cwnd被重新置为1个包的大小,并重新慢启动,直到cwnd>=ssthresh.

避免拥塞算法:在慢启动到达ssthresh后,每收到1个ACK,cwnd增长1/k个包的大小,这里k=cwnd/segmentsize。正常情况下,一个RTT内会收到k个ACK,因此cwnd在1个RTT内近似增长1个包的大小(增长放缓)。

快速回复:如果慢启动遇到快速重传。则不将cwnd初始化为1个包的大小,这样增长太慢。而将它直接置为ssthresh+3。+3是因为收到了3个重复的ACK,由于线路中包的数量是恒定的,出来3个ACK,则可以再放3个新包进去。重传以后,可能不会马上就收到对重传数据的ACK。如果收到的还是重复的ACK,则每收到1个,cwnd增大1个包的大小。直到收到对重发数据的ACK,此时恢复避免拥塞算法。

时间: 2024-08-30 03:30:32

TCP/IP详解(三)的相关文章

《TCP/IP详解卷1:协议》第14章 DNS:域名系统---读书笔记

<TCP/IP详解卷1:协议>第14章 DNS:域名系统---读书笔记 1.引言 5.指针查询 DNS中一直难于理解的部分就是指针查询方式,即给定一个IP地址,返回与该地址对应的域名. 当一个组织加入Internet,并获得DNS域名空间的授权,如noao.edu,则它们也获得了对应IP地址的in-addr.arpa域名空间的授权.在noao.edu这个例子中,它的网络号是140.252的B类网络.在DNS树中结点in-addr.arpa的下一级必须是该IP地址的第一字节(例中为140),再下

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(2)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《TCP/IP详解卷2:实现》笔记--IP的分片和重装

IP首部内有三个字段实现分片和重装:标识字段(ip_id).标志字段(ip_off的3个高位比特)和偏移字段(ip_off的13个低位 比特).标志字段由3个1bit标志组成.比特0是保留的必须为0,:比特1是"不分片"(DF)标志:比特2是"更多分片"(MF)标志. Net/3中,标志和偏移字段结合起来,由ip_off访问,如下图所示: ip_off的其他13bit指出在原始数据报内分片的位置,以8字节为单位计算.因此,除最后一个分片外,其他的分片都希望是一个 8

《TCP/IP详解卷2:实现》笔记--IP编址

1.接口和地址 在本文中讨论的所有接口和地址结构的一个例子配置如下图所示: 上图中显示了我们三个接口例子:以太网接口,SLIP接口和环回接口.它们都有一个链路层地址作为地址列表中的第一个结点. 显示的以太网接口有两个IP地址,SLIP接口有一个IP地址,并且环回接口有一个IP地址和一个OSI地址. 所有的IP地址都被链接到in_ifaddr列表中,并且所有链路层地址能从ifnet_addrs数组访问. 后面的部分讨论上图的数据结构以及用来查看和修改这些结构的IP专用ioctl命令. 2.sock

《TCP/IP详解卷2:实现》笔记--接口层

提示:该实验所在的平台是在RedHat 6下 该实验成功的前提有三个: (1):windows能ping通linux系统 (2):关闭linux的防火墙 :执行指令 /etc/init.d/iptables  stop (3):让SeLinux关闭  :执行指令:  setenforce permissive 补充: SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.SELinux 是一个

【转】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详解·卷一>看了三遍才算整明白个大概,一直想做个总结. 最初对TCP的印象很简单:丢包重传.流数据.丢包重传很好理解,“流数据”是什么鬼? 知乎上看到个极好的解释:把TCP看作用管子往对端灌水,水是数据,它们之间没有边界,且先发先到:UDP是往对端滚小球,它们之间有明确边界,且可能每个小球速度不同,先滚的不一定先到,得自己处理乱序. 编码上也可看出,TCP的send回调带有dwNumberOfBytesTransferred参数,描述本次网络IO发送了多少字节数据,而不是给它多少

《TCP/IP详解:卷一》-TCP部分讲解

TCP/IP协议 作者:Danbo 2015-7-2 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以微博联系我! TCP包格式和IP包格式如下: TCP的正常建立与关闭 建立连接 TCP协议提供可靠的面向连接服务,采用三次握手建立连接.第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认:第二次握手:服务器收到SYN包,向客户端返回ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《TCP/IP详解卷2:实现》笔记--IP多播

D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组. 单个网络上的组成员利用IGMP协议在系统之间通信.多播路由器用多播选录协议,如DVMRP(distance vector multicast routing protocol,距离向量多播路由选择协议)传播成员信息. 在Net/3中,如果某个接口支持多播,那么在接口ifnet结构中的if_flags的标识IFF_MULTICAST比特就被打开. RFC 1112描述了多播对主