流量控制

TCP滑动窗口

橙三吉。 提交于 2019-12-17 10:50:53
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。 一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。在引入一个例子来说这个协议之前,我觉得很有必要先了解以下前提: -1. TCP协议的两端分别为发送者A和接收者B,由于是全双工协议,因此A和B应该分别维护着一个独立的发送缓冲区和接收缓冲区,由于对等性(A发B收和B发A收),我们以A发送B接收的情况作为例子; -2. 发送窗口是发送缓存中的一部分,是可以被TCP协议发送的那部分,其实应用层需要发送的所有数据都被放进了发送者的发送缓冲区; -3. 发送窗口中相关的有四个概念:已发送并收到确认的数据(不再发送窗口和发送缓冲区之内)、已发送但未收到确认的数据(位于发送窗口之中)、允许发送但尚未发送的数据以及发送窗口外发送缓冲区内暂时不允许发送的数据; -4. 每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,将新的数据包含到窗口中准备发送; TCP建立连接的初始

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

断了今生、忘了曾经 提交于 2019-12-17 04:29:23
文章目录 传输层的功能 传输层的端口 传输层协议UDP和TCP UDP的主要特点 传输控制协议TCP概述 传输层协议和应用层协议之间的关系 TCP可靠传输的实现 连续ARQ协议 累计确认 TCP报文段首部格式 TCP滑动窗口技术实现可靠传输 TCP的流量控制 TCP的拥塞控制 拥塞控制四种算法 TCP的运输连接管理 TCP的连接 SYN洪泛攻击 TCP的连接释放 传输层的功能 为相互通信的应用进程提供了逻辑通信。 传输层实现了程序到程序 网络层实现了地址到地址 传输层的主要功能: 传输层为 应用进程之间 提供 端到端 的逻辑通信(但网络层是为 主机之间 提供逻辑通信) 传输层还要对收到的报文进行差错检测 传输层提供面向连接和无连接的服务。 传输层的端口 在网络层用 协议号 标识使用TCP/UDP TCP 6 UDP 17 IGMP 1 在传输层用端口号标识区分上一层 TCP的端口 端口用一个16位端口号进行标识 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程,。在因特网中不同计算机的相同端口号是没有联系的。 端口的取值范围是0~65535 熟知的端口0~1023 登记端口 1024~49151 客户端口号 49152~65535 传输层协议UDP和TCP 在TCP/IP协议栈,传输层有两个协议TCP/UDP TCP (Transmission Control

TCP的流量控制和拥塞控制

那年仲夏 提交于 2019-12-16 21:18:20
一、TCP的流量控制 1.概述 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。 如图所示,说明了利用可变窗口大小进行流量控制。设主机A向主机B发送数据。双方确定的窗口值是400.再设每一个报文段为100字节长,序号的初始值为seq=1,图中的箭头上面大写ACK,表示首部中的却认为为ACK,小写ack表示确认字段的值。 接收方的主机B进行了三次流量控制。第一次把窗口设置为rwind=300,第二次减小到rwind=100最后减到rwind=0,即不允许发送方再发送过数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。 假如,B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间。于是B向A发送了rwind=400的报文段,然而这个报文段在传送中丢失了。A一直等待收到B发送的非零窗口的通知,而B也一直等待A发送的数据。这样就死锁了。为了解决这种死锁状态,TCP为每个连接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。 2

图解拥塞控制,这应该是把拥塞控制讲的最通俗易懂的文章了

时光总嘲笑我的痴心妄想 提交于 2019-12-16 16:35:18
大家可能都听说过 拥塞控制 和 流量控制 ,想必也有一些人可能还分不清拥塞控制和流量控制,进而把他们当作一回事。拥塞控制和流量控制虽然采取的动作很相似,但拥塞控制与网络的拥堵情况相关联,而流量控制与接收方的缓存状态相关联。 也就是说,拥塞控制和流量控制是针对完全不同的问题而采取的措施。今天这篇文章,我们先来讲讲拥塞控制。 一、为何要进行拥塞控制? 为了方便,我们假设主机A给主机B传输数据。 我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。 然而实际情况有可能此时有太多主机正在使用信道资源,导致 网络拥塞 了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误认为是发生了丢包情况,会重新传输这个数据包。 结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,我们需要进行 拥塞控制 。 二、如何知道网络的拥塞情况? A 与 B 建立连接之后,就可以向B发送数据了,然而这个时候 A 并不知道此时的网络拥塞情况如何,也就是说,A 不知道一次性连续发送多少个数据包好,我们也把 A 一次性连续发送多少个数据包称之为 拥塞窗口 ,用 N 代表此时拥塞窗口的大小吧。 为了探测网络的拥塞情况,我们可以采取以下 两种策略 : 1、先发送一个数据包试探下,如果该数据包没有发生超时事件

图解拥塞控制,这应该是把拥塞控制讲的最通俗易懂的文章了

落花浮王杯 提交于 2019-12-16 13:47:57
大家可能都听说过 拥塞控制 和 流量控制 ,想必也有一些人可能还分不清拥塞控制和流量控制,进而把他们当作一回事。拥塞控制和流量控制虽然采取的动作很相似,但拥塞控制与网络的拥堵情况相关联,而流量控制与接收方的缓存状态相关联。 也就是说,拥塞控制和流量控制是针对完全不同的问题而采取的措施。今天这篇文章,我们先来讲讲拥塞控制。 一、为何要进行拥塞控制? 为了方便,我们假设主机A给主机B传输数据。 我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。 然而实际情况有可能此时有太多主机正在使用信道资源,导致 网络拥塞 了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误认为是发生了丢包情况,会重新传输这个数据包。 结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,我们需要进行 拥塞控制 。 二、如何知道网络的拥塞情况? A 与 B 建立连接之后,就可以向B发送数据了,然而这个时候 A 并不知道此时的网络拥塞情况如何,也就是说,A 不知道一次性连续发送多少个数据包好,我们也把 A 一次性连续发送多少个数据包称之为 拥塞窗口 ,用 N 代表此时拥塞窗口的大小吧。 为了探测网络的拥塞情况,我们可以采取以下 两种策略 : 1、先发送一个数据包试探下,如果该数据包没有发生超时事件

什么是拥塞控制

随声附和 提交于 2019-12-16 09:03:13
什么是拥塞控制,这应该是把拥塞控制讲的最好的文章了 原创 帅地 发布于2019-12-15 18:34:36 阅读数 65 收藏 展开 大家可能都听说过 拥塞控制 和 流量控制 ,想必也有一些人可能还分不清拥塞控制和流量控制,进而把他们当作一回事。拥塞控制和流量控制虽然采取的动作很相似,但拥塞控制与网络的拥堵情况相关联,而流量控制与接收方的缓存状态相关联。 也就是说,拥塞控制和流量控制是针对完全不同的问题而采取的措施。今天这篇文章,我们先来讲讲拥塞控制。 一、为何要进行拥塞控制? 为了方便,我们假设主机A给主机B传输数据。 我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。 然而实际情况有可能此时有太多主机正在使用信道资源,导致 网络拥塞 了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误认为是发生了丢包情况,会重新传输这个数据包。 结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,我们需要进行 拥塞控制 。 二、如何知道网络的拥塞情况? A 与 B 建立连接之后,就可以向B发送数据了,然而这个时候 A 并不知道此时的网络拥塞情况如何,也就是说,A 不知道一次性连续发送多少个数据包好,我们也把 A 一次性连续发送多少个数据包称之为 拥塞窗口 ,用 N

浅谈QOS服务访问质量

为君一笑 提交于 2019-12-16 00:10:34
随着网络的发展,互联网流量迅速增加,网络产生拥塞,延时增加,有时还会造成丢包,导致业务质量下降。当网络出现拥塞时,如何保证重要数据的带宽和实时性数据能够快速转发呢? QOS应用需求 1.QOS概述 随着网络的高速发展,接入网络的用户越来越多,网络提供的服务也越来越多。网络普及,业务多样化,使得网络流量迅速增大,导致网络带宽不能满足网络的需求,这时就出现了网络拥塞现象。 由于网络拥塞导致报文产生不能预期的传达,延迟抖动,丢包等现象,将造成业务质量的下降甚至不可使用。为了应对网络拥塞,最直接的方式就是扩大网络带宽,但是由于技术或经济等方面的限制,有时不能通过增加带宽的方法来解决,这时就需要一种技术能够在有限的带宽上保证报文的带宽以免延迟,丢包,这种技术就是QOS技术。 2.网络拥塞 1)网络拥塞的产生 数据从高速端口进入设备,从低速端口转发出去。 流量汇聚,流量由多个端口进入设备,从一个端口转发出去,并且进入设备端口的速率之和大于转发接口的速率。 2)网络拥塞的影响 当网络出现拥塞时,可能对网络造成以下一些影响 报文传输延迟,延迟抖动和丢包率增加 由于过高的延迟和丢包导致报文重传,增加网络负担。 由于网络拥塞,报文重传导致网络的有效吞吐量降低。 3)网络拥塞的解决方法 在无法提高网络带宽的情况下,解决网络拥塞有效的方法是合理利用网络带宽,在网络发生拥塞时

