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等编程技术的技巧经验分享。

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

相关推荐
Excuse_lighttime6 分钟前
HTTP / HTTPS 协议
网络·网络协议·http·https
z人间防沉迷k8 分钟前
TCP核心机制
网络·网络协议·tcp/ip·http
像风一样_2 小时前
TCP首部格式及三次握手四次挥手
网络·网络协议·tcp/ip
{{uname}}7 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
我不想当小卡拉米8 小时前
【Linux】操作系统入门:冯诺依曼体系结构
linux·开发语言·网络·c++
思科小白白8 小时前
【无标题】
网络·智能路由器
炒空心菜菜9 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark
yayaer29 小时前
GOOSE 协议中MAC配置
服务器·网络·goose
嵌入式在学无敌大神9 小时前
IP协议、以太网包头及UNIX域套接字
网络·tcp/ip·unix
2501_9159090610 小时前
iOS App 安全性探索:源码保护、混淆方案与逆向防护日常
websocket·网络协议·tcp/ip·http·网络安全·https·udp