TCP协议 配合 Wireshark 分析数据

news2024/9/20 0:52:17

        在TCP连接中,无论是客户端还是服务端,都有可能成为发送端或接收端,这是因为TCP是一个全双工协议,允许数据在同一连接中双向流动

  • 客户端(Client)通常是指主动发起连接请求的一方。例如,在Web浏览中,用户计算机上的浏览器软件(客户端)会主动向Web服务器(服务端)发送连接请求。
  • 服务端(Service)是指被动等待连接请求的一方。如上述例子中的Web服务器,它会在某个固定端口监听来自客户端的连接请求。

TCP通讯时讯 :

Wireshark抓包完整通讯:

        下面我们先分析一下TCP是如何建立连接的。 

一、专有名词解析

1.1 序列号(Seq)

         在TCP(传输控制协议)中,序列号是一个32位的数值,用于唯一标识每个数据段中第一个字节的位置。当两个主机之间建立TCP连接时,它们会协商一个初始序列号,这个序列号随着每个数据段的发送而递增。序列号的主要作用在于确保数据包能够按照正确的顺序被接收方接收,即使在网络传输过程中出现了数据包的乱序或丢失,接收端也能够依据序列号将数据重新排列成原始的顺序。此外,序列号还与确认应答(ACKnowledgment)机制紧密相关,接收方通过发送带有特定确认号(即期望接收的下一个字节的序列号)的ACK包来告知发送方哪些数据已被成功接收。这种机制不仅支持数据的可靠传输,还帮助实现流量控制和连接的建立与终止过程。

1.2 窗口大小(Win)

        在TCP(传输控制协议)中,窗口大小(Win)是一个重要的参数,位于TCP报头中,用于实现高效的流量控制。窗口大小是一个16位的字段,它代表接收端当前允许发送端连续发送而不必立即等待确认的最大字节数。这个机制的核心在于,接收端通过告知发送端其缓冲区中可用的空间大小,来控制发送端发送数据的速度。当接收端的缓冲区接近满载时,它可以减小窗口大小甚至将其设为零,指示发送端暂停发送数据,以防数据溢出。相反,当接收端有更大的缓冲区空间可用时,它可以增大窗口大小,允许发送端发送更多的数据。通过这种方式,窗口大小动态调整,确保了数据传输的平滑性和高效性,同时也避免了缓冲区溢出造成的潜在数据丢失问题。此外,窗口大小机制还有助于提高传输效率,因为它允许发送端连续发送多个数据段而不必为每个数据段单独等待确认,从而减少了不必要的等待时间和网络拥塞的可能性。

1.3 长度 Length 与 Len

  • Length这是Wireshark中显示的整个TCP数据段的长度,包括TCP报头和数据部分
  • Len这是TCP数据段中数据部分的长度,以字节为单位。 

        Length的值反映了整个TCP数据段的大小,包括TCP报头和数据部分。在TCP通信的不同阶段,Length的值会根据数据段中包含的数据量和TCP报头的长度(包括任何选项字段)而变化。

        Len的值反映了TCP数据段中实际的数据负载的大小,不包括TCP报头。在TCP通信的不同阶段,Len的值会根据实际传输的数据量而变化。例如,在三次握手阶段,Len的值为0,因为这些数据段中没有实际的数据负载;而在数据传输阶段,Len的值会根据实际传输的数据量而变化。 

二、TCP建立连接(三次握手) 

  • 客户端:192.168.0.2:5000
  • 服务端:192.168.0.30:2021

2.1 第一次握手(SYN) 

源地址:192.168.0.2           目的地址:192.168.0.30
TCP Port numbers reused] 5000 -> 2021 [SYN] Seq=0 Win=4096 Len=0 MSS=1460

        解释:源地址192.168.0.2向目的地址192.168.0.30发送一个SYN包,请求建立连接。源端口是5000,目的端口是2021。序列号(Seq)为0,窗口大小(Win)为4096,最大段大小(MSS)为1460。

2.2 第二次握手(SYN-ACK)

源地址:192.168.0.30           目的地址:192.168.0.2
TCP 2021 -> 5000 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460

        解释:目的地址192.168.0.30向源地址192.168.0.2发送一个SYN-ACK包,确认收到SYN包并同意建立连接。序列号(Seq)为0,确认号(Ack)为1,窗口大小(Win)为8192。

2.3 第三次握手(ACK)

源地址:192.168.0.2           目的地址:192.168.0.30
TCP 5000 -> 2021 [ACK] Seq=1 Ack=1 Win=4096 Len=0

        解释:源地址192.168.0.2向目的地址192.168.0.30发送一个ACK包,确认收到SYN-ACK包,完成三次握手。序列号(Seq)为1,确认号(Ack)为1,窗口大小(Win)为4096。