tcp流量控制和拥塞控制的四个算法

本秂侑毒 提交于 2019-12-15 23:54:15
流量控制概念 拥塞控制 慢开始(Slow-Start)和拥塞避免(Congestion Avoidance)结合 拥塞窗口 cwnd ssthresh 快重传(Fast Retransmit)和快恢复(Fast Recovery)结合 3个以上的重复ACK https://blog.csdn.net/seu_calvin/article/details/53198282 来源: 51CTO 作者: WDPQW 链接: https://blog.51cto.com/13747009/2167313

TCP和UDP的区别?

随声附和 提交于 2019-12-13 10:41:33
(基于连接 vs 无连接)tcp是面向连接的(三次握手;四次挥手) ; udp不是面向连接的。 (重量级vs轻量级) tcp是一个重量级的协议;udp则是轻量级的协议。 一个tcp数据报的报头大小最少20字节,udp数据报的包头固定8个字节。 (可靠性)tcp交付保证:如果消息在传输中丢失,那么它将重发; udp没有交付保证,一个数据包在运输过程中可能丢失。 (有序性)消息到达网络的另一端可能是无序的, tcp协议将为你拍好序 。Udp不提供任何有序性的保证。 (速度)tcp慢,适合传输大量数据; udp快,适合传输少量数据。 (流量控制和拥塞控制)TCP有流量控制和拥塞控制, udp没有。 tcp面向字节流, udp面向报文。 tcp只能单播,不能发送广播和组播; udp可以广播和组播。 Tcp应用: 邮件传输。 udp应用: qq聊天、qq视频。 流量控制和拥塞控制: 流量控制:就是让发送方发送速率不要太快,要让接收方来的及接收。 拥塞控制: 防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。 拥塞控制所要做的都有一个 前提:网络能够承受现有的网络负荷。 拥塞控制是一个 全局性的过程 ,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。 来源: https://www.cnblogs.com/Rivend/p/12033361.html

