拥塞控制

TCP的拥堵控制

孤者浪人 提交于 2020-03-04 03:55:34
拥塞控制的一般原理: 拥塞控制所起的作用: 如何维持实际拥塞控制 发送方的发送窗口的上限值应当取为接收方窗口和拥塞窗口这两个变量中较小的一个,即: 慢开始和拥塞避免算法的实现举例: 快重传: 若发到第五个包时​​发现3丢包,则A计算机继续发包345,不等待 进一步 来源: CSDN 作者: Three ooo 链接: https://blog.csdn.net/ITgougou_/article/details/104634112

tcp拥塞控制

ε祈祈猫儿з 提交于 2020-03-03 04:52:24
1.引言 计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。 拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。 2.慢开始与拥塞避免 发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。 慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。 这里用报文段的个数的拥塞窗口大小举例说明慢开始算法,实时拥塞窗口大小是以字节为单位的。如下图: 当然收到单个确认但此确认多个数据报的时候就加相应的数值。所以一次传输轮次之后拥塞窗口就加倍。这就是乘法增长,和后面的拥塞避免算法的加法增长比较。 为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下: 当cwnd<ssthresh时,使用慢开始算法。 当cwnd>ssthresh时,改用拥塞避免算法。 当cwnd=ssthresh时

计算机网络 第五章:传输层

元气小坏坏 提交于 2020-02-26 11:58:53
第五章 传输层 ->传输层协议UDP和TCP ->网络安全 ->TCP可靠传输的实现 ->TCP的流量控制 ->TCP的拥塞控制 ->TCP的运输连接管理 5.1 OSI和DoD模型 下图必须背下来。尤其是传输层和网络层的协议。 传输层最大数据包是65535字节,而网络层数据最大只有1480字节。所以需要分段,但是只要分段,就有可能丢包,因为网络层不负责可靠传输。所以要求服务器和客户端保持会话,直到数据传输完成。 ->TCP(Transmission Control Protocol)传输控制协议 应用场景:需要将要传输的文件分段传输时;就需要TCP协议来建立会话实现可靠传输;同时也有流量控制功能。(例如QQ传文件) 查看会话 netstat -n 查看建立会话的进程 netstat -nb ->UDP(User Data Protocol)用户数据报协议 应用场景:一个数据包就能完成数据通信;不需要建立会话和流量控制;多播/广播;是一种不可靠传输。(例如QQ聊天,屏幕广播) 5.2 传输层协议和应用层协议的关系 (1)TCP和UDP协议和不同的端口即可对应一个应用层的协议。注意,53大部分是与UDP相连。 (2)熟知数值一般为0-1023,登记端口号数值1024-49151,客户端口号数值为49152-65535. (3)常用的应用层协议使用的端口(号): http = TCP

(转)TCP的拥塞控制

谁说胖子不能爱 提交于 2020-02-16 19:16:58
转: https://www.cnblogs.com/losbyday/p/5847041.html 1. 拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。 拥塞控制: 防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。 拥塞控制所要做的都有一个 前提:网络能够承受现有的网络负荷。 拥塞控制是一个 全局性的过程 ,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。 流量控制:指点对点通信量的控制,是端到端正的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。 拥塞控制代价:需要获得网络内部流量分布的信息。在实施拥塞控制之前,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用,使得网络资源不能更好地实现共享。 2. 几种拥塞控制方法 慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )。 2.1 慢开始和拥塞避免 发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度

Linux_UDP协议和TCP协议

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-15 10:04:42
传输层 负责数据能够从发送端传输到接收端。 端口号(Port)标识了一个主机上进行通信的不同的应用程序。 0~1023:知名端口号。如FTP(21)、SSH(22)、Telnet(23)、SMTP(25)、HTTP(80)、HTTPS(443)。查看知名端口号 cat /etc/services 1024~65535:操作系统动态分配端口号。 在TCP/IP协议中,用"源IP“、“源端口号”、“目的IP”、“目的端口号”、"协议号"这样一个五元组来标识一个通信。 注意:一个进程可以绑定多个端口号,因为一个进程可以打开多个文件描述符,而每个文件描述符都对应一个端口号,所以一个进程可以绑定多个端口号。一个端口号不能被多个进程绑定。 netstat:一个用来查看网络状态的重要工具,常用选项如下: 语法:netstat [选项] n:拒绝显示别名,能显示数字的全部转化成数字 l:仅列出有在listen的服务状态 p:显示建立相关链接的程序名 t:(tcp)仅显示tcp相关选项 u:(udp)仅显示udp相关选项 a:(all)显示所有选项,默认不显示listen相关 pidof:在查看服务器的进程id时非常方便。 语法:pidof [进程名] 1、UDP协议 协议格式 源端口号:16位 目地端口号:16位 UDP长度(首部+数据):16位 UDP校验和:16位 特点 无连接

