tcp设置超时重传】的更多相关文章

TCP超时和重传的基础是怎样根据给定连接RTT设置RTO,若TCP先于RTT开始重传,可能会在网络中引入不必要的重复数据,反之,若延迟至远大于RTT的间隔发送重传数据,整体网络利用率会随之下降.由于RTT的测量较为复杂,根据路由和网络资源的不同,它会随时间而改变.TCP必须跟踪这些变化并适时做出调整来维持好的性能. TCP在收到数据后会返回确认信息,因此可在该信息中携带一个字节的数据来测量传输该确认信息所需的时间.每个此类的测量结果称为RTT样本.TCP首先需要根据一段时间内的样本值建立好的估算…
TCP是可靠传输.可靠之一体现在收到数据后,返回去一个确认.但是不能完全避免的是,数据和确认都可能丢失.解决这个办法就是,提供一个发送的重传定时器:如果定时器溢出时还没收到确认,它就重传这个报文段. 想法是完美的,关键之处在于超时和重传的策略,即怎么决定超时间隔和如何确定重传的频率. 书中举了一个简单的超时重传例子: 如图: 比如A往B传,传了一部分数据后,把B的网线拔了(前边讲过,如果不传数据的话,双方没法知道这个连接已经断了).然后开始A再给B发数据,此时tcpdump出来发现,连续重传了一…
在前面我们概述了TCP的超时重传之后我们简单的看一下tcp超时重传的示例.首先简单的描述一下测试过程 1.设置/proc/sys/net/ipv4/tcp_early_retrans为2,关掉TLP功能(后面内容介绍TLP).设置/proc/sys/net/ipv4/tcp_retries2为8,减少重传次数,这样方便wireshark抓包演示.同时设置/proc/sys/net/ipv4/tcp_discard_on_port为9877,以让client可以精确的控制发出的TCP报文,而不受到…
采用TCP时,应用层需要超时重传吗? 需要,原因如下: 1 tcp的超时控制不是你能设置的,所有的tcp超时都是用系统的时间设定,而且这个时间很长,超时的结果就是断开连接.和你应用要达到的目的显然差很远 2 send的返回OK != 数据被对方成功收到 ,且,数据被对方成功受到 != 数据被对方逻辑成功处理 举个极端的例子:对方收到包,但是还没来的及处理,程序崩掉了,这个时候你的网络层显示的显然是对方收到了(确实也是对方收到了),但是对方并没有正确处理这个包,这个时候从逻辑上讲,你应该需要重发的…
1.TCP提供的是可靠传输,它通过接收方发送一个确认报文ACK来提供这种可靠性.但是数据报文和确认报文都可能会丢失,所以TCP会给发出的数据报文设置一个时间,如果超时了则进行重传 2.Karn's Algorithm:当发生了一次超时重传之后,我们不能根据发回的对于重传数据的ACK更新RTT和RTO(retransmission timeout 重传时间)的值.因为我们不知道这个ACK是对于第一次传送的数据的确认(可能是第一次发送的数据在网络中有延时或者是它对应的ACK报文有延时)还是对重传数据…
超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止. 1.超时 超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难.要求精确的原因有两个:(1)定时长久会造成网络利用率不高.(2)定时太短会造成多次重传,使得网络阻塞.所以,书中给出了一套经验公式,和其他的保证计时器准确的措施. 1.1.递推公式概说 最早的TCP曾经用了…
TCP 每发送一个报文段,就对这个报文段设置一次计时器.只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段 1. 平均往返时延RTT 往返时延:一个报文段发出的时间,以及收到相应的确认报文段的时间.这两个时间之差就是报文段的往返时延 平均往返时延 new_RTTs = a* (old_RTTs) + (1 - a) * (新的RTT样本)      0<= a < 1 a: (1)若 a 很接近于 1,表示新算出的平均往返时延 RTT 和原来的值相比变化不大,而新的往返时延样本的影…
RTT:往返时间:  RTO:Retransmission Timeout即超时重传时间: 关键点在于:超时和重传间隔的策略,即怎样确定超时间隔和重传间隔: TCP中的四个定时器:2MSL定时器:重传定时器:坚持定时器:保活定时器: 首先是如何得到RTO值:(假设已经能测量到RTT值情况下) RTO值是依赖RTT值来确定的:而鉴于网络环境的不稳定性,RTT总是变化的, RTT = 0.1*M  + 0.9*R;  M:当前测试的RTT值,R:历史RTT的值: RTO=@RTT:    @:一般取…
TCP提供可靠的运输层.它使用的方法之一就是确认从另一端收到的数据.但数据和确认都有可能会丢失.TCP通过在发送时设置一个定时器来解决这种问题.如果当定时器溢出时还没有收到确认,它就重传该数据. 对于实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传频率. TCP管理4种不同的定时器: 重传定时器:当希望收到另一端的确认时使用. 坚持定时器:使窗口信息保持不断流动,即使另一端关闭了其接收窗口. 保活定时器:检测一个空闲连接的另一端何时崩溃或重启. 2MSL定时器:测量一个…
21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1)  ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行重传 2)  在向一个不存在的主机发送ARP的 例子中,可看到当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN 对于每个连接,TCP管理4个不同的定时器: 1)  重传定时器使用于当希望收到另一端的确认 2)  坚持(persist)定时器使窗口大小信息保持不断流动,即使另一…