当前位置:网站首页>TCP 三次握手和四次挥手机制,TCP为什么要三次握手和四次挥手,TCP 连接建立失败处理机制
TCP 三次握手和四次挥手机制,TCP为什么要三次握手和四次挥手,TCP 连接建立失败处理机制
2022-07-03 02:47:00 【十九(一拖再拖)】
TCP 三次握手和四次挥手机制,TCP为什么要三次握手和四次挥手,TCP 连接建立失败处理机制
文章目录
1:TCP三次握手机制

- 客户端向服务端发送
SYN包:
标志位:SYN
序号:Seq=x(随机值) - 服务端向客户端发送
SYNACK报文:
标志位:SYN ACK
序号:Seq=y
确认号:Ack=x+1 - 客户端向服务端发送
ACK报文
标志位:ACK
序号:Seq=x+1
确认号:Ack=y+1
2:TCP四次挥手机制

- 客户端向服务端发送断开报文:
标志位:FIN
序号:Seq=u(随机值) - 服务端向客户端发送报文:
标志位:ACK
序号:Seq=v
确认号:Ack=u+1 - 服务端将待传数据返回给客户端,待传数据发送完毕后再次向客户端发送TCP报文:
标志位:FIN ACK
序号:Seq=w
确认号:Ack=u+1 - 客户端向服务端发送报文:
标志位:ACK
序号:Seq=u+1
确认号:Ack=w+1
3:TCP握手超时处理机制
3.1:第一次握手失败
客户端向服务端发送 SYN 消息以建立连接。如果在一段时间内没有收到服务端的确认消息,它会等待一段时间继续发送 SYN 消息。如果它仍然没有收到服务器确认消息,会继续重复上述动作,直到发送次数超过最大重传次数。
3.2:第二次握手失败
服务端向客户端发送 SYN ACK 报文,服务端此时将阻塞等待客户端连接,等待客户端传来的 ACK 报文。如果客户端未收到该确认报文,则客户端会重新向服务端发送 SYN 报文,执行类似于 第一次握手失败 的处理动作。
3.3:第三次握手失败
客户端收到 SYN ACK 确认消息后,向服务端发送 ACK 报文。如果服务端长时间没有收到客户端的 ACK 消息,它会继续向客户端发送 SYN ACK 消息,重复上述动作,直到超过最大重传次数。
4:TCP为什么要三次握手
TCP的两次握手只能让客户端知道自己发送的数据可以被服务器接收,但是服务端无法判断客户端是否可以接收到自己的数据。

从上图中可以得知,仅仅一个客户端就会导致服务端开启多个端口,造成服务端开销的浪费。
5:TCP为什么要四次挥手

TCP 四次挥手保证了服务端在已经传输完所有数据的情况下断开连接。
边栏推荐
- js根据树结构查找某个节点的下面的所有父节点或者子节点
- Can netstat still play like this?
- Javescript 0.1 + 0.2 = = 0.3 problem
- cvpr2022去雨去雾
- Mathematical statistics -- Sampling and sampling distribution
- Add automatic model generation function to hade
- How to implement append in tensor
- 从C到Capable-----利用指针作为函数参数求字符串是否为回文字符
- Hcip137-147 title + analysis
- Why choose a frame? What frame to choose
猜你喜欢

面试项目技术栈总结

Mathematical statistics -- Sampling and sampling distribution

From C to capable -- use the pointer as a function parameter to find out whether the string is a palindrome character
![[principles of multithreading and high concurrency: 1_cpu multi-level cache model]](/img/c7/6b5ab4ff7379bfccff7cdbb358ff8f.jpg)
[principles of multithreading and high concurrency: 1_cpu multi-level cache model]

SQL statement
![[hcia]no.15 communication between VLANs](/img/59/a467c5920cbccb72040f39f719d701.jpg)
[hcia]no.15 communication between VLANs

xiaodi-笔记

Error invalid bound statement (not found): com ruoyi. stock. mapper. StockDetailMapper. XXXX solution
![[Hcia]No.15 Vlan间通信](/img/59/a467c5920cbccb72040f39f719d701.jpg)
[Hcia]No.15 Vlan间通信

Xiaodi notes
随机推荐
Strategy application of Dameng database
Gbase 8C system table PG_ cast
Le processus de connexion mysql avec docker
leetcode540
[shutter] setup of shutter development environment (supplement the latest information | the latest installation tutorial on August 25, 2021)
How to return ordered keys after counter counts the quantity
Error invalid bound statement (not found): com ruoyi. stock. mapper. StockDetailMapper. XXXX solution
Andwhere multiple or query ORM conditions in yii2
random shuffle注意
What does it mean when lambda is not entered?
Monitoring and management of JVM
【翻译】后台项目加入了CNCF孵化器
Use cve-2021-43893 to delete files on the domain controller
cvpr2022去雨去雾
【富瀚6630编码存录像,用rtsp服务器及时间戳同步实现vlc观看录像】
Your family must be very poor if you fight like this!
用docker 連接mysql的過程
sql server数据库添加 mdf数据库文件,遇到的报错
Error when installing MySQL in Linux: starting mysql The server quit without updating PID file ([FAILED]al/mysql/data/l.pid
vfork执行时出现Segmentation fault