TCP协议为什么是3次握手,4次挥手

简介: TCP(Transport Control Protocol)是一个传输层协议,提供Host-To-Host数据的可靠传输,支持全双工是一个连接导向的协议。TCP/IP五层模型应用层传输层网络层数据链路层物理层TCP是在传输层的协议,主要实现主机到主机通信,前提是需要知道主机们的网络地址(IP地址),但是TCP不负责实际地址到地址的传输,因此TCP协议把IP地址给底层的网络层处理。

TCP(Transport Control Protocol)是一个传输层协议,提供Host-To-Host数据的可靠传输,支持全双工是一个连接导向的协议。

TCP/IP五层模型

应用层

传输层

网络层

数据链路层

物理层

TCP是在传输层的协议,主要实现主机到主机通信,前提是需要知道主机们的网络地址(IP地址),但是TCP不负责实际地址到地址的传输,因此TCP协议把IP地址给底层的网络层处理。

网络层,提供地址到地址的通信,IP协议就是在这一层工作。互联网层解决地址到地址的通信,但是不负责信号在具体两个设备间传递,因此,网络层会调用下方的链路层,在两个相邻设备间传递信息。当信号在两个设备间传递的时候,物理层封装最底层的物理设备,传输介质,由最下方的物理层提供最底层的传输能力。

会话是应用层的概念,连接是传输层的概念。

TCP是一个双工协议,数据任何时候都可以双向传输。这就意味客户端和服务端可以平等地发送接收信息。

TCP是一个连接向导的协议,设计有建立连接(握手)和断开连接(挥手)的过程。TCP没有设计会话(Session),因为会话是应用层的行为。

TCP协议基本操作如下:

1、一个Host主动向另一个Host发起连接,成为SYN(Synchroniation),请求同步;

2、一个Host主动断开请求,称为FIN(Finsh),请求完成

3、一个Host给另一个Host发送数据,称为PSH(Push),数据推送

以上3种情况,接收方接到数据后,需要给发送方一个响应ACK(Acknowledgement)。如果一个请求没有响应,发送方会重新发送这个请求。

建立连接的过程(三次握手)

因为要保证连接和可靠性约束,TCP协议要保证每一条发出的数据必须给返回,返回的数据叫ACK(也就是响应)

1、客户端发消息给服务端(SYN)

2、服务端准备好进行连接。

3、服务端针对客户端的SYN给一个ACK

如果到这结束了,服务端还没有确定客户端是否准备好,这个时候如果服务端马上会再给客户端发送数据,客户端可能还没准备好接受数据。所以还要增加一个过程。

4、服务端发送一个SYN给客户端

5、客户端准备就绪

6、客户端给服务端发送一个ACK。

步骤1是一次握手

步骤3和步骤4,是同时发生的,合并为一个SYN-ACK响应,作为一条数据传递给客户端,所以属于第二次握手。

步骤6是第三次握手。
image.png

TCP协议为什么是3次握手,4次挥手
断开连接的过程(4次挥手)

可以类比建立连接的过程

1、客户端要求断开连接,会发送一个断开的请求,FIN。

2、服务端收到这个请求后,会给客户端回一个ACK,作为FIN的响应。

3、然后这块就是与建立连接的时候有区别了。

断快连接这,服务端不会马上又发一个FIN,给客户端。因为断开连接的处理问题比较多,比如说服务端可能还有发送出去的消息没有得到ACK;也有可能服务端自己有资源需要释放。因此断开连接不能像建立连接那样,将两条信息合并。所以服务端需要等待一段时间,确定可以关闭连接了,再发一条FIN给客户端。

4、客户端收到服务端的FIN后,会给服务端一个响应ACK。

所以这个断开连接过程就是4次挥手。

image.png

TCP协议为什么是3次握手,4次挥手
总结,来说为什建立连接的时候是3次握手,断开连接的时候是4次挥手,说白了就是在握手的时候双方没有过多的事情,所以在服务端接收到客户端的请求后,立马又发送了一个建立连接的请求,也就是SYN和ACK合到了一起,发送给的客户端。而断开连接的时候,由于客服务端在给客户端回复确认的ACK后,还需要等待一会,等待客户端的所有响应都收到了。然后再发送一条断开的请求FIN,然后客户端在回信给服务端ACK,这样就出现了四次挥手。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
9月前
|
网络协议
一文彻底搞定TCP协议的三次握手和四次挥手
通过本章的探险,你将学会如何TCP协议的三次握手和四次挥手
|
2月前
|
网络协议
TCP三次握手 四次挥手
TCP三次握手 四次挥手
|
5月前
|
网络协议 网络架构
🔥🔥TCP协议:三次握手、四次挥手,你真的了解吗?
这篇面试文章主要介绍了TCP协议的网络分层以及TCP的三次握手和四次挥手的原理。TCP协议的分层结构和三次握手、四次挥手的原理确保了数据的可靠传输和连接的可靠建立与断开。这些概念和原理在网络工程中起着重要的作用,并且是网络面试中常见的考点。
|
5月前
|
存储 网络协议 算法
TCP协议的三次握手与四次挥手
TCP协议的三次握手与四次挥手
35 2
|
10月前
|
网络协议 安全
网络:TCP协议三次握手与四次挥手
网络:TCP协议三次握手与四次挥手
57 0
|
8月前
|
网络协议 数据安全/隐私保护
TCP协议握手挥手
TCP握手挥手
34 2
|
10月前
|
网络协议 安全
TCP协议为什么需要三次握手和四次挥手?
TCP协议为什么需要三次握手和四次挥手?
128 0
|
12月前
|
开发框架 缓存 网络协议
计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
81 0
|
网络协议 网络性能优化
网络通信——TCP “三次握手“、“四次挥手“ 详解
TCP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程
网络通信——TCP “三次握手“、“四次挥手“ 详解
|
网络协议
TCP——三次握手和四次挥手
TCP——三次握手和四次挥手
106 0
TCP——三次握手和四次挥手