流量控制

HTTP2.0简明笔记

无人久伴 提交于 2019-12-10 00:02:50
版权声明:本文由史燕飞原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/82 来源:腾云阁 https://www.qcloud.com/community RFC2616发布以来,一直是互联网发展的基石。HTTP协议也成为了可以在任何领域使用的核心协议,基于这个协议人们设计和部署了越来越多的应用。HTTP的简单本质是其快速发展的关键,但随着越来越多的应用被部署到WEB上,HTTP的问题慢慢凸显出来。今天,用户和开发者都迫切需要通过THHP1.1达到一种几近实时的响应速度和协议性能,而要满足这个需求,只在原有协议上进行修补是不够的。为了应对这些挑战,HTTP必须继续发展。HTTP工作组已经在2012年宣布要设计和开发HTTP2.0。HTTP2.0的主要目标是改进传输性能,实现低延迟和高吞吐量。 在HTTP2.0真正诞生之前,谷歌开发了一个实验性质的协议-SPDY,它定位于解决HTTP1.1中的一些性能限制,来减少网页的延时。自从2009年SPDY发布之后,这个协议得到了众多浏览器厂商和大型网站的支持,实践证明它确实可以很大幅度的提升性能,已经具备成为一个标准的条件。于是,HTTP-WG于2012年初提出要重在SPDY的一些实践基础上新设计和开发HTTP2.0,以期使数据传输具有更好的性能和更少的延时

深入理解TCP、UDP协议及两者的区别

梦想与她 提交于 2019-12-09 23:39:49
一、TCP协议: 位于传输层, 提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。所以,TCP连接相当于两根管道(一个用于服务器到客户端,一个用于客户端到服务器),管道里面数据传输是通过字节码传输,传输是有序的,每个字节都是一个一个来传输。 (1)、三次握手:握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement) 。 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,完成三次握手。 若在握手过程中某个阶段莫名中断, TCP 协议会再次以相同的顺序发送相同的数据包。 (2)、四次挥手

对高并发流量控制的一点思考

天大地大妈咪最大 提交于 2019-12-09 21:30:33
前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考。 应对大流量的一些思路 首先,我们来说一下什么是大流量? 大流量,我们很可能会冒出:TPS(每秒事务量),QPS(每秒请求量),1W+,5W+,10W+,100W+...。其实并没有一个绝对的数字,如果这个量造成了系统的压力,影响了系统的性能,那么这个量就可以称之为大流量了。 其次,应对大流量的一些常见手段是什么? 缓存:说白了,就是让数据尽早进入缓存,离程序近一点,不要大量频繁的访问DB。 降级:如果不是核心链路,那么就把这个服务降级掉。打个比喻,现在的APP都讲究千人千面,拿到数据后,做个性化排序展示,如果在大流量下,这个排序就可以降级掉! 限流:大家都知道,北京地铁早高峰,地铁站都会做一件事情,就是限流了!想法很直接,就是想在一定时间内把请求限制在一定范围内,保证系统不被冲垮,同时尽可能提升系统的吞吐量。 注意到,有些时候,缓存和降级是解决不了问题的,比如,电商的双十一,用户的购买,下单等行为,是涉及到大量写操作,而且是核心链路,无法降级的,这个时候,限流就比较重要了。 那么接下来,我们重点说一下,限流。 限流的常用方式 限流的常用处理手段有:计数器、滑动窗口、漏桶、令牌。 计数器 计数器是一种比较简单的限流算法

拥塞 Congestion

允我心安 提交于 2019-12-09 19:17:43
拥塞概念 网络中存在太多的数据包导致数据包被延迟或丢弃,从而降低了传输性能 注: 网络层和传输层共同承担着拥塞的责任 拥塞控制和流量控制 1、拥塞控制的任务: 确保网络能够承载所有到达的流量(这个是全局问题,涉及所有主机和路由器) 2、流量控制: 只与特定的发送方和接收方有关 拥塞起因 1、路由器内存不足 2、处理器速度慢 拥塞控制的途径——增加资源或减少负载 来源: CSDN 作者: Lin_SIT 链接: https://blog.csdn.net/gml1997/article/details/103462866

TCP/IP_TCP与UDP

点点圈 提交于 2019-12-06 19:42:35
TCP/IP_TCP与UDP TCP/IP中两个具有代表性的传输层协议,他们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。 在IP首部中有一个协议字段,用来标识网络层的上一层所采用的是哪一种传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP内容,还是UDP内容。同样传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发送给哪个应用,也设定了一个这样的编号。以包裹传递为例,邮递员(IP)根据收件人的地址(目标IP地址)向目的地(计算机)投递包裹(IP数据报)。包裹到达目的地以后由对方(传输层协议)根据包裹信息判断最终的接收人(接收端应用程序): 为了实现这一功能,使用端口号这样一种识别码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。 TCP/IP的众多应用协议大多以客户端/服务端的形式运行,例如对于HTTP连接请求: 这些服务端程序叫做守护进程。在unix中不需要将这些守护进程逐个启动,而是启动一个可以代表他们接收客户端请求的inetd服务程序即可。它是一种超级守护进程,该超级守护进程收到客户端请求以后会fork新的进程并且exec为sshd等各个守护进程。确认一个请求究竟发送给的是哪个服务端,可以通过所收到数据包的目标端口号轻松识别。 端口号 数据链路和IP中的地址

