网络安全基础技术扫盲篇 — 名词解释之“数据包“

news2024/11/18 21:24:15

用通俗易懂的话说:

数据包就像是一个信封。当你写信给某个人时,你将内容写在一张纸上,然后将纸叠起来并放入信封中,就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址,还有一些其他必要的信息,如邮戳。

在网络通信中,你的数据被分割成小块并放入每个数据包中。每个数据包都包含了一部分你要传输的数据,以及一些控制信息,如源地址、目标地址、校验和等。这些数据包具有类似于信封的结构。

类比于信件的传递,数据包也会经过一系列的网络设备,就像邮局、分拣中心等。每个网络设备都会查看数据包的地址信息,并选择最佳的路径将其转发到目标设备。当数据包到达目标设备时,它们被重新组装成完整的数据,就像打开一封信封并阅读信件的内容数据包就像是内容写在纸上的信件,通过邮递员(网络设备)在网络中传输,最终抵达目标设备,并被重新组装成完整的数据。

从专业领域视角理解

数据包是计算机网络中的基本单位,用于在网络中传输数据。它是将大块的数据分割成小块,每个小块都被封装在独立的数据包中,并携带了一些必要的控制信息。

数据包通常由首部、有效载荷尾部组成。

首部(Header):首部包含了数据包的控制信息,如源IP地址、目标IP地址、协议类型、端口号等。这些信息帮助网络设备正确地转发和处理数据包。

有效载荷(Payload):有效载荷是数据包中实际携带的数据内容。这可以是任何形式的数据,如文本、图片、音频或视频等。

尾部(Trailer):尾部通常包含了用于错误检测和校验的字段,比如校验和。校验和可以用于验证数据包在传输过程中是否发生了错误,以确保数据的完整性。

SSH会话数据包

下图是一个SSH建立远程会话大致的数据包

例如我们SSH密钥协商key过程中的相关数据包

其中就包含了时间、源IP、目的IP、源端口、目的端口及协商密钥等主要内容

这里可以简单看一下对应的数据包,主要是告诉对方自己支持的相关加密算法列表、MAC算法列表等。

kex_algorithms:密钥交换算法,用于生成会话密钥

server_host_key_algorithms:服务器主机密钥算法,可以采用的有哪些

encryption_algorithms_client_to_server:对称加密算法,可以采用的有哪些

mac_algorithms_clien_to_server: MAC 算法,主要用于保证数据完整性

HTTP请求数据包

接着我们再看一下比较常见的HTTP请求数据包,HTTP协议的数据包一般包含以下内容:

1. 首部(Header):HTTP数据包的首部包含了控制信息,它们是以键值对的形式组织的。常见的首部字段有:

   - 请求行字段(Request Line):包括请求方法(GET、POST等)、URL和HTTP协议的版本号。

   - 响应行字段(Response Line):包括状态码、状态短语和HTTP协议的版本号。

   - 请求头字段(Request Headers):包括可选的请求头,用于传递附加的信息,如Host、Accept、Content-Type等。

   - 响应头字段(Response Headers):包括可选的响应头,用于传递附加的信息,如Server、Content-Type、Content-Length等。

2. 空行:在首部和有效载荷之间,存在一个空行。空行用于分隔首部和有效载荷。

3. 有效载荷(Payload):HTTP数据包的有效载荷是请求或响应的实际数据内容。对于GET请求,有效载荷通常为空;而对于POST请求,有效载荷通常包含要传输的数据。

例如下图是一张访问百度主页的请求数据包

通过左边的请求,右边给出的响应包,经过解析后其实就是百度的首页面

抓包

抓包是指在计算机网络中通过截获、重发、编辑、转存等操作,分析网络数据包的过程。网络数据包是计算机之间进行通信时发送和接收的信息单元。通过抓包,可以查看和分析网络通信中传输的数据,以便诊断网络问题、监控网络流量或进行安全审计。

一、 burp — 抓包分析软件

1.  常用模块介绍

本文仅介绍抓包,剩余内容会在应用系统测评篇中放出,(例如利用burp暴力破解攻击,通过抓包查看前端使用了哪种算法等内容)

1.1 Proxy模块

Proxy代理模块作为 BurpSuite 的核心功能,拦截HTTP/HTTPS的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。