2.4 综合分析
2.4.1 序列号(Seq): 
  • 在TCP三次握手的第一阶段,客户端向服务器发送一个SYN包,并附带一个初始序列号(Seq=0),这表示客户端希望从序列号0开始发送数据。
  • 服务器接收到SYN包后,回应一个SYN-ACK包,其中包含了自己的初始序列号(Seq=0),并确认了客户端的序列号(Ack=1),表示它已接收到客户端的序列号0,并期待后续的数据从序列号1开始。
  • 最后,客户端发送一个ACK包,确认号(Ack=1)表明客户端收到了服务器的序列号0,并准备接收从序列号1开始的数据。
2.4.2 窗口大小(Win): 
  •         在第一次握手中,客户端(源地址为192.168.0.2)发起了连接请求,发送了一个SYN包,并设置了窗口大小为4096(Win=4096)。这意味着客户端告诉服务器,它目前可以接收最多4096字节的数据。
  •         第二次握手中,服务器(源地址为192.168.0.30)回应了一个SYN-ACK包,它的窗口大小为8192(Win=8192)。这表明服务器愿意接收客户端的数据,并且它的接收缓冲区当前可以容纳最多8192字节的数据。同时,这也意味着服务器向客户端表明它可以处理比客户端所提议的更大的数据量。
  •         最后一次握手中,客户端发送了一个ACK包来确认收到了服务器的SYN-ACK,并且其窗口大小保持为4096(Win=4096)。这表明客户端再次确认它可以接收最多4096字节的数据,并且它准备好了接收后续的数据流。

        通过三次握手过程中的窗口大小信息交换,客户端和服务器协商了彼此的接收能力,并且为后续的数据传输做好了准备。这些窗口大小的值反映了双方在连接建立初期的流量控制策略,确保了数据传输的平稳性和可靠性。在整个握手过程中,窗口大小的动态调整确保了数据传输的效率,同时也防止了由于一方接收能力不足而导致的数据溢出或丢失。 

2.4.3 长度(Len)
  •         在第一次握手中,客户端发起连接请求,发送了一个SYN包,并设置了序列号为0(Seq=0)。这意味着客户端希望从0开始发送数据。由于这是一个SYN包,它并没有携带任何应用层数据,因此Len=0,表明该数据段中没有实际的数据负载。
  •         第二次握手中,服务器回应了一个SYN-ACK包,它的序列号也是0(Seq=0),表示服务器愿意从0开始接收数据,并确认收到了客户端的SYN包,期望接下来接收的序列号为1(Ack=1)。同样地,由于这是一个SYN-ACK包,它也没有携带任何应用层数据,所以Len=0,表示该数据段中也没有实际的数据负载。
  •         最后一次握手中,客户端发送了一个ACK包来确认收到了服务器的SYN-ACK,并且确认号为1(Ack=1),表示客户端已经收到了服务器序列号为0的数据,准备接收序列号为1之后的数据。这个ACK包也没有携带任何应用层数据,因此Len=0,再次表明该数据段中没有实际的数据负载。

        在TCP三次握手过程中,Len字段均为0,这是因为SYN、SYN-ACK和ACK数据段的主要功能是同步序列号、确认号以及连接参数,而不是传输用户数据。因此,在这三个阶段中,Len=0表明这些数据段仅包含控制信息,而没有实际的数据负载。这样的设计使得TCP能够在正式的数据传输之前完成必要的连接建立和参数协商工作,确保后续的数据传输能够顺利进行。 

三、TCP 数据交换

四、TCP 终止连接(四次挥手) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商家推广怎么利用C#发送视频短信

视频短信,这一融合了视频、音频与文本的创新通信方式,不仅革新了传统短信的单一形式,更以其独特的魅力带领着移动通信的新风尚。它以移动视频格式为载体,实现了信息传输的多元化,为用户带来不一样的通信体验。 支持免费…

windows安全中心永久卸载工具分享

使用方法 博客:h0ck1r丶羽~从零到一 卸载工具下载链接: 夸克网盘分享 一路回车,选项Y即可 耐心等待几秒种,自动重启 此时打开windows安全中心,已经完全不能使用了,响应的杀毒功能也关了 往期推荐 【渗透测…

简易STL实现 | Deque的实现

一种 在内存中存储元素的数据结构,它支持 在两端添加和删除元素(使用循环数组实现) 1、deque的特性(分段deque实现) 1、双端操作: deque支持在前端和后端执行快速的插入和删除操作 2、随机访问&#xff…

Colorfy v3.26 — 修改版,超过2000种图片涂色

Colorfy 是一款适用于安卓设备的涂色书应用,提供了超过 2000 种不同的图片供用户涂色,包括动物、花卉、城市风景等。每日更新新图,支持各种颜色和绘画工具,如水彩笔、铅笔、细线笔等。用户可以放大绘画区域进行精细绘画。此版本由…

Transformer-LSTM神经网络多输入单输出回归预测的MATLAB实现

在现代机器学习和深度学习领域,处理多维时序数据的需求越来越多。在这些应用场景中,我们常常面临需要同时处理多个输入变量,并预测一个输出变量的任务。这类问题通常被称为多输入单输出回归问题。为了有效地应对这类问题,结合 Tra…

