快速掌握TCP的三次握手和四次挥手

快速理解 TCP 的三次握手和四次挥手 TCP 的三次握手和四次挥手是 TCP 协议的常见考点,下面我们通过一张图和几条记忆点来快速理解。 阅读详情

前言

TCP的三次握手和四次挥手经常会出现在面试题中,而且也是看懂抓包数据的基本知识。本文快速讲解三次握手和四次挥手的流程以及为什么会有三次握手和四次挥手。

知识前提

TCP/IP中存在两个具有代表性的传输层协议,分别是TCP和UDP。

TCP

TCP 是面向连接的、可靠的流协议,具备顺序控制、重发控制等机制。建立连接必须进过三次握手,断开连接需要4次挥手。所以TCP常用在传输层有必须可靠传输的情况,比如文件传输,文字发送。

 

UDP

UDP是不具有可靠性的数据报协议,UDP不需要建立连接,可以直接发起。UDP常应用在不需要保证数据可靠性,并对实时性有较高的要求,比如视频通话。

 

标志位

TCP在协议头中使用大量的标识位来控制连接,其中3个常用的标识位如下:

SYN :创建一个连接

ACK:确认收到的数据

FIN : 终结一个连接

为什么会有三次握手和四次挥手

TCP采用三次握手建立一个连接,采用4次挥手来关闭一个连接。既然是可靠协议,那三次握手和四次挥手就是用来保证数据的可靠性的。

 

三次握手介绍

image.png

 

上图中,所谓的三次握手,就是建立一个TCP连接时,需要客户端和服务端总共发送3个包,作用是双方能明确自己和对方的发送接收能力都正常。三条线表次三次握手的过程。

第一次握手:客户端端发送网络包,服务端端收到网络包。此时,服务端知道了:客户端的发送能力正常、服务端的接收能力正常。

第二次握手:服务端发送针对客户端之前SYN的ACK包,和建连SYN包。客户端收到了之前SYN的应答和SYN请求,此时,客户端知道了,服务端接收能力正常、发送能力正常,客户端发送能力正常、接收能力正常。

第三次握手:客户端发送针对SYN的ACK包,服务端收到了。此时,服务端又知道了,客户端接收能力正常,服务端发送能力正常。

三次握手下来之后,客户端和服务端都知道自身和对方的发送、接收能力都是正常的,我们可以正常通信消息了。

四次挥手介绍

image.png

上图所示的四条线即对应四次挥手,主动方和被动方总共需要发送4个包,因为任何一方都可以发起断连,所以不区分客户端或者服务端,我们用主动方和被动方来区分。

 

第一次挥手:主动方发起FIN包,主动方告知被动方:我数据都已经发送完了,不需要再建立连接了。

第二次挥手:被动方发送ACK。此时,主动方已经不能向被动方发送数据了,但是被动方还是可以向主动方发送数据。被动方收到FIN请求后会立马回ACK,但是并不会立马发送FIN请求,因为被动方要告知上层应用,由应用层决定是什么时候发送FIN指令。

第三次挥手:等被动方的数据已经传输完毕了,此时被动方发起FIN报文,告知主动方,我数据已经传完啦。

第四次挥手:主动方告知被动方,我知道你数据传完了。

四次挥手的目的,就是终止数据传输,并且确保数据已经发送完毕。

 

四次挥手状态的转换

顺便提下四次挥手状态的转换

主动方

ESTABLISHED---发送FIN给被动方-->FIN_WAIT_1---接收到被动方的FIN对应的ACK-->FIN_WAIT_2---收到被动方端发送过来的FIN消息-->FIIN_WAIT--2MSL之后会进入-->CLOSED

(MSL是TCP报文里面最大生存时间)

 

被动方

ESTABLISHED---接收到主动方的FIN->CLOSED_WAIT--被动方的应用程序关闭发送FIN--> LAST_ACK---收到主动方对于FIN的ACK响应-->FIIN_WAIT---->CLOSED

