欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > TCP/UDP 简介,三次握手与四次挥手

TCP/UDP 简介,三次握手与四次挥手

2025/2/25 22:07:46 来源:https://blog.csdn.net/weixin_43794299/article/details/145645199  浏览:    关键词:TCP/UDP 简介,三次握手与四次挥手

一、TCP 三次握手

目的:为了解决在不可靠的信道上建立可靠的网络连接
三次握手是连接请求的过程:
A 发送连接请求的数据给 B(发送 SYN 包)
B 同意连接,返回数据给 A(返回 SYN+ACK 包)
A 收到后回复数据给 B(返回 ACK 包),连接建立

以上过程不区分客户端和服务端,tcp 的连接是全双工的。两端均采用上述机制。

Q:为什么不是两次握手?

因为在不可靠的网络上可能会存在传输问题,
比如 A 的第一次连接请求没有到 B(网络滞留),又发送了一次连接请求;
B 收到了第二次的连接请求,这时建立起一条通信;
A 建立了一条通信,当第一次的请求到 B 以后,B会再次建立一条通信;
此时 B 有两条通信,造成了状态不一致

Q:一包数据被拆成多包发送,如何处理丢包问题?这些数据包到达的时间不同,如何处理乱序问题?

针对以上问题,
tcp 为每一个连接建立起一个发送缓冲区【0.1.2…N】
发送数据时,A 取一部分数据组成发送报文(在这个报文中会附带 序列号 + 长度)
B 在收到数据后,需要回复确认报文 ACK = 序列号 + 长度,也就是下一包的起始序列号
这样 A 可以分多段发送数据给 B,B 只需要返回一次报文确认即可
如果数据中有丢失的数据,则 B 端会返回报文要求 A 端重发,B 端会处理乱序问题

二、什么是四次挥手

处于连接状态的客户端和服务端,都可以发起关闭连接请求。
A 想主动结束连接,需要向 B 发送一次请求(FIN包),进入终止等待1状态(第一次挥手)
B 收到后,返回一个 ACK 包,进入关闭等待状态,A进入终止等待2状态(第二次挥手)
AB 此时还可以发送数据,B在数据接收完以后,返回 FIN 包,B进入关闭等待状态(第三次挥手)
A 收到关闭信息后返回 ACK 包,并且进入超时等待状态,超时后关闭连接,B收到信息后回立即关闭连接(第四次挥手)

Q:为什么A需要等待超时连接?

这是为了保证 B 已经收到 ACK 包(第四次挥手),一旦ACK包在网络中丢失,B会一直停留在最后确认状态;
如果 B 此时没有收到A发送来的 ACK 包,会重发 FIN包(三次挥手时机)
客户端会响应这个 FIN 包,并且重发 ACK 包,并刷新超时时间
这个机制也是为了保障在不可靠的网络中进行连接断开确认

什么是 UDP 协议?

UDP 协议是直接将一组数据通过网卡发送出去,不需要连接,所以是无状态的;同时性能损耗小,资源占用少,缺点是稳定性弱。

区别对比
稳定性资源占用速度应用场景
TCP稳定较多相对较慢传输文件、发送邮件、浏览网页等
UDP弱(无状态)快(存在丢包风险)域名查询、语音、视频通话、直播场景等
UDP还用于隧道网络(例如 VPN、SDN 中的 VXLAN)
三次握手:

A: 上号
B:ok
A:等你

四次挥手:

A:分手吧
B:好
B:再见
A:拜

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词