您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

图解TCP、UDP,流量控制,拥塞控制,一次看懂

时间:2022-06-21 09:18:19  来源:  作者:音视频流媒体技术
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

一、TCP

  • TCP首部
  • 流量控制
  • 拥塞控制
  • 三次握手,四次挥手
  • tcp 怎样保证数据正确性?

流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度

1、TCP首部

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

  • 源端口号
  • 目标端口号
  • 32位序列号
  • 32位确认号
  • 首部长度(单位为4字节,默认为5,即20字节)
  • 保留位(6位)
  • 6个控制位(SYN、ACK、FIN、PUSH、URG、RST) SYN:同步序号位,TCP建立连接时要将这个值设为1 ACK:为1表示确认号 FIN:发送端完成位,提出断开连接的一方把FIN置为1表示要断开连接 PUSH:急迫位,缓存区将满,立刻传输速度 RST:重置位,连接断了重新连接 URG:紧急信号
  • 16位窗口大小:接收窗口大小,流量控制使用,如果窗口大小为0,可以发送窗口探测
  • 16位校验和:校验和用来做差错控制,TCP校验和的计算包括TCP首部、数据和其它填充字节。在发送TCP数据段时,由发送端计算校验和,当到达目的地时又进行一次检验和计算。如果两次校验和一致,说明数据是正确的,否则将认为数据被破坏,接收端将丢弃该数据
  • 16位紧急指针:仅在URG控制位为 1 时有效。表示紧急数据的末尾在 TCP 数据部分中的位置。通常在暂时中断通信时使用(比如输入 Ctrl + C)

2、流量控制

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

流量控制,就是让发送方的发送速率不要太快,要让接收方来得及接收

利用滑动窗口机制可以很方便地在tcp连接上实现对发送方的流量控制

TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小

  • 重传计时器
  • TCP发送方收到接收方的零窗口通知后,应启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文
  • 即使接收窗口为0,接收方也会接收:零窗口探测报文段、确认报文段、携带紧急数据的报文段

TCP发送方的发送窗口大小 = Math.min(自身拥塞窗口大小, TCP接收方的接收窗口大小)

3、拥塞控制

什么是拥塞

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

假定条件

数据是单方向发送,而另一方向只传送确认 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位

【免费分享】资料包括《Andoird音视频开发必备手册+音视频学习视频+学习文档资料包+大厂面试真题+2022最新学习路线图》等,加Q君羊788280672,领取。

图解TCP、UDP,流量控制,拥塞控制,一次看懂

部分资料截图


图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

慢开始 + 拥塞避免算法

MSS:TCP最大报文段 ssthresh:慢开始门限 cwnd:拥塞窗口 swnd:发送窗口 rtt:每次往返时间

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

快重传

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

慢开始 + 拥塞避免算法中,发送方把拥塞窗口cwnd又设置为1,并错误地启动慢开始算法,降低了传输效率

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

收到3个重复确认

  • 接收方收到失序的报文段,立即发出重复确认
  • 发送方收到3个连续的重复确认,立即重传
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

快恢复

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

慢开始 + 拥塞避免+快重传 + 快恢复结合

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4、三次握手,四次挥手

4.1 三次握手

  1. 发送端:SYN=1、seq=x
  2. 接收端:ACK=1、ack=x+1、SYN=1、seq=y
  3. 发送端:ACK=1、ack=y+1、seq=x+1

  • TCP规定:SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号
  • TCP规定:普通的确认报文段如果不携带数据,则不消耗序号
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4.2 四次挥手

  1. 发送端:FIN=1,ACK=1,seq=u,ack=v(u等于发送端已传送过的数据的最后一个字节序号+1,v等于发送端之前已收到的数据的最后一字节序号+1)
  2. 接收端:ACK=1,ack=u+1,seq=v
  3. 接收端:FIN=1,ACK=1,ack=u+1,seq=w(w:半关闭情况下,可能收到了数据)
  4. 发送端:ACK=1,ack=w+1,seq=u+1

  • TCP规定:终止位FIN等于1的报文段,即使不携带数据,也要一个消耗掉一个序号
  • MSL:最长报文段寿命,建议为2分钟

为什么要等待2MSL?

如果接收端发送FIN连接释放,发送端接收后发送ACK,如果丢失,会导致接收端超时重传,而无法进入CLOSED状态

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4.3 保活计时器

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4.4 半连接队列

服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列

4.5 三次握手能不能改成两次握手?

  • 不能
  • TCP发送连接请求,但长时间没到达,然后触发了超时重传
  • 又发送了一次,后建立连接,数据传输,并断开了连接
  • 但此时之前没达到的请求报文段突然又到了接收端服务器,接收端服务器变成了ESTABLISHED状态
  • 接收端一直在等发送端发送数据,白白浪费了主机很多资源,导致了错误
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4.6 四次挥手能不能改成三次挥手?

  • 不能
  • 接收端可能还有数据没有发送
  • 需要等待一段时间,发送完数据,才会发送FIN

4.7 SYN攻击

