TCP和UDP的联系和区别
1、两者的区别
TCP | UDP | |
连接方式 | 通过三次握手建立连接,四次挥手接除连接 | 发送数据之前不需要建立连接 |
可靠性 | 通过TCP连接传送的数据,TCP通过超时重传、 数据校验等方式来确保数据无差错,不丢失,不重复,且按序到达 | 由于无需连接的原因,将会以最大速度进行传输,但不保证可靠交付,也就是会出现丢失、重复等等问题 |
传输方式 | 面向字节流,实际上是TCP把数据看成一连串无结构的字节流,由于连接的问题,当网络出现波动时,连接可能出现响应问题 | UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。 |
连接数 | TCP连接只能是点到点的 | 不建立连接,所以可以支持一对一,一对多,多对一和多对多的交互通信,也就是可以同时接受多个人的包 |
首部大小 | TCP需要建立连接,所以首部较大有20字节 | UDP精简一些,只有8个字节 |
2、TCP建立连接和断开连接的方式
2.1、TCP三次握手
三次握手即TCP确定连接可靠的连接方式
- 第一次握手:小明给小红打电话,拨号过去
- 第二次握手:小红发现小明给自己打了电话,接通了电话
- 第三次握手:接通信息传回小明手机,小明发现电话接通了
经过三次握手之后,小红和小明都能知道电话已经接通了这件事,TCP连接已经搭建好了,所以双方就可以进行信息的通讯了
2.2、TCP四次挥手
四次挥手是为了确认连接断开的方式
- 第一次挥手:小明要做作业准备挂电话,小明说:“小红,我准备做作业了”
- 第二次挥手:小红听到小明想挂电话的意图,说:“好的”
- 第三次挥手:小红说完好的之后,说:“那我先挂了哦”,然后小红挂掉了电话
- 第四次挥手:小明听到小红的确认,也说:“我挂了”
经过四次挥手阶段,小红小明都知道对方知道了自己想挂电话,双方通讯能够正常关闭
3、TCP如何保证自己的连接可靠性
- 数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;
- 到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认包;
- 超时重发:发送方在发送分片后计时,若超时却没有收到相应的确认包,将会重发对应的分片;
- 滑动窗口:TCP连接双方的接收缓冲空间大小都固定,接收端只能接受缓冲区能接纳的数据。
- 失序处理:TCP的接收端需要重新排序接收到的数据。
- 重复处理:如果传输的TCP分片出现重复,TCP的接收端需要丢弃重复的数据。
- 数据校验:TCP通过保持它首部和数据的检验和来检测数据在传输过程中的任何变化。
4、TCP和UDP的使用场景
4.1、TCP的使用场景
鉴于TCP的可靠性,在所有需要通讯稳定性和安全性的场景都可以使用TCP
4.2、UDP的使用场景
鉴于UDP的无连接通讯,可以在任何时间发送数据,所有一般在即时通讯的场景使用
5、两者的联系
两者都是TCP/IP协议簇中传输层中的重要协议,均用于处理数据包,类似于运输信息的货车
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端