在浮躁的时代,保持冷静和沉稳,心怀勇气

在大家阅读之前,我真诚地祝愿大家在浮躁的世界中找到属于自己的宁静与力量,让每一天都充满希望和快乐。 在这个快节奏、信息爆炸的时代,我们每个人都像是被卷入了一个永不停歇的漩涡,不断地被各种声音和画面拉扯着。有时候&#x…

一篇搞懂classpath,resources

Classpath(类路径)在Java开发中是一个非常重要的概念,它指定了Java虚拟机(JVM)和Java编译器寻找类文件和包的位置。具体来说,Classpath告诉Java执行环境在哪些目录下可以找到所要执行的Java程序所需要的类或…

如何打造基于Java SpringBoot和Vue的医院门诊智能预约平台?四步实现高效就医流程,整合MySQL数据库,优化用户体验。

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

【#第三期实战营闯关作业##LMDeploy 量化部署进阶实践 】

今天学习了《LMDeploy 量化部署进阶实践》一课,,收获很大。以下是记录复现过程及截图: 创建一个名为lmdeploy的conda环境 创建成功后激活环境并安装0.5.3版本的lmdeploy及相关包。 相关包install成功 创建好的conda环境并启动InternLM2_5-7…

Java 入门指南:Java 并发编程 —— 线程安全问题与锁机制

线程安全的概念 线程安全可以简单理解为在多线程环境下,一个方法或实例在并发执行时能够保持数据的一致性和完整性,不会因为多个线程的交替执行而导致错误的结果。 线程不安全的原因 线程不安全通常由以下几个原因引起: 原子性问题&#x…

让自家的智能语音助手实现todo任务的添加

我家的树莓派在成为了“智能语音助手”后,经过rasa学习训练,已经可以帮忙查日期/时间,查天气预报,进行一些简单的闲聊。但是,我希望它的功能还可以再强大些,比如说,可以帮我记录todo任务。为了实…

ProtoBuf 详解

1、初识ProtoBuf 序列化的概念: 举个例子: 我们在打电话的过程中,两个人可以通过电话听到对方的声音,这个过程就涉及到了序列化和反序列化。 相同的例子还有:网络通信、数据持久化等 常见的实现方式:JS…

upload-labs靶场通关攻略

一。 1.将一个php文件重命名为jpg文件 2.将这个jpg文件上传然后抓包吧jpg改成php接着放行 3.鼠标右键图片在新建标签页打开图片后去蚁剑连接 二 1.上传jpg文件然后抓包把jpg改成php放行 2.图片右键新建标签页打开图片,复制图片地址去蚁剑连接 三 1.文件重命名为1…

四款AI工具写完毕业论文,这才是真正的写作神器!(含教程)

在当今信息爆炸的时代,AI写作工具的出现极大地提高了写作效率和质量。特别是在学术论文的撰写过程中,AI工具不仅能够帮助快速生成论文草稿,还能优化内容质量、进行查重和排版,提供写作建议和创意灵感,极大地减轻了学者…

ChatGPT的全面写作革命:我们迎来效率飞跃还是创造力危机?

近年来,随着人工智能技术的持续发展,类似于ChatGPT的AI工具开始变革我们的工作模式。从撰写访谈大纲到文章框架,再到设计标题,许多人已逐渐依赖AI的辅助功能。不过,最近一家媒体采取了更加大胆的尝试:完全交…

Python基础 3 - 函数及数据容器

文章目录 一、函数概念1、函数介绍2、函数的定义3、函数的调用4、函数说明文档5、函数嵌套调用6、变量作用域1)局部变量2)全局变量3)声明全局变量 二、数据容器入门1、列表 (list)1) 列表的定义2) 调用列表元素3) 列表的方法4) 列表的特点5) …

债务重组的费用不菲,为什么现在越来越多的人还是愿意做债重?

债务重组,起初是专为优质企业客户量身打造的大额融资解决方案,周期紧凑,一个月见成效。但随着时代变迁,它悄然转型,成了负债繁重、网贷缠身者的“救星”。这类朋友通过债务重组,先是由专业机构垫付月供&…

论文阅读:VideoMamba: State Space Model for Efficient Video Understanding

论文地址:arxiv 摘要 为了解决视频理解中的局部冗余与全局依赖性的双重挑战。作者将 Mamba 模型应用于视频领域。所提出的 VideoMamba 克服了现有的 3D 卷积神经网络与视频 Transformer 的局限性。 经过广泛的评估提示了 VideoMamba 的能力: 在视觉领…

基于 Householder 变换的 qr 分解 算法与源码实现

1,算法描述 1.1 算法1 反射向量 计算 Householder 向量 给定 算法计算满足 v(1) 1.0 的 和 , 使得 是正交矩阵且 , 即,将m维向量 通过反射变换 反射至 轴上去。 1.2 算法2 QR 分解 Householder QR 分解 未完待补。。。。 2,源码…

什么是RS485总线?

1.什么是RS485总线? RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。 RS-485是美国电子工业协会(EIA)在1983年…