流量控制

HTTP/2 新特性总结

流过昼夜 提交于 2019-11-28 03:34:42
我在想了解HTTP/2的时候,查阅了很多资料,发现这篇很好,是外国的文章.我翻译过来,加入自己的一点理解. HTTP/2 更简单,高效,强大.它在传输层解决了以前我们HTTP1.x中一直存在的问题.使用它可以优化我们的应用.HTTP/2 的首要目标是通过完全的请求,响应多路复用,头部的压缩头部域来减小头部的体积,添加了请求优先级,服务端推送.为了支持这些特性,他需要大量的协议增加头部字段来支持,例如新的流量控制,差错处理,升级机制.而这些是每个web开发者都应该在他们的应用中用到的. HTTP/2并没有在应用中改变HTTP的语义,而是通过在客户端和服务端传输的数据格式(frame)和传输.它通过在新的二进制帧层控制整个过程以及隐藏复杂性,而这不需要改变原来有的东西就可以实现. 1. 设计和技术目标 HTTP是因特网广泛普及和采纳的应用层协议.它的易于实现性同样有了对应用性能方面的影响.HTTP/1.x 需要开启多个连接来实现并发和减少潜在影响.HTTP/1.x 的头部没有压缩,造成不必要的网络拥塞.HTTP/1.x没有应用资源优先级,导致重要Tcp连接的糟糕使用. 它的好处如下; HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by

计算机网络基础知识点四

╄→尐↘猪︶ㄣ 提交于 2019-11-28 01:24:59
运输层 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信,运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就好像在两个运输实体之间有一条端到端的逻辑通信信道。 UDP和TCP的特点 用户数据报协议UDP的主要特点是: 1)无连接 2)尽最大努力交付 3)面向报文 4)无拥塞控制 5)支持一对一、一对多、多对一和多对多的交互通信 6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和) 传输控制协议TCP的主要特点: 1)面向连接 2)每一条TCP连接只能是点对点的(一对一) 3)提供可靠交付的服务 4)提供全双工通信 5)面向字节流 TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点。这样的端点就叫做套接字或插口。套接字socket=(IP地址:端口号);每一条TCP连接唯一的被通信两端的两个端点(即两个套接字)所确定,即TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)} UDP的首部格式 首部字段只有8个字节,包括源端口、目的端口、长度、检验和。12字节的伪首部是为了计算检验和临时添加的。 TCP的首部格式 TCP报文段首部的前20个字节是固定的 1)源端口和目的端口:分别写入源端口号和目的端口号 2)序号:用于对字节流进行编号 3)确定号:期望收到的下一个报文段的序号

【TCP协议】---TCP三次握手和四次挥手

冷暖自知 提交于 2019-11-27 23:28:24
TCP协议 本文内容如下: 1)TCP协议概念 2)TCP头部结构和字段介绍 3)TCP流量控制 滑动窗口 4)TCP拥塞控制 慢启动、拥塞避免、快重传、快恢复 有关TCP的三次握手四次挥手单独写了一篇博客: 【TCP协议】---TCP三次握手和四次挥手 有关TCP粘包和黏包,也单独写一篇博客,下一篇博客就写有关粘包黏包问题。 一、TCP概念 TCP(Transmission Control Protocol 传输控制协议)是一种 面向连接(连接导向) 的、 可靠的 、 基于IP的传输层 协议。 首先来看看OSI的七层模型 我们需要知道 TCP 工作在网络OSI的七层模型中的第四层—— 传输层 , IP在第三层——网络层 , ARP 在第二层——数据链路层 ;同时,我们需要简单的知道,数据从 应用层发下来,会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封 装的过程。 在OSI七层模型中,每一层的作用和对应的协议如下: 二、TCP头部结构和字段介绍 从上面图片可以看出,TCP协议是封装在IP数据包中。 下图是TCP报文数据格式。TCP首部如果不计选项和填充字段,它通常是20个字节。 下面分别对其中的字段进行介绍: 源端口和目的端口 各占2个字节

tcp/udp

人盡茶涼 提交于 2019-11-27 20:19:16
DP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流量控制、TCP的拥塞控制、TCP的连接管理这几个方面进行解析。 一、运输层协议概述 1.进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当两台主机使用网络的核心部分的功能进行点对点通信的时候,只有位于边缘部分的主机的协议栈才有运输层,而网络核心的路由器在转发的时候只有用到下三层的功能。 image 应用进程之间的通信: 两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。 输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。 “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。 image 运输层的主要功能: 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。 运输层还要对收到的报文进行差错检测。 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。 两种不同的运输协议: 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等)

TCP协议之网络延时

