TCP的三次握手、四次挥手

首先我们要知道建立连接的目的是什么,我们是为了可靠的传输数据。那既然是可靠的传输数据,我们必须保证客户端和服务端都能正常的发送和接收数据,如果某一方不能正常的发送或者接收数据,那整个数据的传输就不能成功,也就不可靠。

三次握手

1.第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力;

2.第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力;

3.第三次握手:当客户端收到服务端的确认报文后,知道服务端具备接收和发送数据的能力,但是此时服务端并不知道自己具有接收的能力,所以还需要发送一个确认报文,告知服务端自己是具有接收能力的。

最后,当整个三次握手结束过后,客户端和服务端都知道自己和对方具备发送和接收数据的能力,随后整个连接建立就完成了,可以进行后续数据的传输了。

四次挥手

  1. 第一次挥手客户端发起关闭连接的请求给服务端;
  2. 第二次挥手:服务端收到关闭请求的时候可能这个时候数据还没发送完,所以服务端会先回复一个确认报文,表示自己知道客户端想要关闭连接了,但是因为数据还没传输完,所以还需要等待;
  3. 第三次挥手:当数据传输完了,服务端会主动发送一个 FIN 报文,告诉客户端,表示数据已经发送完了,服务端这边准备关闭连接了。
  4. 第四次挥手:当客户端收到服务端的 FIN 报文过后,会回复一个 ACK 报文,告诉服务端自己知道了,再等待一会就关闭连接。
相关推荐
闻道且行之3 分钟前
frp+Nginx 内网穿透详细配置教程
运维·网络·nginx·frp·内网穿透
鱼鳞_8 分钟前
Java学习笔记_Day37(网络编程)
java·网络·笔记·学习
甘露寺26 分钟前
深入理解并发模型:从 Python 的 async/await 到 Java 的虚拟线程与线程池机制
java·开发语言·网络
郝学胜-神的一滴27 分钟前
深入理解 epoll_wait:高性能 IO 多路复用核心解密
linux·服务器·开发语言·c++·网络协议
亚空间仓鼠29 分钟前
网络学习实例:多网段企业网络部署
网络·智能路由器
x***r15133 分钟前
Wireshark-4.4.2-x64安装步骤详解(附网络抓包与分析入门教程)
网络·测试工具·wireshark
维构lbs智能定位42 分钟前
室外定位技术补充:蜂窝网络定位底层原理与未来主流
网络·室外定位技术
科技小花43 分钟前
2026年数据治理出海:当“全球化运营”遭遇“数据治理壁垒”,谁能提供答案?
网络·人工智能·数据治理·全球化·出海
广州灵眸科技有限公司1 小时前
瑞芯微(EASY EAI)RV1126B rknn-toolkit-lite2使用方法
linux·网络·人工智能·物联网·算法
数智工坊1 小时前
金字塔场景解析网络PSPNet:打通全局上下文,屠榜语义分割三大基准
网络·人工智能·深度学习·cnn