重庆做网站价格,一站式网站开发,山西响应式网站设计,淘宝客推广怎么做网站备案作者#xff1a;逍遥Sean 简介#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话#xff0c;可以三连支持一下~ 如有需要我的支持#xff0c;请私信或评论留言#xff01; TCP网络连接中的三… 作者逍遥Sean 简介一个主修Java的Web网站\游戏服务器后端开发者 主页https://blog.csdn.net/Ureliable 觉得博主文章不错的话可以三连支持一下~ 如有需要我的支持请私信或评论留言 TCP网络连接中的三次握手和四次挥手 一、网络基础回顾二、TCP通讯的连接和断开为什么复杂三、三次握手和四次挥手 一、网络基础回顾
计算机网络结构是一个复杂的层次结构一般可以分为七层被称为网络协议分层结构。这个结构被用来划分网络连接的不同协议以及它们之间的相互作用。以下是这七层的详细介绍
物理层负责传输数据的物理介质如电缆和无线信号。数据链路层负责将数据转换成数据帧并在物理层上进行传输。数据链路层的主要任务是差错控制和流量控制。网络层负责选择数据包的传输路线并将其传输到目标设备。网络层还负责 IP 地址的分配和路由选择。传输层负责数据传输的端到端通信比如 TCP 协议和 UDP 协议。会话层负责建立、维护和结束数据传输会话。表示层负责数据格式的转换确保数据可以被接收方正确地解释。应用层向用户提供应用程序负责数据处理和传输。 这些层次结构中的每一层都有其独特的任务和功能。为了使不同的网络设备能够相互通信必须确保它们“说”同一种语言和遵循相同的协议。这就是网络协议分层结构的目的。
二、TCP通讯的连接和断开为什么复杂
TCPTransmission Control Protocol通讯是一种面向连接的、可靠的网络传输协议。它位于 OSI 模型的传输层负责提供数据传输服务。TCP协议通过三次握手建立连接确保数据的可靠性和有序性同时也提供拥塞控制和流量控制机制。它适用于需要保证数据传输的可靠性和有序性的应用例如文件传输、电子邮件、网页浏览等。 TCP通信是一种可靠的面向连接的通信方式连接建立和断开是非常重要的过程。下面是TCP通信的连接和断开过程 复杂的连接与释放过程是为了保证连接的可靠性 连接建立 当客户端需要和服务器建立TCP连接时它会向服务器发送一个SYN包同步包这是一个带有SYN标志位的TCP数据包。服务器在收到SYN包后会向客户端发送一个带有SYN和ACK标志位的数据包表示确认收到客户端的请求并同意建立连接。最后客户端向服务器发送一个带有ACK标志位的数据包表示收到了服务器的确认信息连接建立成功。 数据传输 在连接建立后客户端和服务器之间可以进行数据传输。数据以TCP数据包的形式通过互联网传输。 连接断开 TCP连接断开有两种方式主动关闭和被动关闭。 主动关闭当客户端或服务器需要断开连接时它会向对方发送一个带有FIN标志位的TCP包表示要关闭连接。对方在收到FIN包后会回复一个ACK确认信息。最后对方也会发送一个FIN包表示连接已经关闭。 被动关闭当一方突然断开连接另一方也会收到一个FIN包表示连接已经关闭。对方在收到FIN包后会发送一个ACK包然后连接关闭。
三、三次握手和四次挥手
三次握手和四次挥手都是TCP协议通信过程中建立和关闭连接的步骤。
三次握手的步骤如下
客户端发送SYN包进入SYN-SENT状态。服务器接收到SYN包回复一个ACK包和一个SYN包进入SYN-RECEIVED状态。客户端收到ACK包和SYN包回复一个ACK包建立连接并进入ESTABLISHED状态。
四次挥手的步骤如下
客户端主动关闭连接发送FIN包进入FIN-WAIT-1状态。服务器接收到FIN包回复一个ACK包进入CLOSE-WAIT状态。服务器向客户端发送FIN包进入LAST-ACK状态。客户端接收到FIN包回复一个ACK包进入TIME-WAIT状态等待2MSL最长报文段寿命后关闭。
下面是三次握手和四次挥手的示意图
三次握手
客户端 服务器SYN_SENT状态 LISTEN状态---------------SYN包------------SYN_RECEIVED---------ACK包和SYN包------------ESTABLISHED
四次挥手
客户端 服务器ESTABLISHED状态 ---------------FIN包------------FIN_WAIT_1 CLOSE_WAIT---------------ACK包------------FIN_WAIT_2 LAST_ACK-------FIN包--------TIME_WAIT -------ACK包--------CLOSED