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,这样就出现了四次挥手。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
网络协议
【干货】TCP/IP协议三次握手四次挥手
【干货】TCP/IP协议三次握手四次挥手
【干货】TCP/IP协议三次握手四次挥手
|
网络协议
一文彻底搞定TCP协议的三次握手和四次挥手
通过本章的探险,你将学会如何TCP协议的三次握手和四次挥手
|
6月前
|
网络协议
你不知道的TCP协议:四次握手!
你不知道的TCP协议:四次握手!
40 0
|
网络协议 Go C语言
活久见!TCP两次挥手,你见过吗?那四次握手呢?
活久见!TCP两次挥手,你见过吗?那四次握手呢?
73 0
|
网络协议 安全
网络:TCP协议三次握手与四次挥手
网络:TCP协议三次握手与四次挥手
83 0
|
7月前
|
网络协议 网络架构
🔥🔥TCP协议:三次握手、四次挥手,你真的了解吗?
这篇面试文章主要介绍了TCP协议的网络分层以及TCP的三次握手和四次挥手的原理。TCP协议的分层结构和三次握手、四次挥手的原理确保了数据的可靠传输和连接的可靠建立与断开。这些概念和原理在网络工程中起着重要的作用,并且是网络面试中常见的考点。
137 1
|
7月前
|
存储 网络协议 算法
TCP协议的三次握手与四次挥手
TCP协议的三次握手与四次挥手
69 2
|
网络协议 数据安全/隐私保护
TCP协议握手挥手
TCP握手挥手
56 2
|
网络协议 安全
TCP协议为什么需要三次握手和四次挥手?
TCP协议为什么需要三次握手和四次挥手?
181 0
|
开发框架 缓存 网络协议
计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
104 0