0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP三次握手和四次挥手,这样解释太通俗易懂了!

亿佰特物联网应用专家 2025-04-24 19:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TCP连接的建立和释放分别通过“三次握手”和“四次挥手”来完成。

三次握手过程

TCP三次握手是建立可靠网络连接的关键过程,它用于确保通信双方能够正常发送和接收数据,并提供可靠的数据传输机制。三次握手的主要目标包括:

• 同步双方的序列号

• 确认双方的接收和发送能力

• 防止因为过期报文导致的误连接

e3913700-20ff-11f0-9434-92fbcf53809c.png

1

第一次握手

• 客户端发送一个SYN(同步)请求报文,表示希望建立连接,并附带初始序列号(Sequence Number)。< 客户端拨通服务器的电话,说“喂?听得到吗?”>• 客户端进入 SYN_SENT 状态,等待服务器的响应。

2

第二次握手

• 服务器收到请求后,回复一个SYN+ACK(同步+确认)报文。< “听得到!你那边OK吗?”>• ACK字段确认客户端的序列号,同时服务器生成自己的初始序列号。

• 服务器进入 SYN_RCVD 状态,等待客户端的确认。

3

第三次握手

• 客户端收到服务器的确认后,再发送一个ACK(确认)报文,确认服务器的响应。<客户端确认:“没问题,开始聊吧!”>• 客户端进入 ESTABLISHED 状态,服务器也进入 ESTABLISHED 状态,连接正式建立。下面是TCP头部的一个简单介绍:上述流程中提到:

e3ade814-20ff-11f0-9434-92fbcf53809c.png

序列号:

定义:序列号标识数据流中每个字节的唯一编号,用于确保数据的有序传输。

初始值:在连接建立时,序列号由发送方随机生成。

变化规则:每发送一个数据段,序列号会增加该数据段的字节数。例如,发送100字节的数据后,序列号会增加100。

作用:解决网络中数据包乱序问题,确保接收方能够按照正确顺序重组数据。

确认号:

定义:确认号表示接收方期望收到的下一个数据包的序列号。

变化规则:确认号等于接收到的序列号加上数据段的长度。如果接收到的是SYN或FIN报文,则确认号加1。

作用:通知发送方哪些数据已经被成功接收,解决丢包问题。

确认号和序列号机制是确保TCP数据传输数据可靠性的关键机制。

为什么要三次握手?

简单来讲,三次握手是保证通信稳定正确的最小开销。

可以有一个很简单的对话例子:

• A — B:你听得到我吗?

• B — A:我听得到,你能听到我吗?

• A — B:我也能听到,我们可以开始正式交流了。

三次握手通过同步序列号,确认机制等等,确保了TCP连接的稳定性和可靠性。

四次挥手过程

TCP的四次挥手是用于终止TCP连接的过程,确保双方都能可靠地关闭连接。

e3fac922-20ff-11f0-9434-92fbcf53809c.png

1

第一次挥手

客户端发送一个带有FIN(Finish)标志的报文段,表示客户端不再发送数据,但仍然可以接收数据。此时客户端进入FIN_WAIT_1状态。< 客户端说:“我讲完了,先挂了”>

2

第二次挥手

服务器收到客户端的FIN报文后,发送一个ACK(Acknowledgment)报文作为确认,确认序号为收到的序号加1。此时服务器进入CLOSE_WAIT状态,客户端收到ACK后进入FIN_WAIT_2状态。< 服务器回应:“收到,我还在处理消息。”>

3

第三次挥手

服务器在完成数据发送后,向客户端发送一个FIN报文,表示服务器也不再发送数据。此时服务器进入LAST_ACK状态,等待客户端的确认。< 服务器处理完数据后说:“我也讲完了。”>

4

第四次挥手

客户端收到服务器的FIN报文后,发送一个ACK报文作为确认,确认序号为收到的序号加1。此时客户端进入TIME_WAIT状态,等待2MSL(最大报文段生存时间)后进入CLOSED状态。服务器收到ACK后,立即进入CLOSED状态。< 客户端确认:“好的,再见!”>

注:如果服务器没有收到客户端的ACK,会在2MSL后重传FIN,客户端在TIME_WAIT状态可以重新发送ACK。2MSL的时间足以让网络中所有旧的重复报文段消失,防止它们干扰新的连接。

为什么需要四次挥手?

全双工通信:TCP是全双工的,每个方向都需要单独关闭。客户端发送FIN表示不再发送数据,但服务器可能仍有数据要发送,因此需要服务器也发送FIN来确认关闭。

可靠关闭:通过四次挥手,确保双方都能确认对方的关闭意图,避免数据丢失或不完整。

亿佰特串口服务器推荐

e40f2a5c-20ff-11f0-9434-92fbcf53809c.png

