TCP协议分析

2023-10-29

实验目的:

•了解TCP报文段的结构;

•掌握TCP数据流追踪的方法;

•理解TCP三次握手的基本过程;

•理解TCP连接终止的基本过程;

•理解TCP可靠数据传输的基本原理。

 TCP数据流追踪

我们以抓取京东的页面为例,分析整个抓包过程。首先为了筛选抓包抓到的数据,我们首先进行pingwww.jd.com或者jd的ip,如下所示:

然后使用wireshark进行抓取京东的数据包,同时使用浏览器进行访问京东。根据ping获取的ip的地址进行数据筛选如下所示:

 

在筛选出京东发送的内容之后就可以利用wireshark进行tcp数据流的追踪,如下所示:

这样我们就可以得到整个流的数据,接下来我们对数据进行分析。

 

TCP报文段的结构:

主要是由协议的头部和数据组成,协议的头部大部分是固定的,头部的主要结构如下所示:

接下来我们对获得到了tcp报文进行头部分析:

除了头部,接下来是tcp传输的数据部分,这里不再进行过多分析。

TCP三次握手

三次握手首先是客户端发送请求,第一条数据SYN=1,表明发起连接;与此同时客户端发送SYN=1,ack=1,表明收到请求,并请求连接;客户端再次发送ack=1表明确认应答。具体过程如下:

分析抓到的数据包如下:

TCP连接终止的基本过程:

为了更好地进行分析,这里我们采用实验一的数据进行分析,即通过建立ensp发送http的内容进一步分析四次挥手内容。如下所示:

首先是服务器发送fin=1的标志位,表明发送数据完毕,请求断开连接。然后客户端收到请求并应答,之后客户端发送请求断开,客户端发送收到请求。

第一次挥手:192.168.56.10向192.168.56.30发送携带FIN;Seq=160;Ack=308;的数据包,FIN表示请求断开连接,Seq=160表示这个数据包是第160段,Ack=308表示已经收到308段之前的数据包了,下一次请求第308段数据包开始发送。

第二次挥手:192.168.56.30向192.168.56.10发送携带Seq=308;Ack=161;的数据包,表示请求已经收到。

第三次挥手:192.168.56.10向192.168.56.30发送携带FIN;Seq=308;Ack=161;的数据包,表示请求断开连接。

第四次挥手:192.168.56.30向192.168.56.10发送携带Seq=161;Ack=309;的数据包,表示已经接收到请求。

为什么是四次挥手而不是三次:

TCP是全双工通信的,所以双方都可以主动断开。连接服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次。

TCP重置

Ackreset:

对于一个Syn包响应Ack Reset包,是在服务端接收到了客户端的建联请求,但是无法在请求的端口进行建联的场景操作,原因可能是:

1.请求建联的服务端并没有监听这个端口。

2.一些原因导致服务端无法在这个端口建联成功,如资源被耗尽,从而无法建立起新的连接。在一些设备上如果没有监听该端口,请求将会被默认丢弃,而不是返回Ack + Reset包,这是出于安全性的考虑,比如防火墙。

传输失败reset:

在三次握手建联之后,当一个网络传输包传输失败(没有接收到该包的ack包超时)时,会进行重传,并尝试等待一段时间ack包,当重传五次依然失败,就会reset该连接。这里的重传次数可以设置,默认为5。reset的原因是我们认为此时在两个网络节点间或希望发送ack包的节点上发生了问题,这也意味着本次连接变得不再有效。

 TCP可靠数据传输的基本原理

        数据超时重传和数据应答机制的基本前提是对每个传输的字节进行编号,即我们通常所说的序列号。数据超时重传是发送端在某个数据包发送出去,在一段固定时间后如果没有收到对该数据包的确认应答,则(假定该数据包在传输过程中丢失)重新发送该数据包。而数据确认应答是指接收端在成功接收到一个有效数据包后,发送一个确认应答数据包给发送端主机,该确认应答数据包中所包含的应答序列号即指已接收到的数据中最后一个字节的序列号加1,加1 的目的在于指出此时接收端期望接收的下一个数据包中第一个字节的序列号。数据超时重传和数据确认应答以及对每个传输的字节分配序列号是TCP 协议提供可靠性数据传输的核心本质。

 