真正能够区分流量控制和拥塞控制区别+原理

…衆ロ難τιáo~ 提交于 2019-12-06 15:27:52
四篇关于流量控制,拥塞控制,滑动窗口,拥塞窗口的参考文章,可以详细阅读,当然在原理方面可能还达不到深入理解的水平,但是对上面试官吹吹水还是没问题的 TCP 滑动窗口和 拥塞窗口 TCP/IP(十一)TCP滑动窗口和拥塞控制 TCP滑动窗口协议及拥塞控制 TCP机制下为什么要同时拥有滑动窗口和拥塞控制窗口? 一、Flow Control 的机制 写在开头:纯属自己看完的感悟,若是不理解,就继续看下文详解 FlowControl:通过 服务端 施加限制条件来抑制缓冲区溢出 Congestion Control:通过 客户端 施加限制条件来抑制缓冲区溢出 流量控制实际上是一种为了考虑和平衡客服端和服务端发送接收数据不同步的情况,如果发送的慢还好,服务端大不了进入空闲等待,只不过浪费了资源,但若是客户端发送数据过快,另服务端读取数据的速度跟不上客服端,导致两端游速度差,这样就会在服务端缓冲区积累大量数据,直至数据溢出,而且由于服务端已经确认过该信号,那么溢出之后就会导致该数据丢失,会对该通信有重大影响。所以呢,就要用flow control机制来限制客服端的数据发送速度,所以一切的问题根源都是来自于服务端,是服务端增加了限制条件,考虑的问题角度是不同的 (说到这里,其实已经发现,对于在服务端积累大量数据这个问题,一种情况是可以由服务端发出限制条件来进行改善

数据链路层

不想你离开。 提交于 2019-12-06 02:13:34
功能 链路管理 主要解决包括数据链路的建立、维持和释放。 信息的传输 主要解决如帧格式、帧大小、帧同步、帧顺序编号以及判断是数据信息h 还是控制信息等问题。 流量与差错控制 流量控制问题实际上就是收发双方收发速率的同步问题。 差错控制问题就是确保数据准确的递交给目标方高层。 异常情况处理 对在该层中出现的异常情况,要解决如何检测、如何处理等问题。 流量控制协议:是指对在数据链路上传输的帧进行速度的控制 ,保证接收端有足够的缓冲单元存储发端发来 的信息以便收端处理。 常用2种方法 : 停—等流量控制, 滑动窗口流量控制 来源: https://www.cnblogs.com/zh727729853/p/11956416.html

图解TCP-IP协议

我们两清 提交于 2019-12-06 02:12:04
本文通过图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 图1 TCP 三次握手四次挥手 图1主要包括三部分:建立连接、传输数据、断开连接。 1)建立TCP连接很简单,通过三次握手便可建立连接。 2)建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传、流量控制、拥塞控制等等。 3)断开连接的过程也很简单,通过四次握手完成断开连接的过程。 三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。 传输数据过程: a.超时重传 超时重传机制用来保证TCP传输的可靠性

TCP和UDP的区别

烈酒焚心 提交于 2019-12-06 02:11:57
相同点 UDP协议和TCP协议都是传输层协议。 TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。 不同点 1.TCP是基于链接的协议,UDP是面向非连接的协议。 2.从可靠性的角度来看,TCP的可靠性优于UDP 3.从传输速度来看,TCP的传输速度比UDP更慢 4.从协议报文的角度看,TCP协议的开销大,但是TCP具备流量控制的功能,UDP的协议开销校,但是UDP不具备流量控制的措施 5.从应用场合看,TCP适合于传送大量数据,而UDP适合传送少量数据 来源: https://www.cnblogs.com/zjy0806/p/11956313.html

TCP

给你一囗甜甜゛ 提交于 2019-12-06 01:07:06
TCP协议报文格式。 序号字段占4字节,序号字段的值是指本报文段所发送的数据的第一个字节的序号(随机数)。 确认号字段占4字节,是期望收到对方的下一关报文段的数据的第一个字节的序号。 紧急URG,URG=1时有效。 确认ACK,ACK=1时有效。 复位RST,RST=1时出现严重差错,必须释放连接再重新建立传输连接。 同步SYN,SYN=1时表示连接请求或连接接受报文。 终止FIN,释放一个连接。 窗口字段是由接收端窗口和拥塞窗口中较小的一个决定的。 TCP流量控制是为了让接收方来得及接收,也不要让网络发生拥塞。 TCP连接建立被称为三次握手,TCP的终止连接称为四次握手。 TCP与UDP的区别在于: TCP面向连接,UDP无连接; TCP可靠传输,UDP不提供可靠传输; TCP流量控制,UDP不提供流量控制; TCP传输速度慢,UDP传输速度快; TCP协议开销大,UDP协议开销小。 来源: https://www.cnblogs.com/hy190263933/p/11955077.html