TCP为什么需要3次握手?

一、3次握手过程

客户端向服务端发送一个表示建立连接的SYN报文段,服务端从IP数据报中提取出TCP SYN报文段,为该TCP连接分配需要的缓存和变量,并向客户端发送表示允许连接的报文段ACK。客户端在收到ACK报文段之后,也要给该连接分配缓存和变量,客户端向服务器再发送一个报文段ACK,表示对允许连接的报文段进行了确认。

自此完成一次TCP连接。

二、3次握手的必要性

1.确认双方的发送和接收能力:通过3次握手,客户端和服务器可以确认彼此都具备发送和接收数据的能力。这是建立可靠连接的基础。

2.同步初始序列号:TCP协议通过序列号来标识发送的数据包,确保数据的顺序性和完整性。在3次握手过程中,双方会交换初始序列号,以便后续的数据传输能够正确地进行。

3.避免已失效的连接请求报文段突然又传送到了服务端:这种情况可能发生在网络拥堵或者延迟较大的情况下。通过3次握手,服务端可以确认客户端的请求是有效的,而不是一个过时的请求。

第3次握手可以避免由于客户端延迟的连接请求,使得服务端无故再次建立连接。


致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。

若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢。您的支持是我们为您提供帮助的最大动力。

相关推荐
AI风老师15 分钟前
通信网络基础概念
开发语言·网络·php
白露与泡影15 分钟前
springboot + nacos + k8s 优雅停机
spring boot·后端·kubernetes
菜鸟谢33 分钟前
windows xp 下载 sp0 sp1 sp2 sp3 sp4
后端
AirMan35 分钟前
你真的懂 MySQL 的一致性读和当前读的区别吗?
后端·面试
David爱编程41 分钟前
容器性能优化实战指南——防止“吃爆”服务器就靠这些招!
后端·docker·容器
别说我什么都不会42 分钟前
【OpenHarmony】 鸿蒙网络请求库之ohos_ntp
网络协议·harmonyos
Android洋芋44 分钟前
GitHub项目部署的终极指南:从零到一掌握Docker实战
后端
边啵儿1 小时前
如何确定某个路由器的路由表?(计算机网络)
网络·计算机网络
勤奋的小王同学~1 小时前
(功能测试Charles)如何抓取手机http的报文
网络·网络协议·http
chao_7891 小时前
HTTP 响应状态码
网络·网络协议·http