如下所示是有包丢失问题,在一直请求确认1732之后,如果没有接受到,将会进行重传,这样就解决了丢包问题

因为每一个数据段都有自己的序列号,所以即使重传也不会打乱顺序,tcp会再次进行排序,最终得到完成数据。

Tcp Dup Ack xxx#y代表了数据段丢失TCP状态,正如上图中715号数据丢失,然后开始发送重新发送第一段报文。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP协议分析 的相关文章

  • 一个网工(网络工程师)七年的职业血泪史....

    前言 一个工作了七年的老网工 上家公司待了五年 现在这家公司也快三年了 分享一些我自己学习网络安全路上的一些经历 也算是帮大家少走些弯路 一 如何学习网络安全 1 不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全 一般
  • 【一份老网工珍藏多年的网络配置笔记,很重要!】

    01 交换机 路由器的几种配置模式及模式转换 1 用户模式 登录到交换机 路由器 时会自动进入用户模式 提示符为 switchname gt 在该模式下只能够查看相关信息 对 IOS的运行不产生任何影响 2 特权模式 用户模式下 键入 en
  • 浅谈能耗系统在马来西亚连锁餐饮业的应用

    1 背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题 利用计算机网络技术 通讯技术 计量控制技术等信息化技术 实现能源资源分类分项计量和能源资源运行监管功能 清晰描述各分店总的用能现状 实时监测各供电回路的电压 电
  • DreadHunger恐惧饥荒海上狼人杀服务器搭建架设教程windows系统

    DreadHunger 恐惧饥荒海上狼人杀服务器搭建架设教程windows系统 大家好我是艾西 在11月底我有发文 DreadHunger 恐惧饥荒海上狼人杀官方停服的消息 当时在官方的公告模版中公布了在2024年一月一日会将服务端公开让喜
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • tcpdump抓包

    tcpdump抓包 基本概念 1 类型的关键字 host 指明一台主机 如 host 10 1 110 110 net 指明一个网络地址 如 net 10 1 0 0 port 指明端口号 如 port 8090 2 确定方向的关键字 sr
  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过 send 方法来向服务器发送数据 并通过 onn
  • 搞懂 三次握手四次挥手

    计算机网络体系结构 在学习TCP 三次握手四次挥手之前 让我们先来看下计算机网络分层 主要分为OSI模型和TCP IP模型 OSI模型比较复杂且学术化 所以我们实际使用的TCP IP模型 以连接Mysql服务器为例理解这五层 应用层 应用层
  • 高防服务器什么意思

    高防服务器什么意思 为什么要用高防服务器 小编为您整理发布高防服务器什么意思的解读 高防服务器是指具备较高防御能力的服务器 能够抵御DDoS CC等网络攻击 高防服务器通常用于保护游戏 APP 金融 电商等业务 这些领域因为其业务特性 容易
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • QT中的常见布局

    一 QBoxLayout 包括QHBoxLayout QVBoxLayout QHBoxLayout QVBoxLayout 二 QGridLayout 三 QFormLayout 不能在mainwindow上直接布局 必须在mainwin
  • 概率论【随机事件和概率】--猴博士爱讲课

    第一课 随机事件和概率 1 6 无放回类题目 一次摸多个 例 1 盒子里有 3 绿 4 红共 7
  • 缓存的最佳实践

    1 本地缓存 分布式缓存 文件缓存 缓存就是数据交换的缓冲区 按照分布情况 可以分为 本地缓存 可用hashmap 注意并发 guava cache 推荐 等 对于一致性要求不高 访问频率高 总数据集小 重建成本低可以考虑使用本地缓存 本地
  • WiFi新伙伴802.11AY来了,你必知的3件事

    转自 https baijiahao baidu com s id 1615713457503805791 wfr spider for pc 本月早些时候 Wi Fi联盟宣布下一代Wi Fi标准将被称为 Wi Fi 6 它就是之前我们提到
  • BAT脚本卸载软件

    应用场景 学习过程中遇到需要通过bat脚本卸载指定软件 但是各软件对应的卸载命令一般都是不同的 实现方法 Windows软件在封装时一般会指定一个注册表项用来存放该软件的卸载方式 直接使用该方式即可 该注册表项的路径为 64位软件 HKEY
  • Java中如何从键盘输入char类型字符

    1 第一种方法 是用String类型替代char型 但是这种替代本质还是String类型 import java util Scanner public class Test1 public static void main String
  • 高频react面试题20道(附详解)

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 作者 前端要努力 原文 https github com whylisa front end interview 上次分享了一篇vue面
  • 宝塔定时计划任务

    选择shell脚本 选择执行周期 在脚本内容内写入 curl sS connect timeout 10 m 60 此处为地址链接
  • maven添加依赖

    maven添加依赖 进入maven仓库网站 https mvnrepository com 检索想要添加依赖的关键字 例如 spring webmvc 进入选择想要的依赖版本即可看到对应的maven坐标三要素 groupId artifac
  • Edit distance(二维动态规划题目)

    题目1 Edit Distance 传统动态规划问题 两个字符串不一样 对第一个字符每一个位置可以进行删除 修改或者增加 将第一个字符串改成第二个字符串 求最小的操作数 a Insert a character b Delete a cha
  • 如何突破java程序员瓶颈?十年Java架构师分享自己的辛酸成长历程

    不知不觉 金九银十已经过去一半了 小编最近也是收到了蛮多读者的私信与简历 发现了一个比较值得我注意的点 就是很多读者的简历千篇一律 工作五年经验的简历竟然和工作一年的简历并无二致 所以小编今天根据阿里的一位 十年Java架构师工作经验 和大
  • PostgreSQL 在psql中切换schema

    psql中切换schema 执行 set search path to test schema 后续在执行的操作都是针对test schema这个schema了
  • GPT4发布,有哪些升级和应用?

    引言 GPT 4是OpenAI GPT系列研究最新里程碑 GPT 4接受图像和文本输入 是一个大型多模态模型 接受图像和文本输入 输出为文本 本文结合OpenAI官方Blog 技术报告微软Copilot发布会内容 详细介绍GPT4的接入方式
  • 使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图

    使用Python EoN模拟网络中的疾病扩散模型 并结合matplotlib绘图 1 EoN是什么 2 安装 3 效果图 4 源代码 4 1 源码 4 2 源码 参考 写这篇博客源于博友的提问 好奇EoN是什么 然后安装研究了一下 1 Eo
  • 英语发音规则---ir字母组合发音规律

    英语发音规则 ir字母组合发音规律 一 总结 一句话总结 这个字母组合通常在单词中读 girl g l n shirt t n girl g l n 女孩 bird b d n 鸟 shirt t n 衬衫 skirt sk t n 裙子
  • Verilog基本语法初学

    一 语言要素 一 概述 1 空白符 White Space 空格 换行 换页 Tab等 是代码错落有致 提高可读性 2 注释 Comment 单行注释 多行注释 3 标识符 Identifier 字母 数字 最长1023个字符 4 关键字
  • QT窗口设置为无边框后背景色无法正常显示的解决方法

    widget类构造函数 setWindowFlags Qt FramelessWindowHint Qt WindowStaysOnTopHint setAutoFillBackground true auto p palette p se
  • 未能加载文件或程序集 请移除注册表值 [HKLM/Software/Microsoft/Fusion!EnableLog] 解决方法

    警告 程序集绑定日志记录被关闭 要启用程序集绑定失败日志记录 请将注册表值 HKLM Software Microsoft Fusion EnableLog DWORD 设置为 1 注意 会有一些与程序集绑定失败日志记录关联的性能损失 要关
  • transformer(下)机器翻译+pytorch实现

    transformer 下 机器翻译 pytorch实现 说在前面 实验环境 注意点 1 加载数据 建立input pipeline 2 位置编码 positional encoding 3 掩码 masking 4 scaled dot
  • TCP协议分析

    实验目的 了解TCP报文段的结构 掌握TCP数据流追踪的方法 理解TCP三次握手的基本过程 理解TCP连接终止的基本过程 理解TCP可靠数据传输的基本原理 TCP数据流追踪 我们以抓取京东的页面为例 分析整个抓包过程 首先为了筛选抓包抓到的