亿佰特串口服务器产品涵盖单串口服务器、多串口服务器、Wi-Fi串口服务器以及串口服务器模组等,可提供串口转网络功能,能够将串口数据转换成TCP/IP协议数据,实现串口与网络的双向透明传输。被广泛应用于考勤系统、机房监控、电力监控等场景。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    2082

    浏览量

    67200
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1418

    浏览量

    83062
  • 报文
    +关注

    关注

    0

    文章

    39

    浏览量

    4317
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    讲一讲的TCP三次握手四次挥手

    如果你学过网络基础知识,那么你一定对TCP三次握手不陌生。今天我想用通俗的话来给大家讲一讲TCP三次
    的头像 发表于 02-03 10:43 3255次阅读
    讲一讲的<b class='flag-5'>TCP</b><b class='flag-5'>三次</b><b class='flag-5'>握手</b>和<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>

    三次握手四次挥手你懂吗

    程序员面试被问到“三次握手四次挥手”怎么办?
    发表于 04-08 07:23

    TCP三次握手的过程描述

    本文档主要描述TCP三次握手的过程,一个完整的三次握手也就是 请求---应答---再次确认
    发表于 03-02 15:37 8次下载

    TCP/IP协议工作过程的三次握手四次挥手

    )、第三次握手:Client收到确认后,检查ACK是否为1,如果正确则将标志位ACK置为1,并将该数据包发送给Server,Server检查ACK是否为1,如果正确则连接建立成功,Client
    的头像 发表于 10-25 09:49 7448次阅读

    TCP三次握手过程及四次挥手过程说明

    三次握手 置位概念:根据 TCP 的包头字段,存在 3 个重要的标识 ACK、SYN、FIN ACK:表示验证字段 SYN:位数置 1,表示建立 TCP 连接 FIN:位数置 1,表示
    的头像 发表于 03-01 12:00 4701次阅读

    TCP三次握手四次挥手以及11种状态资料下载

    电子发烧友网为你提供TCP三次握手四次挥手以及11种状态资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料
    发表于 04-15 08:41 2次下载
    <b class='flag-5'>TCP</b><b class='flag-5'>三次</b><b class='flag-5'>握手</b>和<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>以及11种状态资料下载

    TCP三次握手四次挥手过程中的异常情况

    TCP 三次握手四次挥手过程中,途中某一步的报文丢失了,会发生什么?
    的头像 发表于 09-05 10:23 1888次阅读

    如何使用WireShark进行TCP三次握手

    WireShark是一种非常方便的网络抓包工具,下面演示,使用WireShark来抓取TCP三次握手过程。
    的头像 发表于 11-01 09:50 2761次阅读

    TCP建立连接概述及三次握手四次挥手的流程

    具备上述个条件后A获取B的信息是有要求的,根本上的要求是数据信道可靠,就是平时所说的可靠连接,那么如何保证连接的可靠性呢,TCP协议就是靠确认应答机制、超时重传机制等保证连接可靠性的,接下来就通过TCP协议的
    的头像 发表于 03-23 15:57 1863次阅读
    <b class='flag-5'>TCP</b>建立连接概述及<b class='flag-5'>三次</b><b class='flag-5'>握手</b>、<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>的流程

    用恋爱的方式解释TCP三次握手四次挥手

    前言今天的分享,是关于前两天读到的心得,TCP建立连接时三次握手,断开时为何4握手的自我理解:恋爱时连接时客户端说:SYN(约吗?)服务器
    的头像 发表于 08-28 16:11 1396次阅读
    用恋爱的方式<b class='flag-5'>解释</b><b class='flag-5'>TCP</b>的<b class='flag-5'>三次</b><b class='flag-5'>握手</b>和<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>

    说说TCP三次握手的过程?为什么是三次而不是两四次

    说说TCP三次握手的过程?为什么是三次而不是两四次T
    的头像 发表于 02-04 11:03 1616次阅读

    TCP三次握手协议的作用

    在计算机网络中,数据的传输需要在发送方和接收方之间建立一个稳定的连接,以确保数据的完整性和顺序。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它通过三次握手协议来建立
    的头像 发表于 01-03 17:15 1461次阅读

    TCP三次握手的基本原理

    在计算机网络中,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保了数据在网络中传输的可靠性和顺序性。为了建立两个网络实体之间的通信,TCP使用一种称为“三次
    的头像 发表于 01-03 17:25 1633次阅读

    TCP三次握手安全性分析

    TCP(传输控制协议)的三次握手是建立可靠连接的重要机制,它确保了通信双方在数据传输前的连接状态是可靠和准确的。然而,从安全性的角度来分析,TCP
    的头像 发表于 01-03 18:10 1585次阅读

    如何监测TCP三次握手过程

    在计算机网络中,传输控制协议(TCP)是确保数据可靠传输的关键协议之一。TCP通过三次握手过程来建立两个端点之间的连接,这个过程对于网络通信的稳定性和安全性至关重要。
    的头像 发表于 01-06 09:20 1311次阅读