详解TCP和UDP的区别?教你快速理解三次握手和四次挥手! 前言: 之前我们有了解IP地址和端口号,通过IP地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数据不能随便发送,在发送之前还需要选择一个对应的传输协议,保证程序之间按照指定的传输规则进行数据的通信,而这个传输协议就是我今天要分享的内容。 要想理解 TCP 和 UDP 的区别,首先要明白什么是 TCP?什么是 UDP? 1,UDP介绍 UDP 是... 阅读详情

相关推荐

三次握手与四次挥手过程详解

三次握手与四次挥手过程详解三次握手建立连接:传输数据过程:四次握手断开连接:常见面试问题: TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道 上图主要包括三部分:建立连接、传输数据、断开连接。 建立TCP连接很简单,通过三次握手便可建立连接。 建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传、流量控制、拥塞控制等等。 断开连接的过程也很...

qq_28167307的博客 4486

TCP三次握手,四次挥手,你真的了解吗?

相信大家在学习的过程中,都知道TCP的三次握手,四次挥手,但总是记不得太清楚,那么本文将大致带你回顾一下这两个过程,好了,正文开始以谈恋爱为例,两个人能够在一起最重要的事情是首先确认各自爱和被爱的能力。接下来我们以此来模拟三次握手的过程。第一次:男:我爱你。女方收到。 由此证明男方拥有爱的能力。 第二次: 女:我收到了你的爱,我也爱你。男方收到。 OK,现在的情况说明,女方拥有爱和被爱的能力。第三次: 男:我收到了你的爱。女方收到。 现在能够保证男方具备被爱的能力。由此完整地确认了双方爱和被爱的能力,两人

m0_57965131的博客 1078

TCP协议详解(三次握手,传输数据,四次挥手)

首先来了解一下什么是TCP(传输控制协议):简单点来讲TCP它是一种网络通信协议,旨在通过internet发送数据包。TCP是OSI层中的传输层协议(第四层),用于通过传输和确保通过支持网络和internet传递消息来在远程计算机之间创建连接。 TCP协议的特点: (1)TCP协议是面向连接的传输层协议,在数据传输前必须建立连接,数据传输之后释放连接。 (2)TCP提供可靠交付的服务,所谓可靠是指...

SQ_Vicky的博客 5225

两张动图-彻底明白TCP的三次握手与四次挥手

两张动图解析三次握手,四次挥手

qzcsu的博客 50万+

大众点评商家及评分数据(2012-2025)

大众点评及商家评分数据库全面覆盖全国范围内多个城市的商户信息,涵盖餐饮、购物、休闲娱乐等多个消费领域,包含商家基础信息、地理坐标、分类体系、经营状态、用户评价、消费水平及服务设施等共计28个字段。

Sunny9qx的博客 2709

一篇文章将三极管讲透:三极管从原理到应用,从参数到特性,从入门到精通

晶体三极管(Transistor)是一种半导体电子器件,也是电子工程中最基本的元件之一。它有三个区域,分别是P型半导体,N型半导体和P型半导体,从而形成PNP型晶体三极管或者NPN型晶体三极管。

学习帮的博客 9万+

TCP连接管理——三次握手和四次挥手

TCP连接的建立——三次握手 TCP连接的建立过程通常被称为“三次握手”。客户端与服务器之间建立TCP连接的过程如下。 三次握手 客户端向服务器发送一个特殊的TCP报文段——SYN报文段。它不包含数据,但是会将TCP首部的SYN设置为1。并且,客户端会随机生成一个初始序号(client_isn)放在该报文段的序号字段中。随机生成序号有利于避免某些网络攻击。 服务器接收客户端发...

zy010101博客 7807

AI全景之第八章第三节:时间序列分析与预测技术

