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

简介: 【网络安全 | 网络协议】结合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三次握手就完成了,客户端(本机)将与服务端建立起连接。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
网络协议 Unix iOS开发
Wireshark 4.6.0 发布 - 网络协议分析器
Wireshark 4.6.0 发布 - 网络协议分析器
924 0
Wireshark 4.6.0 发布 - 网络协议分析器
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
518 12
|
人工智能 Kubernetes 安全
网络安全公司前沿洞察:F5凭何成为网络安全领域的中流砥柱
网络安全公司前沿洞察:F5凭何成为网络安全领域的中流砥柱
597 4
|
机器学习/深度学习 数据采集 人工智能
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
GeneralDyG 是南洋理工大学推出的通用动态图异常检测方法,通过时间 ego-graph 采样、图神经网络和时间感知 Transformer 模块,有效应对数据多样性、动态特征捕捉和计算成本高等挑战。
457 18
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
603 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
网络协议 测试技术 Linux
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
373 0
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
5616 2
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们日常生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术和安全意识等方面的问题,并提供一些实用的建议和解决方案。我们将通过分析网络攻击的常见形式,揭示网络安全的脆弱性,并介绍如何利用加密技术来保护数据。此外,我们还将强调提高个人和企业的安全意识的重要性,以应对日益复杂的网络威胁。无论你是普通用户还是IT专业人士,这篇文章都将为你提供有价值的见解和指导。