当前位置: 首页 > article >正文

TCP三次握手/四次挥手

TCP三次握手

任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接

示意图
在这里插入图片描述
第一次握手:客户端PC发送一个SYN位置1(SYN=1代表请求服务端建立连接)的TCP报文发送给要建立TCP连接的Server,此时Seq序列号值为a(随机值),由于没有收到Server发来的任何报文,所以Ack确认序列号为0
第二次握手:Server收到SYN标置位报文后,会对报文进行应答,发给PC的应答报文不仅有SYN置位(此时Seq的序列号值b为随机值),还会有ACK置位来说明已经收到PC发送的报文(因为PC1发来SYN置位消耗了一个序号为a的TCP数据,因此Server收到后,Ack的序列确认号要使用a+1来进行确认)。
发送的确认报文段包含以下字段:
SYN=1,同意建立新连接(SYN置位)
Seq=b, 服务端给返回确认的报文,加上自己的序列号
Ack_seq=a+1, 表示已经收到seq=a的报文段,并期望后续接收a+1序号的报文
ACK=1 确认收到请求报文(ACK置位)

第三次握手:客户端收到服务器的主动请求建立连接和确认报文时,客户端无需应答服务器的确认报文,但需要对服务器主动请求做应答,所以只是ACK置位,SYN不置位,Seq=a+1(Server期望的序列号值),Ack_seq=b+1(
TCP连接建立
(注意:ACK标志位和ACK确认序列号是两码事,不要混淆)

抓包分析

在这里插入图片描述

第一次握手,SYN置位,Seq=2755731984

在这里插入图片描述

第二次握手,SYN、ACK置位,表示收到了客户端发来的请求,所以,Ack确认序列号=2755731984+1,同时发送自身的序列号Seq=3747234003

第三次握手,ACK置位,Ack的确认序列号=3747234003+1在这里插入图片描述

握手成功后,服务器(12.2)开始发送数据,共发送了四次,第一、二次都是9字节,第三、四次分别是28字节和11字节,所以总共发了9+9+28+11=57字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当客户端(12.1)收到服务器发送的数据后,回复一个Ack确认报文,予以确认,发送ACK为57+1

在这里插入图片描述

四次挥手

当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。

在这里插入图片描述

  1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
  2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。


http://www.kler.cn/a/2238.html

相关文章:

  • 【pycharm】远程服务器之后如何打开终端
  • Promise链式调用
  • ChatGPT之父:奥尔特曼
  • AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
  • 【JAVA】JAVA接口公共返回体ResponseData封装
  • CE之植物大战僵尸植物无冷却
  • C语言例程:学生成绩管理程序
  • 「Vue面试题」vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
  • define,typedef,inline 的区别
  • nginx 快速入门
  • IDEA一键构建Docker镜像
  • WPF UpdateSourceTrigger属性
  • 这一次,吃了Redis的亏,也败给了GPT
  • 冒泡 VS 插入 VS 选择——谁更胜一筹?(附排序源码)
  • 【iOS】—— ARC学习
  • 学习前端day01
  • 【百面成神】Redis基础11问,你能坚持到第几问
  • 瑞萨Renesas RA2L1 开发板测评(2)--LED闪烁
  • web前端框架——Vue的特性
  • Python程序员看见一个好看的手机壁纸网站,开撸!
  • Linux操作系统ARM体系结构处理器机制原理与实现
  • Vue面试题 路由守卫
  • 【Hive】HQL
  • 【2023新星计划 】博客创作指导 活动解读
  • ChatGPT应用场景与工具推荐
  • GPT-4是个编程高手,真服了!