这个版本的burp可不设置代理,我们直接点击 Open Browser

打开浏览器输入网址后,即可抓到对应的数据包

点击放包后,浏览器才能访问到对应的页面

当然,如果觉得自带的不太好用,想用其他的浏览器抓包,那么一般是浏览器上安装对应的插件,这里我们以firefox 举例

打开firefox浏览器,点击右边的扩展菜单栏,选择管理扩展         

然后在寻找更多附加组件处输入:foxyProxy   回车

第一个就是,将它安装

安装完毕后,直接点击打开

选择“选项”

点击 Proxies   

burp如果设置未进行修改的话,为8080,如做了修改,则将上面的端口号改为修改后对应的端口

完成后点击 save 保存,然后鼠标点击一下,应用burp这个规则

此时我们的burp工具就能拦截到对应的数据包了

2. http数据包简介

例如我们抓取一个后台登陆的数据包,进行简单分析一下

POST /?m=admin&c=index&a=check HTTP/1.1

Host: 172.17.200.25

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0

Accept: application/json, text/javascript, */*; q=0.01

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Content-Length: 64

Origin: http://172.17.200.25

Connection: close

Referer: http://172.17.200.25/?m=admin&c=index&a=login

Cookie: PHPSESSID=sm571fs1h3ngkf1dfo96bkkv45

t0=admin&t1=admin&t2=spxc&token=1660f5b3f4493aa51e0a19fa788df146

下面对每个部分进行简单解释:

① 请求行:POST /?m=admin&c=index&a=check HTTP/1.1

   - POST:表示这是一个POST请求方法,用于向服务器提交数据。

   - /?m=admin&c=index&a=check:表示请求的路径和参数。在这个例子中,路径为根目录下的admin,控制器为index,方法为check。

   - HTTP/1.1:表示所使用的HTTP协议版本。

② 请求头部

   - Host: 172.17.200.25:表示服务器的主机名。

   - User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0:表示浏览器或客户端的相关信息,这里显示的是使用Firefox浏览器版本。

   - Accept: application/json, text/javascript, */*; q=0.01:表示客户端能够接受的响应内容类型。

   - Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2:表示客户端所支持的语言偏好。

   - Accept-Encoding: gzip, deflate:表示客户端能够接受的压缩编码方式。

   - Content-Type: application/x-www-form-urlencoded; charset=UTF-8:表示请求主体的数据格式为URL编码形式,字符集为UTF-8。

   - X-Requested-With: XMLHttpRequest:表示该请求是由XMLHttpRequest对象发起的。

   - Content-Length: 64:表示请求主体的数据长度。

   - Origin: http://127.17.200.25:表示请求的来源。

   - Connection: close:表示请求完成后关闭连接。

   - Referer: http://172.17.200.25/?m=admin&c=index&a=login:表示请求的来源网页。

   - Cookie: PHPSESSID=sm571fs1h3ngkf1dfo96bkkv45:表示客户端发送的Cookie数据,这里包含了名为PHPSESSID的会话ID。

③ 请求主体

t0=admin&t1=admin&t2=spxc&token=1660f5b3f4493aa51e0a19fa788df146:表示具体的表单数据,以URL编码形式展示。其中t0、t1、t2和token为参数名,后面的值为具体的参数值。t0表示输入的用户名、t1表示输入的密码、t2表示输入的验证码。

总结:该POST请求的目的是向服务器提交一些表单数据。请求头部提供了一些附加信息,如请求的主机名、浏览器信息、接受的响应类型等。请求主体中包含了具体的表单数据,也就是我们输入的帐号密码。这整一个数据包就是登录过程的请求。

二、Wireshark 网络抓包分析软件

Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。

打开Wireshark后,我们第一步要做的就是选择对应的网卡,一般正常情况下,笔记本选择"WLAN",有线连接选择对应的"本地连接"。如果是与虚拟机交互的,那么就要选择对应的虚拟机网卡。

选择完对应的网卡后,会直接抓取数据包,点击红色的按钮可关闭

这里我们演示去抓一个MySQL连接的数据包,在Wireshark捕获的状态下,使用Navicat 远程连接mysql

此时Wireshark界面会有非常多的数据,我们需要在过滤器内输入相应的命令,对数据包进行过滤

下面是一些常用的过滤条件示例:

