首页 > 其他分享 >请描述处TCP的三次握手和四次挥手

请描述处TCP的三次握手和四次挥手

时间:2024-12-02 09:15:28浏览次数:4  
标签:ACK 握手 SYN TCP 四次 服务器 FIN 客户端

TCP 的三次握手和四次挥手是前端面试中经常被问到的网络基础知识。它们保证了可靠的连接建立和断开。下面我分别描述一下这两个过程:

三次握手 (Three-way handshake)

三次握手的目的是同步连接双方的序列号和确认号,并交换 TCP 窗口大小信息。

  1. SYN (Synchronize):客户端发送一个 SYN 包到服务器,其中包含客户端的初始序列号 (client_isn)。这个包表明客户端希望建立连接。此时,客户端进入 SYN-SENT 状态。

  2. SYN-ACK (Synchronize-Acknowledge):服务器收到 SYN 包后,发送一个 SYN-ACK 包给客户端。这个包包含服务器的初始序列号 (server_isn) 和对客户端 SYN 包的确认号 (client_isn + 1)。此时,服务器进入 SYN-RECEIVED 状态。

  3. ACK (Acknowledge):客户端收到 SYN-ACK 包后,发送一个 ACK 包给服务器。这个包包含对服务器 SYN-ACK 包的确认号 (server_isn + 1)。此时,客户端进入 ESTABLISHED 状态。服务器收到 ACK 包后也进入 ESTABLISHED 状态,连接建立完成。

图示:

Client                                      Server

SYN(client_isn)
----------------------------------------->
                                        SYN-RECEIVED

<-----------------------------------------
SYN-ACK(server_isn, client_isn+1)
SYN-SENT                                 

ACK(server_isn+1)
----------------------------------------->
ESTABLISHED                               ESTABLISHED

四次挥手 (Four-way handshake)

四次挥手的目的是确保双方都完成了数据的传输,并有序地释放连接。

  1. FIN (Finish):客户端发送一个 FIN 包给服务器,表示客户端不再发送数据,准备关闭连接。客户端进入 FIN-WAIT-1 状态。

  2. ACK (Acknowledge):服务器收到 FIN 包后,发送一个 ACK 包给客户端,确认收到 FIN 包。服务器进入 CLOSE-WAIT 状态。此时,客户端到服务器的连接已经关闭,但服务器到客户端的连接仍然可以传输数据。

  3. FIN (Finish):服务器发送一个 FIN 包给客户端,表示服务器也不再发送数据,准备关闭连接。服务器进入 LAST-ACK 状态。

  4. ACK (Acknowledge):客户端收到 FIN 包后,发送一个 ACK 包给服务器,确认收到 FIN 包。客户端进入 TIME-WAIT 状态,等待 2MSL(Maximum Segment Lifetime,最大报文段生存时间)后,进入 CLOSED 状态。服务器收到 ACK 包后,进入 CLOSED 状态,连接完全关闭。

图示:

Client                                      Server

FIN
----------------------------------------->
FIN-WAIT-1                               CLOSE-WAIT

<-----------------------------------------
ACK


FIN
<-----------------------------------------
LAST-ACK                              FIN-WAIT-2

ACK
----------------------------------------->
TIME-WAIT                               CLOSED

(after 2MSL)
CLOSED

前端开发中的意义:

理解 TCP 的三次握手和四次挥手,有助于前端开发者:

  • 排查网络问题: 当网页加载缓慢或连接失败时,可以结合网络工具分析 TCP 连接的状态,判断问题所在。
  • 优化网络性能: 了解 TCP 的工作原理,可以帮助前端开发者选择合适的网络优化策略,例如减少 HTTP 请求次数、使用持久连接等。
  • 理解 WebSocket: WebSocket 是基于 TCP 协议的,理解 TCP 有助于理解 WebSocket 的工作原理。

希望以上解释能够帮助你理解 TCP 的三次握手和四次挥手。

标签:ACK,握手,SYN,TCP,四次,服务器,FIN,客户端
From: https://www.cnblogs.com/ai888/p/18580866