拟墨画扇 提交于 2019-11-27 14:15:48
影响TCP 网络时延的因素 硬件速度 网络和服务器的负载 请求和响应报文的尺寸 客户端和服务器之间的距离 TCP 协议的技术复杂性 TCP协议产生的时延 TCP 连接建立握手; TCP 慢启动拥塞控制; 数据聚集的 Nagle 算法; 用于捎带确认的 TCP 延迟确认算法; TIME_WAIT 时延和端口耗尽。 TCP连接建立 TCP连接的建立,需要经历3个报文的交互过程,沟通相关连接参数,这个过程称为三次握手(three-way handshake)。 因此,如果在每次发送数据之前,都重新建立一次TCP连接,那么建立连接的耗时将对性能产生较大的影响(特别是在发送少量数据的情况下)。 三次握手四次挥手(参考自coolshell) 优化方法 建立长连接,多次数据的发送复用同一条连接。 TCP慢启动 如果在发送方和接收方之间存在多个路由器和速率较慢的链路,此时多个发送方一开始便向网络发送多个报文段,由于受网络传输和服务端处理能力的影响,一些中间路由器必须缓存分组,并有可能最终耗尽存储器的空间,因而更多的报文发送将使网络出现拥塞。 TCP慢启动(slow start),就是用于防止因特网的突然过载和拥塞的一种流量控制机制。 慢启动为发送方的TCP增加了一个窗口:拥塞窗口(congestion window),简称cwnd。 刚建立连接时,拥塞窗口被初始化为1个报文段。每收到一个ACK

计算法基网络-传输层

允我心安 提交于 2019-11-27 13:02:43
文章目录 UDP 和 TCP 的特点 UDP TCP TCP 的三次握手 三次握手的过程 A最后为什么还要再发一次确认? TCP 的四次挥手 TCP四次挥手的过程 为什么A在TIME-WAIT状态要等待2MSL的时间? 四次挥手的原因 TCP可靠传输的实现 TCP 滑动窗口 超时重传时间选择 选择确认SACK TCP流量控制 流量控制的定义 利用滑动窗口实现流量控制 TCP的传输效率 糊涂窗口综合症: TCP拥塞控制 概念 拥塞控制的四个算法 参考 UDP 和 TCP 的特点 UDP 用户数据报协议 UDP(User Datagram Protocol): 1.是无连接的; 2.尽最大可能交付; 3.面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部); 4.没有拥塞控制; 5.支持一对一、一对多、多对一和多对多的交互通信; 6.UDP的首部开销小。 TCP 传输控制协议 TCP(Transmission Control Protocol)是 1.面向连接的; 2.每一条 TCP 连接只能是点对点的(一对一); 3.提供可靠交付,有流量控制,拥塞控制; 4.提供全双工通信; 5.面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)。 TCP 的三次握手 三次握手的过程 上图中,A为客户端,B为服务器。 1

TCP拥塞控制

…衆ロ難τιáo~ 提交于 2019-11-27 10:59:19
TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈。TCP采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。 几个相关概念: 1. MSL    MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。 2. TTL   IP头中有一个TTL域,TTL 是 time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经 过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。 TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。 3. RTT   RTT是客户到服务器往返所花时间(round-trip time,简称RTT),TCP含有动态估算RTT的算法。TCP还持续估算一个给定连接的RTT,这是因为RTT受网络传输拥塞程序的变化而变化 4. MSS: Maximum Segment Size 最大报文段长度   为了达到最佳的传输效能

TCP拥塞控制

非 Y 不嫁゛ 提交于 2019-11-27 10:58:45
TCP拥塞控制 出现拥塞           ∑对资源的需求 > ∑可用资源 拥塞控制是防止过多的数据注入到网络中,使网络中的路由器或链路不过载,这是一个全局性的。 流量控制是点对点的通信量的控制,是端到端问题。 拥塞控制方法 在最宽泛的级别上,我们可根据网络层是否为运输层拥塞控制提供显示帮助,来区分拥塞控制方法。 端到端拥塞控制 在这个方法中,网络层没有为运输层拥塞控制提供显示支持。即使网络中存在拥塞,端系统也必须通过对网络行为的观察(如分组丢失与时延)来推断。TCP必须通过端到端的方法来解决也拥塞控制,因为IP层不会向端系统提供有关网络拥塞的反馈信息。 TCP报文段的丢失(通过超时或3次冗余确认得知)被认为是网络出现拥塞的一个迹象 ,TCP会相应地减小其窗口长度。在TCP拥塞控制的一些最新建议也会使用增加的往返时延值作为网络拥塞程度增加的指示。 网络辅助的拥塞控制 在网络辅助的拥塞控制中,网络层构件(即路由器)向发送方提供有关网络中拥塞状态的显示反馈信息。 拥塞信息从网络反馈到发送方通常有两种方式:①直接反馈信息由网络路由器发给发送方,这种通知方式常采用了一种 阻塞分组(choke packet) 的形式(含义为:“我阻塞了”)②显示拥塞通知(Explicit Congestion Notification,ECN)

TCP的拥塞控制

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

网络拥塞控制(三) TCP拥塞控制算法

元气小坏坏 提交于 2019-11-27 10:58:03
为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答( selective acknowledgement,SACK)算法,还有其他方面的大大小小的改进,成为网络研究的一个热点。 TCP 的拥塞控制主要原理依赖于一个拥塞窗口(cwnd)来控制,在之前我们还讨论过TCP还有一个对端通告的接收窗口(rwnd)用于流量控制。窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。TCP的拥塞控制算法就是要在这两者之间权衡,选取最好的cwnd值,从而使得网络吞吐量最大化且不产生拥塞。 由于需要考虑拥塞控制和流量控制两个方面的内容,因此TCP的真正的发送窗口=min(rwnd, cwnd)