TCP的可靠性保证机制

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-13 22:31:27
TCP的可靠性保证机制 前言 我们常说,UDP是不可靠的通信协议,而后来发展的TCP弥补了UDP的不可靠缺陷,那么TCP是靠什么来保证可靠性的呢? 0X10 序列号、确认应答、超时重传 当接收方收到报文时就会确认,如果发送方发送一段时间后没有确认就 重传 0X11 窗口控制与高速重发控制/快速重传(重复确认应答) TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内, 不用一定要等到应答才能发送下一段数据 ,窗口大小就是无需等待确认而可以继续发送数据的最大值 如果数据段1001-2000丢失,后面数据每次传输,确认应答都会 不停地发送序号为1001的应答,表示我要接收1001开始的数据 ,发送端如果收到3次相同应答,就会立刻进行重发 接收窗口: “接收窗口”大小取决于应用(比如说tomcat:8080端口的监听进程)、系统、硬件的限制。图中,接收窗口是31~50,大小为20。   在接收窗口中,黑色的表示已收到的数据,白色的表示未收到的数据。   当收到窗口左边的数据,如27,则丢弃,因为这部分已经交付给主机;   当收到窗口左边的数据,如52,则丢弃,因为还没轮到它;   当收到已收到的窗口中的数据,如32,丢弃;   当收到未收到的窗口中的数据,如35,缓存在窗口中。 发送窗口 0X13 拥塞控制 如果窗口很大,发送端连续发送大量的数据,可能会造成网络的拥堵

UDP与TCP的区别

和自甴很熟 提交于 2020-02-10 05:40:04
TCP和UDP的比较 TCP UDP 无连接 面向连接 尽最大努力交付 可靠交付服务 面向报文 面向字节流 没有拥塞控制 有拥塞控制 支持一对一、一对多、多对多 支持一对一 开销小 开销大 来源: https://www.cnblogs.com/godfriend/p/11041454.html

TCP/IP协议学习笔记(二)

冷暖自知 提交于 2020-02-08 05:20:40
传输层 TCP协议 本文主要整理TCP协议的知识点 1 前言 尽管TCP和UDP都使用相同的网络层(IP), TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。 TCP具有以下特点 1、面向连接 每个TCP段都包含一个源端口号和目的端口号,用来确定发送端和接收端的应用进程,然后结合IP首部中的源端IP地址和目的端IP地址就能唯一确定一个TCP连接。 2、可靠 TCP协议拥有各种机制来确保数据传送的可靠性,例如超时重传策略,保持首部和数据的校验和,流量控制和校验已收到数据的完整性和正确性等。 2 TCP首部 TCP报文段被封装到IP数据报中,通常是20个字节。 源端口号和目的端口号 :用于寻找发送端和接收端的应用进程,分别是16位 Sequence Number (序列号):报文段中的第一个字节,用于标识发送的数据字节流 Acknowledgment Number (确认号):确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志为1时该确认序列号的字段才有效。 Offset(数据偏移 ):给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能表示15个32bit的的字,即4*15=60个字节的首部长度)

(转)TCP的滑动窗口与拥塞窗口(主要讲慢启动,拥塞避免,快重传,快恢复)

会有一股神秘感。 提交于 2020-02-07 21:42:39
原地址 https://blog.csdn.net/ligupeng7929/article/details/79597423 因此我们先了解一下16位的窗口大小究竟有什么作用。 窗口分为滑动窗口和拥塞窗口。 滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的。 那么对于数据的发送端就是拥塞窗口了,拥塞窗口不代表缓存,拥塞窗口指某一源端数据流在一个RTT内可以最多发送的数据包数 一、滑动窗口 滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的可以接受缓冲区大小(这个字段越大说明网络吞吐量越高),从而控制发送方的发送速度,不过如果接收端的缓冲区一旦面临数据溢出,窗口大小值也会随之被设置一个更小的值通知给发送端,从而控制数据发送量(发送端会根据接收端指示,进行流量控制)。 对ACK的再认识,ack通常被理解为收到数据后给出的一个确认ACK,ACK包含两个非常重要的信息: 一是期望接收到的下一字节的序号n,该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而不是第n字节数据,接 收方是不会发送序号为n+2的ACK的。举个例子,假如接收端收到1-1024字节,它会发送一个确认号为1025的ACK,但是接下来收到的是 2049-3072,它是不会发送确认号为3072的ACK

TCP超时与重传机制

孤街醉人 提交于 2020-02-05 21:30:36
TCP超时与重传机制      TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制。其基本原理:在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。   这里比较重要的是重传超时时间,怎样设置这个定时器的时间(RTO),从而保证对网络资源最小的浪费。因为若RTO太小,可能有些报文只是遇到拥堵或网络不好延迟较大而已,这样就会造成不必要的重传。太大的话,使发送端需要等待过长的时间才能发现数据丢失,影响网络传输效率。   由于不同的网络情况不一样,不可能设置一样的RTO,实际中RTO是根据网络中的RTT(传输往返时间)来自适应调整的。具体关系参考相关算法。   通过图来了解重传机制: 从图可以知道,发送方连续发送3个数据包,其中第二个丢失,没有被接收到,因此不会返回对应的ACK,没发送一个数据包,就启动一个定时器,当第二个包的定时器溢出了还没有收到ack,这时就进行重传。 TCP慢启动   慢启动是TCP的一个拥塞控制机制,慢启动算法的基本思想是当TCP开始在一个网络中传输数据或发现数据丢失并开始重发时,首先慢慢的对网路实际容量进行试探,避免由于发送了过量的数据而导致阻塞。