① 过滤特定IP地址

   - 显示源IP地址为 192.168.1.100 的数据包:ip.src == 192.168.1.100

   - 显示目的IP地址为 192.168.1.200 的数据包:ip.dst == 192.168.1.200

   - 显示源或目的IP地址为 192.168.1.100 的数据包:ip.addr == 192.168.1.100

② 过滤特定协议

   - 显示所有TCP数据包:tcp

   - 显示所有UDP数据包:udp

   - 显示所有ICMP数据包:icmp

③ 过滤端口号

   - 显示源或目的端口号为 80 的数据包:tcp.port == 80 or udp.port == 80

④ 组合多个条件

   - 显示源IP地址为 192.168.1.100 并且目的端口号为 80 的TCP数据包:ip.src == 192.168.1.100 and tcp.dstport == 80

像上述 取MySQL登录过程的数据包,则需要筛选目的地址为172.17.200.13,端口号为3306的数据包,可以使用以下过滤条件进行过滤:

ip.addr == 172.17.200.13 and tcp.dstport == 3306

通过过滤,我们很快就能找到在这个登录过程中传输了哪些数据

例如我再抓取一个查询表的数据包

由于数据包比较多,我们进行筛选后,可以 右键 → 追踪流→ TCP流

Wireshark中的"追踪流"功能是用于分析和展示特定协议或会话的整个数据流的功能。当观察特定协议或会话时,Wireshark会将相关的数据包按照时间顺序进行排序并展示整个通信过程。通过"追踪流"功能,您可以按照报文的传输顺序,一次性地查看发送和接收的数据包,从而更好地理解协议的交互过程。

在这里我们可以直观的看到刚刚输入的数据,以及数据库返还给我们的数据,均是明文传输,统统被抓取到了

所以要设置SSL连接来保证数据传输过程中的保密性,如果Mysql开启了SSL,不采用SSL则会被拒绝

以上简单介绍了一下常用的抓包工具,仅作为介绍了解使用,更深入的用法需要自行搜索相应资料研究。

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

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

相关文章

交易员摩拳擦掌,就在今年夏天,极端气候引爆商品?

有史以来最严重的高温炙烤下,从农业到能源到航运都可能受到严重负面影响,大宗商品市场波动将大幅加剧。 2024年有望成为有史以来最炎热的一年,随着北半球步入夏季,世界各地都将遭受由全球变暖造成的极端高温困扰。极端天气不仅给民…

WalleWeb简化你的DevOps部署流程

walle-web:简化部署流程,提升开发效率,Walle Web让DevOps触手可及 - 精选真开源,释放新价值。 概览 Walle Web是一个功能强大且免费开源的DevOps平台,旨在简化和自动化代码部署流程。它支持多种编程语言,包…

Python魔法之旅-魔法方法(07)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

自动控制系统

文章目录 1234 1 最后是一个水位控制的 (感觉最好) 2 阻力增大了 就不够了跟古代行军打仗似的感觉设计的话 要考虑的更多 3 4 刚开始转速 为0这调压电路是 因为是直流有刷电机 代码部分 主要看main 其他和测速例程一样 这调电压 好像是和功率相关pfv 负…

Three.js 性能监测工具 Stats.js

目录 前言 性能监控 引入 Stats 使用Stats 代码 前言 通过stats.js库可以查看three.js当前的渲染性能,具体说就是计算three.js的渲染帧率(FPS),所谓渲染帧率(FPS),简单说就是three.js每秒钟完成的渲染次数,一般渲染达到每秒钟60次为…

AI视频教程下载:给数据分析师的生成式AI课

生成式人工智能知识现已成为数据科学的一项基本技能。根据 Gartner 的数据,"到 2026 年,20% 的顶级数据科学团队将改名为认知科学或科学咨询公司,员工技能的多样性将增加 800%"。 考虑到这一行业趋势,IBM 为您带来了这…

