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

【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手

前言

TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时,需要进行三次握手,防止因为网络延迟、拥塞等原因导致的数据丢失或错误传输,确保双方都能够正常通信。

TCP三次握手在Wireshark数据包中是如何体现的?在此之前,先熟悉TCP三次握手的流程。

TCP三次握手流程

1.客户端发送 SYN 请求报文:

  • 客户端选择一个初始序列号(seq)并将 SYN 标志位置为 1,表示请求建立连接。
  • 客户端将该 SYN 报文发送给服务端,并进入 SYN_SET 状态,等待服务端的响应。

2.服务端接收 SYN 请求报文:

  • 服务端接收到客户端发来的 SYN 请求报文。
  • 服务端将 SYN 标志位置为 1,ACK 标志位置为 1,表示同意建立连接。
  • 服务端选择一个自己的初始序列号(seq)并分配资源,发送 SYN+ACK 响应报文给客户端。

3.客户端接收 SYN+ACK 响应报文:

  • 客户端接收到服务端发来的 SYN+ACK 响应报文。
  • 客户端将 ACK 标志位置为 1,表示确认服务端的同意。
  • 客户端将该 ACK 报文发送给服务端,建立起连接。

完成以上三个步骤后,TCP 连接建立成功,双方可以开始进行数据传输。

Wireshark抓包分析

第一步:开启抓包,ping百度

在这里插入图片描述
第二步:过滤目标主机地址

在这里插入图片描述
可以看到三个TCP数据包,接下来我们逐个分析。

第一次握手数据包

在这里插入图片描述
由上图可以看到,seq为0,表示客户端的初始序列号为0;ack为0,代表本机还未确认服务端的同意;syn为1并进入set状态,说明本机请求建立连接并等待baidu.com的响应

第二次握手数据包

在这里插入图片描述
由上图可以看到,seq为0,表示服务端的初始序列号为0;ack为1,代表baidu.com同意接受连接;syn为1并进入set状态,说明baidu.com等待本机的响应

第三次握手数据包

在这里插入图片描述
由上图可以看到,seq为1,表示客户端期望收到的下一个序列号是1;ack为1代表本机同意接受连接;syn为1并进入set状态,表示确认服务端(baidu.com)的同意(即确认服务器的序列号为0)

至此,TCP三次握手就完成了,客户端(本机)将与服务端建立起连接。

http://www.lryc.cn/news/268078.html

相关文章:

  • 钦丰科技(安徽)股份有限公司携卫生级阀门管件盛装亮相2024发酵展
  • Python模拟动态星空
  • 最新技术整理3款开源免费直播推流工具,实现实时视频推流、视频拉流,目标端可以是服务器、云平台、移动设备等(附源码)
  • shell ——数组
  • GO语言基础笔记(五):包的介绍
  • 【Unity6.0+AI】Sentis加载模型识别手写数字案例实现
  • VScode跑通Remix.js官方的contact程序开发过程
  • 讲座思考 | 周志华教授:新型机器学习神经元模型的探索
  • docker构建镜像及项目部署
  • ARM串口通信编程实验
  • MyBatis的延迟加载(懒加载)
  • 嵌入式-stm32-用PWM点亮LED实现呼吸灯
  • C语言初学7:循环
  • 力扣69. x 的平方根
  • go语言学习计划。
  • 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
  • docker run --help帮助文档
  • 【Qt-Timer】
  • Java多线程技术五——单例模式与多线程-备份
  • Seem环境安装
  • java八股jvm
  • 家校互通小程序实战开发02首页搭建
  • 使用matlab制作声音采样率转换、播放以及显示的界面
  • FPGA-AMBA协议、APB协议、AHB规范、AXI4协议规范概述及它们之间的关系
  • NI VeriStand中的硬件I / O延迟时间
  • YoloV8的目标检测推理
  • c语言中数据结构
  • 【GitHub精选项目】抖音/ TikTok 视频下载:TikTokDownloader 操作指南
  • Java开发框架和中间件面试题(3)
  • React面试题