网络拥塞控制介绍

女生的网名这么多〃 提交于 2019-12-11 23:16:12
原理介绍 Linux操作系统中的流量控制器 TC (Traffic Control)用于Linux内核的流量控制,它利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。TC模块实现流量控制功能使用的队列规定分为两类,一类是无类队列规定, 另一类是分类队列规定。 无类队列规定相对简单,而分类队列规定则引出了分类和过滤器等概念,使其流量控制功能增强。 无类队列规定 是对进入网络设备(网卡) 的数据流不加区分统一对待的队列规定。 使用无类队列规定形成的队列能够 接受数据包以及重新编排、延迟或丢弃数据包。这类队列规 定形成的队列可以对整个网络设备( 网卡) 的流量进行整形, 但不能细分各种情况。 常用的无类队列规定主要有pfifo _fast (先进现出) 、TBF ( 令牌桶过滤器) 、SFQ(随机公平队列) 、ID (前 向随机丢包)等等。这类队列规定使用的流量整形手段主要 是排序、限速和丢包。 分类队列规定 是对进入网络设备的数据包根据不同的需求以分类的方式区分对待的队列规定。 数据包进入一个分类的队列后, 它就需要被送到某一个类中, 也就是说需要对数据包做分类处理。对数据包进行分类的工具是过滤器,过滤器会返回一个决定,队列规定就根据这个决定把数据包送入相应的类进行排队。 每个子类都可以再次使用它们的过滤器进行进一步的分类