服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完成三次握手时分配的,所以服务器容易受到SYN洪泛攻击。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server则回复确认包,并等待Client确认,由于源地址不存在,因此Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击。

5、tcp 怎样保证数据正确性?

差错控制 发送的数据包的二进制相加然后取反,检测数据在传输过程中的任何变化,如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。 编号 + 排序 TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层 确认 + 超时重传的机制 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 流量控制

TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓存区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。

拥塞控制

当网络拥塞时,减少数据的发送。发送方有拥塞窗口,发送数据前比对接收方发过来的接收窗口,取两者的最小值---慢启动、拥塞避免、拥塞发送、快速恢复

二、UDP

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

三、TCP/UDP对比

TCP/IP协议架构

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

对比

图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

1、是否面向连接

  • UDP:无连接
  • TCP:面向连接(三次握手,四次挥手)
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

2、是否支持广播和多播

  • UDP:支持一对一,一对多,多对一和多对多交互通信
  • TCP:只能一对一通信
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

3、对应用层报文的处理

  • UDP:面向报文(对应用层交付的报文直接打包)
  • TCP:面向字节流(是tcp实现可靠传输,流量控制,拥塞控制的基础)
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

4、是否提供可靠传输

  • UDP:向上提供无连接不可靠服务
  • UDP:适用于实时应用(IP电话、视频会议等)
  • TCP:向上提供面向连接的可靠服务
  • TCP:适用于要求可靠传输的应用,例如文件传输
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

5、首部开销

  • UDP:8个字节
  • TCP:最小20字节,最大60字节
图解TCP、UDP,流量控制,拥塞控制,一次看懂

 

【免费】
FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频教程-腾讯课堂



Tags:TCP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01  Search: TCP  点击:(62)  评论:(0)  加入收藏
从零开始学习Python网络编程:探索TCP协议与实例演示!
Python 是一种高级的编程语言,拥有广泛的网络编程库。这些库允许 Python 开发者能够使用 TCP 和其他网络协议进行通信。在本文中,我们将探讨 TCP 协议,并通过一个简单的例子来...【详细内容】
2023-11-23  Search: TCP  点击:(220)  评论:(0)  加入收藏
TCP分段技术:克服IP和MAC层内存限制的关键
IP和MAC层在发送数据包时都面临内存受限的问题,这就导致它们对消息的长度有所限制。为了克服这个限制,TCP在将数据传递给IP层之前,需要将可变长度的字节打包成多个段,确保每个段...【详细内容】
2023-11-22  Search: TCP  点击:(245)  评论:(0)  加入收藏
TCP发送窗口、接收窗口以及其工作原理
可用窗口的计算是理解TCP滑动窗口的关键,要了解可用窗口的计算,我们需要理解三个指针——SND.UNA、SND.NXT和RCV.NXT。上面的图表是从发送方的角度拍摄的快照。我们...【详细内容】
2023-11-13  Search: TCP  点击:(357)  评论:(0)  加入收藏
Wireshark抓包分析TCP协议:三次握手和四次挥手
前言 面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢? 其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议...【详细内容】
2023-11-01  Search: TCP  点击:(242)  评论:(0)  加入收藏
一台服务器​最大并发 TCP 连接数多少
以一道运维面试题开局:你接触过的单机最大并发数是多少?操作系统最大文件打开数是65535,服务器又是怎么做到支持10w并发的?你认为当前正常配置的服务器物理机最大并发数可以到多...【详细内容】
2023-10-04  Search: TCP  点击:(71)  评论:(0)  加入收藏
C# 如何判断某个 TCP 端口是否被占用?
在C#中使用TcpClient或者其他通用的方式建立的Socket,该如何判断这个端口是否被占用?比如下面的代码:TcpClient tc = new TcpClient(ip,port);在C#中,可以使用 System.Net.Netwo...【详细内容】
2023-09-26  Search: TCP  点击:(62)  评论:(0)  加入收藏
网络层协议详解:理解TCP/IP、HTTP、FTP等协议的功能与工作原理
在计算机网络中,网络层是计算机通讯的重要组成部分,它负责处理数据包的传输和路由,是实现网络通信的必不可少的组件之一。网络层引入了三个协议:IP协议、ARP协议和路由协议。IP...【详细内容】
2023-09-06  Search: TCP  点击:(253)  评论:(0)  加入收藏
TCP与UDP协议:网络通信中的两大重要角色
引言在这个像点点滴滴组成的虚拟宇宙中,网络通信就像是我们的超级高速公路系统,让信息在世界间飞速穿梭。想象一下,如果网络是一条繁忙的交通道路,那么协议就是交通信号灯,确保数...【详细内容】
2023-09-01  Search: TCP  点击:(231)  评论:(0)  加入收藏
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
一、TCP TCP首部 流量控制 拥塞控制 三次握手,四次挥手 tcp 怎样保证数据正确性?流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度1、TCP首部源端...【详细内容】
2023-07-18  Search: TCP  点击:(254)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(18)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(44)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(42)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(73)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(62)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(44)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(162)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(87)  评论:(0)  加入收藏
站内最新
站内热门
站内头条