相关文章

  • TCP/IP网络协议栈
    TCP/IP网络协议栈是一个分层的网络模型,用于在互联网和其他网络中传输数据。它由几个关键的协议层组成,每一层负责特定的功能。以下是对TCP/IP协议栈的简要介绍:TCP/IP协议模型的分层1.应用层(ApplicationLayer):这是用户与网络交互的地方。常见的协议包括HTTP(用于网页浏览)、......
  • 你知道TCP和UTP的区别是什么吗?说说你对它们的理解
    TCP和UDP都是用于网络通信的传输层协议,但在可靠性、连接方式和数据传输方式等方面存在显著差异。这些差异对前端开发选择使用哪种协议至关重要,尤其是在处理实时应用、游戏和数据流等场景。TCP(TransmissionControlProtocol-传输控制协议)面向连接:TCP是面向连接的协......
  • 《程序员的修炼者之道》第四次读书笔记
    《程序员的修炼者之道:从小工到专家的修炼秘籍》(通常简称为《程序员修炼之道》或《修炼之道》)是一本经典的软件开发指南,由AndrewHunt和DavidThomas合著。这本书不仅提供了实用的编程技巧,还深入探讨了如何成为一名优秀的程序员,包括思维方式、工作态度以及个人成长等方面。以下是针......
  • 【河北建筑工程学院毕业论文】基于TCP/IP协议网络流量监控系统开发
    注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。摘  要因特网的兴起,彻底改变了人们对信息的管理方式,早在90年代因特网刚刚兴起之时,人们就开始思考如何通过因特网来进行系统化的管理。然而,网络信誉度的认证困难,网络法规和政策的不完善......
  • 《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(7)-Wireshark的TCP包详解-上
    1.简介上一篇中通过宏哥的介绍和讲解,小伙伴或者童鞋们应该知道宏哥今天要讲解和介绍的内容在哪里了吧,没错就是介绍那个OSI七层模型的传输层。因为只有它建立主机端到端的连接如:TCP、UDP。2.TCP是什么?tcp是工作在传输层,也就是网络层上一层的协议。它是面向连接的,可靠的,基于字......
  • TCP粘包半包问题
    TCP粘包和半包的问题分析TCP粘包原因:1、发送方每次写入数据<套接字缓冲区大小;tcp相关算法整合碎片化数据包2、接收方读取(接收)套接字缓冲区数据不够及时半包原因:1、发送方写入数据>套接字缓冲区大小2、发送的最大报文长度大于MSS,网络包大于协议的MTU(最大传输单元,1500......
  • tcp是如何保证可靠连接的
    TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过以下几种机制来保证可靠的连接:三次握手(Three-wayHandshake):建立连接时,TCP使用三次握手来同步连接双方的序列号和确认号,确保双方的接收和发送通道都已准备好。序列......
  • 传输控制协议TCP超详细总结
    目录1、TCP报头2.1、什么是TCP:2.2、什么是TCP连接3、TCP三次握手建立连接4、TCP四次挥手拆除连接5、TCP保证可靠性的机制6、提升性能的机制(1)滑动窗口(2)快速重传7、TCP连接建立的本质8、TCP通过序列号、确认应答和超时重传提高可靠性9、TCP应用场景1.Web浏览......
  • Time Stop#NOIP2024/GDUTCPC
    重要声明:本文章从2024.11.2716:12开始落笔,故cnblogs平台显示的上传时间会在NOIP2024比赛之前。本文章作者不存在任何以各类非合法渠道提前获取NOIP2024比赛题目的可能,同时也没有将该想法实现对应的资源或权力。请各位读者作证,并请相关组织明察。Day-3/2024.11.27这......
  • HCIA-03 常用协议 ARP TCP UDP ICMP
    TCP/IP模型与OSI模型对比1.TCP/IP模型分为四层:应用层、传输层、网络层、数据链路层。2.OSI模型(开放系统互联模型)为七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。3.TCP/IP模型中的传输层对应OSI模型中的传输层和会话层,网络层对应OSI模型的网络层,数据链路层......