流量控制

TCP协议

懵懂的女人 提交于 2019-11-28 20:16:20
本文内容如下: 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个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接

tcp/udp

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

【计算机基础】计算机网络

为君一笑 提交于 2019-11-28 14:51:42
一、从输入URL到页面返回的过程 DNS 通过访问的域名找到对应的IP地址; 向服务器发送一个request; 服务器接受到request,进行处理并返回response; 页面下载相关资源(如图片、CSS样式表、JS文件等)并显示response内容。 二、Http与Https 1、HTTP和HTTPS的基本概念 HTTP(HyperText Transfer Protocol,超文本传输协议):是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少; HTTPS(Secure Hypertext Transfer Protocol,安全超文本传输协议):是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 2、HTTP与HTTPS的区别 https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用; http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议; http和https使用的是完全不同的连接方式

简述TCP的流量控制与拥塞控制

ぃ、小莉子 提交于 2019-11-28 12:25:32
1. TCP 流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。 考虑一种特殊的情况,接收方向发送方发送了零窗口的报文段后,接收方又有了一些存储空间。与接收方向发送方发送了非零窗口的报文段。然而这个报文段在传送过程中丢失了。发送方的发送窗口一直为零导致死锁。 为了解决这个问题,每个连接设置有持续计时器,只要连接的一方收到零窗口通知,就启动持续计数器。若持续计数器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段给出现在的窗口值。如果窗口仍然为零,那么收到这个报文段的一方重置持续计数器,否则,那么死锁的僵局就可以打破。 2.TCP的拥塞控制 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路过载。 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收(端对端的通信),而拥塞控制是为了降低整个网络的拥塞程度(全局性)。 2.1TCP的拥塞控制方法 TCP进行拥塞控制的算法有四种,即慢开始,拥塞避免,快重传,快恢复。 发送方让自己的发送窗口等于拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度

TCP如何保证可靠传输(转)

梦想的初衷 提交于 2019-11-28 12:15:58
TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的。 确保传输可靠性的方式 TCP协议保证数据传输可靠性的方式主要有 : 校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制 校验和 计算方式:在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。 发送方:在发送数据之前计算检验和,并进行校验和的填充。 接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。 注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。 确认应答与序列号 序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。 确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。   序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。 超时重传   在进行TCP传输时,由于确认应答与序列号机制,也就是说发送方发送一部分数据后

TCP/IP流量控制

独自空忆成欢 提交于 2019-11-28 10:24:25
定义: 流量控制往往指的是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接受。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 原理:设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwnd 表示 receiver window) 。因此,发送方的发送窗口不能超过接收方给出的接收窗口的数值。请注意,TCP的窗口单位是字节,不是报文段。TCP连接建立时的窗口协商过程在图中没有 显示出来。再设每一个报文段为100字节长,而数据报文段序号的初始值设为1。大写ACK表示首部中的确认位ACK,小写ack表示确认字段的值ack。 从图中可以看出,B进行了三次流量控制。第一次把窗口减少到 rwnd = 300 ,第二次又减到了 rwnd = 100 ,最后减到 rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。B向A发送的三个报文段都设置了 ACK = 1 ,只有在ACK=1时确认号字段才有意义。TCP为每一个连接设有一个持续 计时器 (persistence timer)。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口控测报文段(携1字节的数据)

计算机网络面试题3

倖福魔咒の 提交于 2019-11-28 08:30:32
面试中网络方面的知识被问到的概率很大,尤其是互联网公司,要熟悉osi七层模型,其中TCP/IP方面的知识尤其重要。如果自己平时有Socket编程的经验对面试也是很有帮助的。网络方面有空可以看看TCP/IP详解卷一和UNIX网络编程。以下总结了一些面试中常问的问题: 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。 client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

计算机网络之传输层

为君一笑 提交于 2019-11-28 06:05:25
计算机网络之传输层 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 (向两个主机中进程间的通信提供通用数据传输服务) 主要协议: TCP 、 UDP 。 典型设备:适配器,转发器,网桥,以太网交换机 UDP 和 TCP 的特点 UDP 首部格式 TCP 首部格式 TCP 的三次握手 TCP 的四次挥手 TCP 可靠传输 TCP 滑动窗口 TCP 流量控制 TCP 拥塞控制 1. 慢开始与拥塞避免 2. 快重传与快恢复 UDP 和 TCP 的特点 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。 区别: TCP是面向连接的,UDP是面向无连接的 TCP是可靠的

计算机网络习题(二)

≡放荡痞女 提交于 2019-11-28 05:38:41
1.有关虚电路和数据报,正确的是(B)。 A. 数据报方式中,每个分组一定走同样的路到达目的地 B. 虚电路方式中,分组首部中存放虚电路号 C. 数据报方式中,需要建立连接 D. 虚电路方式中,不需要建立连接 2.在网络拓扑中,每个结点都通过通信线路与一个中心结点相连,这种拓扑是(B)。 A. 总线型B.星型C. 树型D. 网状型 3.在网络拓扑中,结点之间的连接没有规律,存在冗余路径,这种拓扑是(D)。 A. 总线型B.星型C. 树型D. 网状型 4.( A)是距离传输介质最近的层。 A.物理层B.数据链路层C.网络层D.运输层 5.当数据包从低层向高层传送时,报文首部会(B )。 A.添加B.减去C.重安排D.修改 6.当数据包从高层向低层传送时,报文首部会(A )。 A.添加B.减去C.重安排D.修改 7.在OSI 参考模型中,第2 层位于物理层和( A )之间。 A.网络层B.数据链路层C.传输层D.表示层 8.当数据从主机A 到主机B 时,A 中第3 层所添加的首部被B 中第(A)层读取。 A.3 B.2 C.1 D.4 9.物理层关心物理介质上( D)的传输。 A.程序B.对话C.协议D.比特 10.关于网络体系结构,正确的是(C )。 A.各层之间相互独立,没有联系 B.相邻层实体之间通信要遵循共同的协议 C.对等层实体之间通信要遵循共同的协议 D

TCP

送分小仙女□ 提交于 2019-11-28 05:38:37
面向连接的可靠数据传输协议 首部20字节,主要包括序号(32bit),确认号,源端口,目的端口号(16bit) 序号+累积确认+重传 流量控制:发送方维护接受窗口(接收方缓存空间大小) 四次挥手:全双工,一方请求断开连接,不代表另一方发送数据完毕。fin_wait1---(接收ack)--->fin_wait2---(接收fin,发送ack)--->timewait---()--->closed,time_wait为了给对方重发fin包的时间,且确保该次连接产生的报文段全部消失。 拥塞控制: 1. 慢启动:cwnd初始值为1,每rtt时间翻倍,直到>=ssthresh,进入拥塞避免。或发生一个由超时指示的丢包事件时,ssthresh被置为cwnm/2,cwnd被置为1,并重新开始慢启动。 2. 拥塞避免:每rtt时间cwnd增加1。 3. 快速重传+快速恢复:收到3个冗余的ack将重发未确认的报文段,然后进入快速恢复阶段。 快速恢复: step1: if(dupacks>=3){ ssthresh=max(2,cwnd/2); cwnd=ssthresh+3; } step2: 重新发送丢失的分组 step3: 此后每收到一次重复的ack,cwnd++。 step4: 收到非重复ack,置cwnd为ssthresh,进入拥塞避免阶段。    来源: https://www