摘要 时间序列分析与预测技术从传统统计模型发展到深度学习方法。传统方法包括ARIMA模型(处理趋势和季节性)、指数平滑(加权平均预测)和状态空间模型(概率框架分解)。机器学习方法通过特征工程和树模型提升非线性建模能力。深度学习方法中,RNN/LSTM处理序列依赖,TCN利用因果卷积,Transformer通过注意力机制捕获长程依赖。当前研究趋势结合神经符号方法和生成模型,以提高预测精度和可解释性。不同方法各具优势,需根据数据特性和预测需求选择。

技术引领业务创新 992

TCP三次握手(详解)

一:引出 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西;由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上发送的;在一个TCP的连接上是可以发送多个http请求的 二:TCP的报文格式 1:TCP在传输层和网络层数据传输的过程 TCP协议是在传输层端到端的传输信息,既然说到传输层协议,那么就讲一下传输层协议在数据传

qq_48508278的博客 9万+

新手小白 必须精进的 “ FLASH分区管理Code and Data ” !!!最强文章解析!!!

FLASH“代码区”和“数据区”不是每个项目都必须显式管理,但只要你的产品功能越来越丰富,对可靠性和扩展性要求提高,就一定要学会科学划分和使用。这也是嵌入式工程师进阶路上的必修课!

qq_75157958的博客 936

Anchor graph 对齐文献解读

Align then Fusion: Generalized Large-scale Multi-view Clustering with Anchor Matching Correspondences文献解读

atease0001的博客 1165

一文搞懂TCP的三次握手和四次挥手

一文搞懂TCP的三次握手和四次挥手

不脱发的程序猿 19万+

Xilinx FPGA 10G Ethernet Subsystem example

The 10G Ethernet subsystem provides 10 Gb/s Ethernet MAC, Physical Coding Sublayer(PCS) and Physical Medium Attachment (PMA) transmit and receive functionality over anAXI4-Stream interface.

青城扬沙的博客 2382

快速理解TCP三次握手和四次挥手原理

快速理解TCP三次握手和四次挥手原理TCP三次握手原理:原理图如下:TCP三次握手的过程:常见问题:为什么要握手三次?两次会有什么问题?TCP四次挥手原理:TCP四次挥手的过程:第三次挥手的必要性:总结:写在最后:本文的图全部来自于计算机网络原理(第七版) 谢希仁 编著 TCP三次握手原理: 原理图如下: TCP三次握手的过程: 1)客户端A主动打开连接,服务器B被动打开连接。B建立传输控制块TCB 并且有CLOSED 状态变成 LISTEN 状态,等待A发送连接请求。 2)第一次握手: A 建立传输控制

weixin_44451209的博客 430

【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

【代码】【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

m0_61126667的博客 4863

【Unity 城市建模插件】POLY-Megapolis City Pack 提供超过数百种城市建筑、道路、车辆与城市家具模型,完美适用于构建现代化城市、模拟城市游戏、都市题材冒险类游戏和开放世界项目

POLY - Megapolis City Pack 是一套风格统一、内容丰富的低多边形城市建模资源包,专为 Unity 引擎设计。该资源包提供超过数百种城市建筑、道路、车辆与城市家具模型,完美适用于构建现代化城市、模拟城市游戏、都市题材冒险类游戏和开放世界项目。无论是快速原型开发还是正式发布项目,POLY 系列都能提供高效、风格统一的解决方案。

2403_88403568的博客 635

详解TCP和UDP的区别? 教你快速理解TCP的三次握手(建立连接)和四次挥手(关闭连接)!

原创 详解TCP和UDP的区别?教你快速理解三次握手和四次挥手! ...

u010013838的博客 790

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TCP通信三次握手、四次挥手

介绍了三次握手和四次挥手的过程

2301_78622258的博客 1359

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一文搞懂TCP三次握手与四次挥手

数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。

fbbqt的博客 538

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TCP 快速重传为什么是三次冗余 ACK,这个三次是怎么定下来的?