C++ | Leetcode C++题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 max(buy1, -prices[i]);sell1 max(…

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤&#xff1a; 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 你需要从受信任的SSL证书颁发机构中选择一个&#xff0c;比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…

Linux综合实践(Ubuntu)

目录 一、配置任务 1.1 配置该服务器的软件源为中科大软件源 1.2 安装相关软件openssh-server和vim 1.3 设置双网卡&#xff0c;网卡1为NAT模式&#xff0c;网卡2为桥接模式(桥接模式下&#xff0c;使用静态ip&#xff0c;该网卡数据跟实验室主机网络设置相似&#xff0c;除…

【调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站】

调试笔记-系列文章目录 调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站 文章目录 调试笔记-系列文章目录调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站 前言一、调试环境操作系统&#xff1a;OpenWrt 23.05.3调试环境调试目标…

MVC、MVP 和 MVVM 架构总结

MVC、MVP 和 MVVM 是常见的软件架构模式&#xff0c;主要用于组织应用程序的结构&#xff0c;特别是在用户界面和业务逻辑之间进行分离。以下是对它们的详细解释&#xff0c;包括它们的差异、优缺点。 MVC&#xff08;Model-View-Controller&#xff09; 结构 Model&#xf…

更新mirh connect 内置derby数据库密码

更新mirh connect 内置derby数据库密码 1、下载derby连接客户端 https://archive.apache.org/dist/db/derby/ 选择任意版本即可&#xff0c;比如 https://archive.apache.org/dist/db/derby/db-derby-10.14.2.0/db-derby-10.14.2.0-bin.zip 2、连接mirh文件数据库 1、把mi…

详解Spring IoCDI(二)

目录 承接上文&#xff1a;详解Spring IoC&DI &#xff08;一&#xff09; 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…

kettle 使用动态变量名定义变量

name是变量&#xff0c;value 值也是变量 我需要把name作为变量名&#xff0c;value作为变量值&#xff1b; 在kettle中&#xff0c;使用javascript脚本 key与lastVsxzl都是变量 //Script here setVariable(key,lastVsxzl,r);var rgetVariable(key,r); Demo 1、从记事本里面…

香橙派 AIpro上手体验并验证车道线识别算法

香橙派 AIpro上手体验并验证车道线识别算法 1.前言 最近入手了一块香橙派AIpro&#xff0c;体验了一下&#xff0c;感觉还不错&#xff0c;在这里分享给大家&#xff0c;大家可以做个参考。 2.开箱 整套产品包含一块主板、一个电源插头和一条双端Type-C的数据线&#xff0c;…

【会议征稿】2024年无人驾驶与智能传感技术国际学术会议(ADIST 2024)

2024年无人驾驶与智能传感技术国际学术会议&#xff08;ADIST 2024&#xff09;将于2024年6月28-30日在珠海召开。ADIST 2024旨在搭建学术资源共享平台&#xff0c;加强中外学术合作&#xff0c;促进自动驾驶和智能传感技术的发展&#xff0c;促进全球研究人员、开发人员、工程…

LTspice仿真中设置电阻随时间变化的方法

背景&#xff1a; 笔者找了很多资料都没有看到如何设置电阻、电容等参数随时间变化。但在实际模拟中&#xff0c;总会遇到需要模拟这些量的变化。故撰写此文&#xff0c;供大家参考。 除了模拟随时间变化外&#xff0c;同样的思路也可以模拟随其他变量变化 效果展示 设置电…

【网络研究观】-20240531

战争揭开美国武器优势的面纱 随着俄军在哈尔科夫地区稳步推进&#xff0c;乌克兰战争对美国国防机器而言是一场灾难&#xff0c;这一点越来越明显&#xff0c;这不仅是因为我们的援助未能挽救乌克兰的撤退和可能的失败。更重要的是&#xff0c;这场战争无情地暴露了我们国防体…

内网不能访问域名怎么办?

在网络应用中&#xff0c;我们常常遇到内网不能访问域名的问题。这是由于内网环境限制导致的&#xff0c;内网无法直接连接到公网&#xff0c;因而无法访问互联网上的域名。我们可以利用一些特殊技术和工具来解决这个问题。 天联组网技术的应用 天联组网是一种非常受欢迎的解决…

JS数组怎么去重?| JavaScript中数组去重的14种方法

目录 一、利用for循环嵌套去重 二、利用splice() for循环嵌套&#xff08;ES5中最常用&#xff09; 三、利用indexOf() for循环去重 四、利用sort() for循环去重 五、利用includes() for循环去重&#xff08;ES7&#xff09; 六、利用Object键值对及其hasOwnProperty…