一文读懂TCP的三次握手(详细图解)

article/2025/10/14 10:52:38

在学习TCP三次握手的过程前,首先熟悉几个缩写简称:

TCB

传输控制块,打开后服务器/客户端进入监听(LISTEN)状态

SYNTCP报文标志位,该位为1时表示发起一个新连接
ACKTCP报文标志位,该位为1时,确认序号有效,确认接收到消息。TCP规定,在连接建立后所有报文的传输都必须把ACK1
seqsequence number,报文初始序列号,代表发送的第一个字节的序号
ackacknowledgement number,报文确认序号,代表希望收到的下一个数据的第一个字节的序号

熟悉上面几个标志位和序列号含义后,下面来看TCP的三次握手过程:

先上几个帮助理解的点:

不管请求还是应答,都是带两种数据:请求号SYN/应答号ACK + 数据包报文号;

请求时要发请求号SYN,应答时要发送应答号ACK;在数据包传送时,发送方要发送当前数据包报文号seq和确认收到上一个数据包的确认报文号ack

下面结合示意图来理解三次握手过程:

前期:

TCP服务器创建传输控制块TCB,进入监听LISTEN状态,准备接收请求。

第一次握手:客户端——请求(发送请求SYN+数据包当前序列号seq,无需应答)

客户端创建传输控制块TCB,进入监听LISTEN状态。
设置SYN=1,表示这是握手报文,并发送给服务器
设置发送的数据包序列号seq=x
此时客户端处于同步已发送SYN-SENT
状态

第二次握手:服务器——确认(发送应答ACK+请求SYN+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq)

设置ACK=1,表示确认应答。
设置
ack=x+1,表示已收到客户端x之前的数据,希望下次数据从x+1开始
设置SYN=1
,表示握手报文,并发送给客户端
设置发送的数据包序列号seq=y
此时服务器处于同步已接收SYN-RCVD
状态

第三次握手:客户端——确认服务器的确认(发送应答ACK+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq ,连接已建立,无需请求)

设置ACK=1,表示确认应答。
设置
ack=y+1,表示收到服务器发来的序列号为seq=y的数据包,希望下次数据从y+1开始
设置seq=x+1
,表示接着上一个数据包seq=x继续发送
至此三次握手结束,连接建立

为什么要使用三次握手机制?

1.为了阻止历史连接

若网络状况不好的时候,客户端发送的SYN信号未能及时传输给服务器。当网络恢复时已经失效的SYN信号又到达服务器。如果只有两次握手便可建立连接,那么此时客户端就不知道这个连接是不是已经失效了的历史连接,从而导致错误的发生。三次握手时,客户端便可以根据上下文来判断此次连接是否为历史连接,避免错误的发生。

2. 为了避免服务器开启无用连接增加服务器开销

客户端设置了一个超时时间,超过了就重新发送一个TCP连接请求。如果没有第三次握手的话,服务端是不知道客户端是否收到服务返回的信息的,这样没有给服务器端一个创建还是关闭连接端口的请求,服务器端的端口就一直开着,等到客户端因超时重新发出请求时,服务器就会重新开启一个端口连接。那么服务器端上没有接收到请求数据的上一个端口就一直开着,长此以往,这样的端口多了,就会造成服务器端开销的严重浪费。


http://chatgpt.dhexx.cn/article/ciOyiNCM.shtml

相关文章

TCP的三次握手与四次挥手的全过程

三次握手 (1)第一次握手:建立连接时,客户端发送syn包(seqj)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号。 (2)服…

简述TCP的三次握手过程

TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(synj)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers) 第二次握…

TCP-三次握手

文章目录 三次握手简单示意图详细分析 一些思考为什么是三次握手?SYN 攻击什么是SYN 攻击?如何防止SYN 攻击?数据包丢失了该怎么办?初始序列号为什么随机产生?为什么 SYN 段不携带数据却要消耗一个序列号呢&#xff1f…

计算机网络之TCP三次握手

文章目录 计算机网络之TCP三次握手1.TCP三次握手过程2.TCP三次握手原因,而不是两次3.TCP三次握手原因,而不是四次4.TCP三次握手能携带数据吗5.三次握手连接阶段,最后一次ACK包丢失,会发生什么6.TCP 握手为什么是三次,为…

网络通信TCP协议三次握手

TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模…

栈溢出实例--笔记三(ret2libc)

栈溢出实例--笔记三(ret2libc) 1、栈溢出含义及栈结构2、ret2libc基本思路3、实战3.1、二进制程序如下3.2、查看栈结构3.3、第一次栈溢出3.4、第二次栈溢出 1、栈溢出含义及栈结构 请参考栈溢出实例–笔记一(ret2text) 栈溢出实例–笔记二&a…

ret2libc3

