当前位置:网站首页>TCP与UDP的区别,以及TCP的三次握手和TCP的四次挥手
TCP与UDP的区别,以及TCP的三次握手和TCP的四次挥手
2022-06-12 15:15:00 【Stars_min】
一、 TCP与UDP的区别
1. 相同点
都是属于传输层的协议
2. 不同点
| TCP | UDP | |
|---|---|---|
| 1 | 基于连接,可靠性强 | 基于无连接,可靠性较低 |
| 2 | 需要三次握手、重新确认等过程,实时性很差,同时过程复杂,易于被攻击 | 无连接,因而实时性很强,稍微安全点 |
| 3 | 在传输相同大小的数据时,报头20字节,而且tcp无丢包,开销很大 | 在传输相同大小的数据时,udp首部开销只有8个字节,而且udp经常丢包,开销很小 |
| 4 | 每条tcp连接只能是点到点的 | udp支持一对一、一对多、多对一、多对多的交互通信 |
| 5 | 名叫传输控制协议,传输效率低,可靠性强 | 名叫用户数据报协议,适用于传输可靠性要求不高,数据量小的数据 |
二、 TCP的三次握手
TCP有些名词需要解释一下,以便理解
1. 名词解释
SYN: 同步序列号,用来发起一个连接,SYN=1的报文不能携带数据,但是消耗掉一个序列
ACK: 确认标识,当ACK=1时确认字段才有效
seq: 序列号,即数据包本身的序列号,为连接以后传输数据使用
ack: 对收到数据包的确认,值是等待接受的数据包的序列号(就是期望对方继续发送的那个数据包的序列号)
2. 握手过程


第一次: 客户端C向服务端S发送连接请求报文,该报文首部中的SYN = 1,ACK = 0,随机选取一个序列号seq = i 作为初始序列号,
此时客户端进入SYN_SEDN同步已发送状态。
第二次: 服务端收到客户端的连接请求报文,如果同意建立连接,则发送确认报文,确认报文首部中的SYN = 1 , ACK = 1 ,
ack = i + 1 ,seq = j (服务端的初始序列号),此时,服务器进入SYN_RCVD同步收到状态。
第三次: 客户端收到服务端的确认报文后,会向服务器发送确认报文,告诉服务器收到它的确认报文并准备建立连接,确认报文首部中SYN = 0、
ACK = 1、ack = j + 1、 seq = i + 1。服务端收到客户端确认报文,此时,服务端进入ESTABLISHED已建立连接状态。
3. TCP为什么采用三次握手,而不是两次或四次握手
TCP三次握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小信息
为什么采用三次握手: 为了防止失效的请求报文段被服务端接受,从而产生错误。
三、 TCP的四次挥手(释放)


一方主动关闭,另一方被动关闭
第一次:客户端C发送一个FIN,用来关闭客户端C到服务端S的数据传送,客户端C进入FIN-WAIT-1状态
第二次:服务端S收到FIN后,发送一个ACK给客户端C,确认序列号为收到序列号+1,服务端S进入CLOSE-WAIT
第三次:服务端S发送一个FIN,用来关闭服务端S到客户端C的数据传送,服务端S进入LAST-ACK
第四次:客户端C收到FIN后,客户端C进入TIME-WAIT状态,接着发送一个ACK给服务端S,
确认序列号为收到序列号+1,服务端S进入CLOSE状态,完成第四次挥手。
边栏推荐
- 简单的爬虫框架:解析51job页面岗位信息
- Self induction of exception handling
- 学习是一件逆人性的事情(成为高手的内功心法)
- Left aligned, right aligned, random number, goto, compare output bool
- Tensorrt based in-depth learning model deployment practice tutorial!
- Simple crawler framework: parsing 51job page position information
- Some useful websites
- [LDA] basic knowledge notes - mainly AE and VAE
- C string
- Pointer related concepts
猜你喜欢
随机推荐
ROS中tf学习笔记
Ngork implements intranet penetration -- free
应势而变,2022年下半场的升级之路
How to add WWW to the domain name
Change according to the situation, the road to promotion in the second half of 2022
Error 1105: message:\“raft entry is too large
Deepin20.6 RTX3080 安装显卡驱动510.60.02、CUDA11.6、PyTorch1.11
Singleton mode instance
[SPARK][CORE] 面试问题之什么是 external shuffle service?
odom坐标系的理解
TF learning notes in ROS
Error 1105: message:\“raft entry is too large
Particle filter learning record
Tensorrt based in-depth learning model deployment practice tutorial!
leetcode每日一题-公平的糖果棒交换
产业端:618的新战场
Phpstudy indicates that the hosts file may not exist or be blocked from being opened. How to resolve the failure of synchronizing hosts
Seaborn的简述
3D reconstruction system | L3 incremental motion recovery structure (incremental SFM)
Deepin20.6 RTX3080 安裝顯卡驅動510.60.02、CUDA11.6、PyTorch1.11


![[LDA] basic knowledge notes - mainly AE and VAE](/img/1c/ccc073cac79b139becd5de0b9a91b1.png)






