流量控制

(转)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 拥塞控制 如果窗口很大,发送端连续发送大量的数据,可能会造成网络的拥堵

Sentinel

↘锁芯ラ 提交于 2020-02-08 14:13:11
Sentinel简介 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控 制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即 突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控 :Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机 器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。 广泛的开源生态 :Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。 完善的 SPI 扩展点 :Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快 速地定制逻辑。例如定制规则管理、适配动态数据源等。 Sentinel 的主要特性: Sentinel 与Hystrix的区别 迁移方案 Sentinel 官方提供了详细的由Hystrix 迁移到Sentinel 的方法 名词解释 Sentinel 可以简单的分为 Sentinel 核心库和

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开始在一个网络中传输数据或发现数据丢失并开始重发时,首先慢慢的对网路实际容量进行试探,避免由于发送了过量的数据而导致阻塞。  

以太网技术原理

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-05 13:40:52
重点1 数据链路层的功能:链路管理;信息的传输;流量与差错控制;异常情况处理 重点2 流量控制协议常用的两种方法:停—等流量控制; 滑动窗口流量控制 (限制已发送出去而未被确认的数据帧的个数;每个帧都有唯一的编号,且可循环使用已收到确认的那些帧的序号) 1、广域网数据链路控制规程的分类:面向字符型(BSC、DDCMP);面向比特型(HDLC、SDLC、ADCCP) 2、帧结构 标志字段F 地址字段A 控制字段C 信息字段INFO 帧校验字段FCS 标志字段F 控制字段(8bit):信息帧 I(0) 监督帧 S(10) 无编号帧(控制命令帧)U(11) 帧校验序列(16bit) 3、数据链路层协议的三个基本问题: 封装成帧;透明传输;差错检测 4、HDLC采用 零比特填充法 使一帧中两个F字段之间不会出现6个连续1,从而实现透明传输 5、数据链路层使用的信道主要有:点对点信道( 点对点协议PPP );广播信道 6、循环冗余检验 7、数据链路层只检错不纠错 来源: https://www.cnblogs.com/chenyingshi/p/9903746.html

计算机网络高频面试题解析(含书籍推荐)

三世轮回 提交于 2020-02-03 21:14:18
网络原理是工程师的必须了解的计算机基础知识,先推荐下两本好书,《图解HTTP》和《图解TCP/IP》。 《图解TCP/IP》讲解网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,《图解HTTP》对HTTP协议进行了全面系统的介绍,这两本书的特点都是在讲解的同时,配上了大量漫画通信图例,读起来比较轻松。 高频面试题解析 1、OSI七层网络模型的结构与功能 OSI是一个开放性的通信系统互连参考模型,OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。 OSI是一个定义得非常好的协议规范,但是比较复杂所以一般使用TCP/IP 的四层模型来描述。 就目前来说,TCP/IP 的四层模型更受广泛认可,在计算机网络中,大家更多喜欢使用 TCP/IP 模型来进行划分和理解。因为表示层、会话层以及应用层之间的界限在实际应用中并不清晰,让人不好区分。 2、TCP/IP四层协议有哪些结构与功能 TCP/IP 参考模型是一个包含了不同网络层次的一系列网络协议的集合。一般 TCP/IP 参考考模型分为四层,从下到上分别是,数据链路层、网络层、传输层和应用层。 也有将它分为五层的,也就是加上物理层,不过对于大部分的计算机网络应用,软件工程师一般都是不关心物理层。 应用层提供了不同应用数据包的处理协议

tcp拥塞控制(摘自维基百科)

我的梦境 提交于 2020-02-01 03:19:13
TCP使用多种拥塞控制策略来避免雪崩式拥塞。TCP会为每条连接维护一个“拥塞窗口”来限制可能在端对端间传输的未确认分组总数量。这类似TCP流量控制机制中使用的滑动窗口。TCP在一个连接初始化或超时后使用一种“慢启动”机制来增加拥塞窗口的大小。[6]它的起始值一般为最大分段大小(Maximum segment size,MSS)的两倍,虽然名为“慢启动”,初始值也相当低,但其增长极快:当每个分段得到确认时,拥塞窗口会增加一个MSS,使得在每次往返时间(round-trip time,RTT)内拥塞窗口能高效地双倍增长。 当拥塞窗口超过慢启动阈值(ssthresh)时,算法就会进入一个名为“拥塞避免”的阶段。[注 1]在拥塞避免阶段,只要未收到重复确认,拥塞窗口则在每次往返时间内线性增加一个MSS大小。 在TCP中,拥塞窗口(congestion window)是任何时刻内确定能被发送出去的字节数的控制因素之一,是阻止发送方至接收方之间的链路变得拥塞的手段。他是由发送方维护,通过估计链路的拥塞程度计算出来的,与由接收方维护的接收窗口大小并不冲突。 当一条连接创建后,每个主机独立维护一个拥塞窗口并设置值为连接所能承受的MSS的最小倍数,之后的变化依靠线增积减机制来控制,这意味如果所有分段到达接收方和确认包准时地回到发送方,拥塞窗口会增加一定数量。该窗口会保持指数增大