想要了解在这个问题,那么你就要了解:TCP三次握手,四次分手以及ACK的基本原理了话不多说,我直接上干货!先了解一下TCP的ACK原理和延迟确认机制ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号前面的所有数据。ACK字段长度为32位,能表示0~2^32-1之间的值。ACK作用发送方在一定时间内没有收到服务端的ACK确认包后,就会重新发送TCP数据包。发送方收到了ACK,表明接收方已经接收到数据,保证了数据的可靠达到。ack的定义就是提醒向自己发送数据包

资料免费分享,点击名片 1670

TCP协议:三次握手、四次挥手过程详解

概述: 建立TCP连接通道(三次握手),传输数据,断开TCP连接通道(四次挥手),下图显示了TCP通信过程。 1. 三次握手建立连接 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;服务器收到syn包,必须确认客户的SYN(ack=x+1),此时,服务器确认,客户端发送能力正常,服务端接收能力正常。 第二次握手:服务器同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;客户端收到服务器的SYN+ACK包。此时

siyue521的博客 5849

TCP常见面试题

画出TCP报文 三次握手以及四次挥手 TCP报文的首部长度以及都有哪些字段 最少20字节,因为TCP的头部中20字节的首部是固定的,如下图: 三次握手和四次挥手 为啥三次握手:(三次握手能保证数据可靠传输又能提高传输效率。) 若握手是两次:如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。 若客户端没有收到server的对SYN的ACK确认报...

mulinsen77的博客 2万+

TCP(三次握手)和UDP(面向无连接)的原理以及区别

📡TCP(Transmission Control Protocol)是一种网络协议,用于设备在互联网上进行通信,它通过三次握手等机制确保传输可靠性和完整性。它是TCP/IP协议套件中的主要协议之一,提供错误检测和纠正功能,被广泛应用于各种领域,包括Web浏览、电子邮件、文件传输等。📡UDP(用户数据报协议)是一种无连接的协议,运行在IP(互联网协议)之上。与TCP不同,UDP在发送数据之前不建立连接。

weixin_53752776的博客 1690

网络基础-tcp/ip的三次握手和四次挥手

这道题目已经很多次在笔试中被问及了,所以,打算巩固一下,写成一篇完善的文章,参考了以下的两篇文章 https://baijiahao.baidu.com/s?id=1618114723935605183&wfr=spider&for=pc https://blog.youkuaiyun.com/qq_35860138/article/details/82054793 相关名词介绍 syn...

s_xchenzejian的博客 425

TCP/IP 三次握手和四次挥手

他们决定使用一种特殊的传输方式来确保他们的信件能够准确地传递并保证通信的可靠性。通过这个故事,我们可以更加形象地理解三次握手和四次挥手的过程,这就像是两个人建立和结束一次通话的场景一样。通过这样的三次握手和四次挥手过程,TCP连接的建立和终止都可以得到有效地完成,保证了数据的可靠传输。总结:三次握手和四次挥手是TCP/IP协议中建立和终止连接的过程。1.使用TCP协议前,须先建立TCP连接,形成传输数据通道。2.传输前,采用"三次握手"方式,是可靠的。5.传输完毕,需释放已建立的连接,效率低。

qq_52827148的博客 1699

【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答

根本原因: 无法确认客户端的接收能力。如果是两次,你现在发了 SYN 报文想握手,但是这个包滞留在了当前的网络中迟迟没有到达,TCP 以为这是丢了包,于是重传,两次握手建立好了连接。看似没有问题,但是连接关闭后,如果这个滞留在网路中的包到达了服务端呢?这时候由于是两次握手,服务端只要接收到然后发送相应的数据包,就默认建立连接,但是现在客户端已经断开了。看到问题的吧,这就带来了连接资源的浪费。备注:丢包的数据 服务器会根据时间戳或者根据响应时间 判定是否接受 这个请求/数据;

不积跬步无以至千里,不积小流无以成江海~ 8147
上一篇: ClassLoader详解
下一篇: PyTorch翻译官网教程1-QUICKSTART
poorCoder_
博客等级 码龄10年 129粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值