文章目录 ret2libc31.程序分析2.栈帧设计3.exp编写 ret2libc3 当前的ret2libc3:无system,无”\bin\sh“ 1.程序分析 首先file一下,发现是32位程序: checksec一下,发现没有开启pie ida分析程序: 发现有个Se…

PWN题型之Ret2Libc

文章目录 前言0x1 :使用前提条件0x2 :解题思路0x3 :32位程序libc题型模板0x4 :代码的解析0x5 :64位程序实例 前言 菜鸡总结,如有不对,请不吝赐教。 0x1 :使用前提条件 存在溢出条件…

【PWN · ret2libc】[2021 鹤城杯]babyof

Linux_64的经典ret2libc题目,有必要好好整理总结一下其中的流程和注意点 目录 前言 一、题目重述 二、exp(思考与理解在注释) 三、经验总结 攻击步骤: 注意要点 四、疑问 前言 64位Linux和32位Linux确乎有着关于参数传递上的不同&a…

运行不同版本libc

author: Tamako 先上两个美化的链接,不用zsh的 字体 样式,颜色 成品 切换libc 我的工具机是Ubuntu 18.04。 获取libc版本 这个很容易,通过运行libc就可以直接获取,比如buu的Ubuntu16.04 32位机使用的libc 当然有些libc运行…

ret2libc实战

title: ret2libc实战 date: 2021-05-13 22:00:00 tags: binary securitystudy reportret2libc comments: true categories:ctfpwn ret2libc是一个pwner必备的基础知识。 ret2libc为return to libc的缩写,我们需要执行libc函数里面的system("/bin/sh") …

WSL vhdx非root误删除libc.so.6

思路 由于不在root这种情况的特殊性,没有办法使用网上例如LDPRELOAD进行软连接。则使用linux挂载ext4格式的vhdx然后重新进行软链接 挂载vhdx wsl ubuntu 20.04的虚拟磁盘在windows下的这个目录,不同的发行版在package目录下的地址不一样 在Package目…

ret2libc

一、原理 payload padding1 address of system() padding2 address of “/bin/sh” Padding1 随意填充, 长度刚好覆盖基地址 长度与shellcode处的一样的方法 address of system() 是system在内存中的地址,用来覆盖返回地址 system()函数地址在哪里? 从动态库中获取,计…

libc

1. libc (1). libc是Standard C library的简称,它是符合ANSI C标准的一个函数库。 libc库提供C语言中所使用的宏,类型定义,字符串操作函数,数学计算函数以及输入输出函数等。 正如ANSI C是C语言的标准一样,lib…

为什么要避免使用 libc

【CSDN 编者按】libc 是 Linux 下的标准 C 库&#xff0c;也是初学者写 hello world 包时含有的头文件 #include < stdio.h> 定义的地方&#xff0c;后来其逐渐被 glibc 给取代&#xff0c;本文作者列出了为什么要避免使用 libc 的 20 个理由。 作者 |Chris Wellons 译者…

统计学⑤——假设验证

统计学系列目录&#xff08;文末有大奖赠送&#xff09;&#xff1a; 统计学①——概率论基础及业务实战 统计学②——概率分布&#xff08;几何&#xff0c;二项&#xff0c;泊松&#xff0c;正态分布&#xff09; 统计学③——总体与样本 统计学④——置信区间 一、什么是假…

统计基础(四)假设检验

Hypothesis Testing 1.中心极限定理Central Limit Theorem1.1 X ˉ \bar{X} Xˉ的抽样分布1.2 p ^ \hat{p} p^​的抽样分布1.3 二项的正态逼近 2.假设检验概念2.1 零假设与备则假设2.2 如何制定决策规则 3.假设性检验步骤3.1假设检验框架3.2术语定义3.3 proportion test步骤3…

连续性概率

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 欧拉常数连续型随机变数与概率密度函数正态分布标准正态分步检验t检验t假设 在我们将离散型数据的数值放大到无限&#xff0c;也就是讨论所谓的极限时&#xff0c; …

概率统计:离散分布和连续分布

1. 几种分布分类 (1) 离散分布&#xff1a;  伯努利分布&#xff08;零一分布&#xff0c;两点分布&#xff09;&#xff0c;二项分布&#xff0c;几何分布&#xff0c;泊松分布&#xff08;Poisson分布&#xff09; (2) 连续分布&#xff1a;  指数分布&#xff0c;正态分…

【概率论】随机试验、随机变量、离散型/连续型随机变量

1. 随机试验 满足以下3个条件的试验可以称为随机试验&#xff1a; 相同条件下可重复试验结果明确可知且不只一个试验前不知道哪个结果会发生 例如&#xff1a;我们平时做的抛硬币、掷骰子试验都是随机试验。以抛硬币试验为例&#xff1a;①该试验可以重复进行多次&#xff1…