从微观世界的RST包文视角助力企业网络应用故障排查和优化
1. 前言
随着互联网的普及和发展,各行业的业务和应用越来越依赖于网络。然而,网络环境的不稳定性和复杂性使得出现各种异常现象的概率变得更高了。这些异常现象会导致业务无法正常运行,给用户带来困扰,甚至影响企业的形象和利益。因此,需要一种能够快速诊断和定位网络异常问题的解决方案。
网络抓包分析技术是一种常用的网络调试工具,它可以捕获网络数据包,并提供详细的数据分析和统计信息,帮助用户快速定位网络问题。其中,TCP RST报文是一种常见的网络异常现象,它通常表示连接被重置或中断,导致业务无法正常运行。
针对这种问题,NetInside全流量回溯分析解决方案(以下简称NetInside全流量),通过探针设备旁路收集和存储指定链路的全部流量数据,实现无人值守,对关键业务系统、应用和网络链路进行7×24小时、全方位的流量监控,智能学习关键性能指标的基线值,当出现网络异常、业务或网络相关状态达到阈值时,进行主动预警,并可以实时/事后对需要的原始包进行下载和分析解码,快速定位问题原因。
NetInside用以人为本的理念为信息部门量身打造了新一代全流量回溯分析系统,充分利用网络数据包建立覆盖重要链路、关键设备端口、核心服务的全面监控视图,并且按照网络部门的工作流程组织功能与操作,使其能够广泛适用于各种需要场景。
以服务为导向的全流量方法使NetInside系统能够直接体现网络基础架构对业务应用的支撑能力,提供实时故障诊断、告警触发、事后应用响应深度分析功能。整个系统从根本上简化了网络故障诊断、新应用和服务的部署以及降低了运营成本,并提供快捷的方式来实现故障定位。为分析网络攻击、定位异常,评估、判定用户体验、应用性能和网络服务质量提供可以信赖的数据依据。依托真实的网络流量,快速发现、定义应用,并提供数据正确性、变更结果验证能力,大大提升网络流量的可视化覆盖率和工作效率。运用先进的数据统计分析技术,发现、告警等功能极大简化了过去繁冗复杂的操作过程。
2. RST介绍
TCP RST(Reset)是一种TCP协议中的控制报文,位于TCP协议的传输层,用于终止TCP连接或拒绝非法连接。TCP RST通常由TCP连接的一方发送,它可以立即终止TCP连接,并通知另一方连接已经被重置。
TCP RST报文位于TCP报头中的控制位字段(Control Bits Field),该字段占据一个字节,它的第6位(RST)用来表示TCP RST报文。下面是一个TCP报头的示意图:
可以看到,TCP报头中的第13个字节(即控制位字段)的第6位表示TCP RST报文。当该位被设置为1时,表示发送TCP RST报文。
3. 常见产生RST的原因及确认方法
常见产生TCP重置数据包情况和原因有如下7种情况。需要注意的是,TCP重置数据包可能会对正常的TCP连接产生影响,因此应该谨慎使用。如果不确定是否应该发送TCP重置数据包,请先咨询网络管理员或安全专家。
3.1. 防火墙或网络设备对TCP连接的干预
防火墙或网络设备对TCP连接进行干预时,可能会发送TCP重置数据包来终止连接。
原因判断:可以通过查看防火墙或网络设备的日志,确认是否存在对TCP连接的干预行为。如果发现有TCP连接被终止且收到了TCP重置数据包,那么很可能是防火墙或网络设备发送的。
3.2. 端点认为该连接已经失效或存在异常
当TCP连接的一个端点认为该连接已经失效或存在异常情况时,它可以发送TCP重置数据包来终止连接。
原因判断:可以通过查看TCP连接的日志或网络抓包工具,确认是否存在TCP重置数据包。如果发现某一方发送了TCP重置数据包,那么很可能是该方认为连接已经失效或存在异常情况。
3.3. 攻击者可能会发送TCP重置数据包
在某些攻击中,攻击者可能会发送TCP重置数据包来终止连接或欺骗接收方。
原因判断:可以通过查看网络抓包工具,确认是否存在异常的TCP重置数据包。如果发现TCP重置数据包的源地址不明或与正常通信的IP地址不符,那么很可能是遭受攻击了。
3.4. 网络拥塞
当网络拥塞时,路由器或防火墙可能会丢弃部分数据包,从而导致TCP连接超时或失效。此时,连接的一方可能会发送TCP重置数据包来终止连接。
原因判断:可以通过查看网络抓包工具,确认是否存在丢失的数据包或TCP连接超时。如果发现TCP重置数据包是在网络拥塞期间发送的,那么很可能是因为连接的一方认为连接已经失效。
3.5. 程序异常
当应用程序或操作系统出现异常时,可能会导致TCP连接受损或失效。此时,连接的一方可能会发送TCP重置数据包来终止连接。
原因判断:可以通过查看应用程序或操作系统的日志,确认是否存在异常行为或错误信息。如果发现某一方发送了TCP重置数据包,那么很可能是由于程序异常导致的。
3.6. 超时
当TCP连接长时间没有活动时,可能会被认为已经失效。此时,连接的一方可能会发送TCP重置数据包来终止连接。
原因判断:可以通过查看TCP连接的日志或网络抓包工具,确认连接是否长时间没有活动。如果发现某一方发送了TCP重置数据包,且连接长时间没有活动,那么很可能是由于超时导致的。
3.7. 非法连接
当某些恶意程序或攻击者尝试建立非法的TCP连接时,连接的一方可能会发送TCP重置数据包来阻止该连接。
原因判断:可以通过查看网络抓包工具,确认是否存在非法的TCP连接请求或连接行为。如果发现某一方发送了TCP重置数据包,那么很可能是由于遭受非法连接请求导致的。
4. RST案例分析
下面将通过两个现场真实案例进行RST异常行为分析,快速帮助用户解决疑难问题。
4.1. 某省公安案例
4.1.1. 背景
集成指挥平台中有定时任务定时传输数据到总队,总队定时下发数据到市交警支队。市交警支队发现定时任务一直出现执行失败的错误。市交警支队和总队联系,说需要市交警支队排查一下自身网络,前两天在应用服务器上面抓了定时任务的数据包,发现在连接过程中一直被RST。现在不能确认在哪个环节被RST。
本次分析采用NetInside流量分析系统,已部署到业务环境,使用流量分析系统提供实时和历史原始流量。本次分析重点针对集成定时任务故障排查,以供设置取证、性能分析、网络质量监测以及深层网络分析。
4.1.2. 环境部署
市交警支队和交警总队采用专网专线方式互联,在市交警支队安全域集成指挥平台的核心交换机位置,将流量旁路方式镜像给NetInside流量分析系统,通过NetInside对定时任务流量进行采集和分析。
4.1.3. 分析时间
报告分析时间范围为:2023-05-19日白天工作时段。
4.1.4. 分析目的
针对集成指挥平台中定时任务出现执行失败原因进行分析,找出问题的根本原因,并采取相应的措施来解决这些问题。
通过分析,可以确定哪些因素导致了定时任务执行失败,如网络连接问题、系统故障、配置错误等。这样做可以帮助管理员及时发现和解决问题,确保集成指挥平台的正常运行。查找并验证确认是否存在业务系统健康问题。
4.1.5. 详细分析
以下对本次故障详细分析。
4.1.5.1. 流量传输存在明显时间间隔
通过分析系统秒级数据分布趋势发现,10.61.132.78(以下简称78)和服务器10.56.81.80(以下简称80)之间的数据传输存在明显的、有规律性的传输间隔现象。这极有可能受到某些未知因素的影响造成。
4.1.5.2. 数据传输间隔现象深入分析
从分析系统下载对应的数据包,发现大量的RST报文,如下图。
随机查看上图中一个会话信息(基于5元组的对话),发现存在异常现象。
下图中,Frame 19695之前的所有报文是一个正常POST请求操作,但Frame 20756和20757明显与前面的连接没有关系。
继续分析。
正常数据传输中,80到78流向的数据包TTL为119,如下图。
再看Frame 20756,同样是80到78流向的数据包,但TTL却为124。
同时,这个RST包还含有更多的应用层信息,可供参考。
而Frame 20757则是对上面这个RST报文的RST。
经过分析,在时长约43分钟的时间范围内,共出现了1846次类似的RST。
4.1.5.3. 异常RST对数据传输的影响
分析发现,当出现上述RST后,78会停滞一段时间,才会再次向80发起TCP握手请求,继而进行POST数据操作。
以下是随机查看的几个数据为证。
异常RST后,78等待8.19秒,才向80发起连接建立请求。
异常RST后,78等待13.14秒,才向80发起连接建立请求。
异常RST后,78等待34.34秒,才向80发起连接建立请求。
异常RST后,78等待58.43秒,才向80发起连接建立请求。
不再一一列举。
4.1.6. 分析结论
78与80之间数据传输时,会出现大量的未知系统或节点的RST数据包,该数据包同时会对78发起请求造成明显的时延作用。
4.1.7. 解决建议
由于异常数据包中含有地址及提示信息,可以根据这个信息定位发送RST的设备。也可以根据TTL信息,计算并定位该设备所处位置。
对发出异常RST的设备进行策略配置和优化。
4.1.8. 问题验证
针对异常RST进行分析,确定是由终端管控软件发出,管理人员对该软件做了相应设置,让其不再发出RST报文。
从NetInside流量分析系统中下载策略修改后,78与80之间的数据传输报文,打开查看,不再出现异常的RST报文。
同样,在一段时间内,一个异常RST都不再出现,如下图。
这说明终端管控软件策略设置有效。
4.1.9. 异常前后效率对比
最后,对异常前后,流量传输特征进行分析和比较。
4.1.9.1. 流量传输状况对比
以下是策略调整前78和80之间的数据传输情况。
以下是策略调整后78和80之间的数据传输情况。
通过对比可以看到,策略调整后,数据传输明显加快,且中间没有出现明显的间隔和空白等待时段。
4.2. 某电气化局案例
4.2.1. 背景
电气化局的用户反馈,近期视频系统在使用过程中出现频繁中断的情况,这种情况影响到用户的视频体验和工作效率。
针对此问题,我们将NetInside流量分析系统部署到电气化局机房,使用流量分析系统提供实时和历史原始流量。重点针对电气化局的视频系统进行故障分析,找出视频系统中断的具体原因。
4.2.2. 故障现象
通过用户反馈2023年2月8日7点20分出现视频中断情况,通过视频系统管理端看到视频流量有断开的情况,如下图:
4.2.3. 环境部署
在内网中心机房的视频区的汇聚交换机位置,将相关流量旁路方式镜像给NetInside流量分析系统,通过NetInside对所有视频流量进行采集和分析。
4.2.4. 故障分析
针对此问题,我们来进行详细分析。
4.2.4.1. 分析设备流量采集图
与现场网络人员沟通,了解真实网络结构,以下是视频会议的流量采集图:
流量采集图主要为:1台视频系统客户端,1台视频系统服务器,1台核心交换机;
视频系统客户端和视频系统服务器下方标注显示对应的MAC地址;
核心交换机分别标注显示对应的两个口的MAC地址;
核心交换机通过镜像方式将流量给到流量分析系统。
4.2.4.2. 分析思路
1、流量分析系统里找到异常数据包,下载数据包。
2、打开数据包,找到异常时间点的数据包内容。
3、分析视频数据包的协议和详细内容。
4.2.4.3. 详细分析
数据包下载
根据流量分析系统迅速找到异常节点,对数据包进行下载。
流量分析
流量分析系统对镜像后的流量进行去重功能,所以分析系统仅获取10.21.106.11发送到核心交换机的流量,及10.21.30.106发送到核心交换机上的流量。
正常传输
通过数据包分析看到,客户端10.21.106.11发给服务器10.21.30.106的mac地址为:Src:HuaweiTe_XX:XX:26 ————> dst:HuaweiTe_XX:XX:01。
通过数据包分析看到,服务器10.21.30.106发给客户端10.21.106.11的mac地址为:Dst:HuaweiTe_XX:XX:0f <———— src:EdgeCore_XX:XX:a8。
数据包内的TTL为64。
同时数据包带有VLAN协议,VLAN ID为59。
异常传输
通过数据包分析看到,视频中断时间点发现RST,数据包MAC地址异常,服务器10.21.30.106发给客户端10.21.106.11的mac地址为:src:HuaweiTe_XX:XX:01,dst:HuaweiTe_XX:XX:26,正常应为src:EdgeCore_XX:XX:a8,dst:HuaweiTe_XX:XX:0f。
数据包内的TTL为127。
未发现VLAN协议。
以上对比发现,异常数据包MAC地址异常,没有VLAN协议,TTL跳数异常。
4.2.5. 分析结论
通过以上系统分析发现,出现视频中断时,网络里出现异常的RST的数据包,致使通信双方TCP连接中断。
4.2.6. 建议
通过对电气化局的视频数据分析,发现网络上存在异常报文,建议结合网络实际情况做进一步分析。
5. 总结
除了网络抓包分析技术,还有其他的方法可以帮助企业快速诊断和定位异常现象,例如基于人工智能和机器学习的异常检测技术。这种技术可以通过对业务数据进行分析,学习正常的业务模式和规律,然后检测出异常数据,并进行相应的处理。这种方法具有高精度和高效率的优势,可以帮助企业快速发现和解决问题。
综上所述,网络异常问题是各行业都可能遇到的问题,需要一种能够快速诊断和定位的解决方案。网络抓包分析技术是一种常用的解决方案,它可以帮助用户快速定位网络问题。除此之外,还有其他的方法可以帮助企业快速诊断和定位异常现象,例如基于人工智能和机器学习的异常检测技术。
相关文章:
从微观世界的RST包文视角助力企业网络应用故障排查和优化
1. 前言 随着互联网的普及和发展,各行业的业务和应用越来越依赖于网络。然而,网络环境的不稳定性和复杂性使得出现各种异常现象的概率变得更高了。这些异常现象会导致业务无法正常运行,给用户带来困扰,甚至影响企业的形象和利益。…...
企业微信开发,简单测试。
企业微信开发,参考文档: https://github.com/wechat-group/WxJava/wiki...
element日期选择设置默认时间el-date-picker
<el-date-pickerv-model"rangeDate"style"width:350px"type"daterange"value-format"yyyy-MM-dd"change"dataChange"start-placeholder"开始日期"end-placeholder"结束日期"></el-date-picker…...
AB32VG:SDK_AB53XX_V061(3)IO口复用功能的补充资料
文章目录 1.IO口功能复用表格2.功能映射寄存器 FUNCTION03.功能映射寄存器 FUNCTION14.功能映射寄存器 FUNCTION2 AB5301A的官方数据手册很不完善,没有开放出来。我通过阅读源码补充了一些关于IO口功能复用寄存器的资料。 官方寄存器文档:《 AB32VG1_Re…...
UnityVR--组件10--UGUI简单介绍
目录 前言 UI基础组件 1. Canvas 2. EventSystem 3. Image 4. Text/TextMeshPro/InputField 5. Button控件 其他 前言 UGUI是Unity推出的新的UI系统,它与Unity引擎结合得更紧密,并拥有强大的屏幕自适应和更简单的深度处理机制,更容易使用和…...
k8s 探针
1.前言 Kubernetes探针(Probe)是用于检查容器运行状况的一种机制。探针可以检查容器是否正在运行,容器是否能够正常响应请求,以及容器内部的应用程序是否正常运行等。在Kubernetes中,探针可以用于确定容器的健康状态,如果容器的健…...
【爬虫】4.4 Scrapy 爬取网站数据
目录 1. 建立 Web 网站 2. 编写 Scrapy 爬虫程序 为了说明 scrapy 爬虫爬取网站多个网页数据的过程,用 Flask 搭建一个小型的 Web 网站。 1. 建立 Web 网站 (1)books.html <!DOCTYPE html> <html lang"en"> <h…...
PureComponent和Component的区别和底层处理机制
PureComponent和Component都是React中的组件类,但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类,它的shouldComponentUpdate方法默认返回true,也就是说,每次调用setState或forceUpdate方法都会引发组件重新…...
python3 爬虫相关学习9:BeautifulSoup 官方文档学习
目录 1 BeautifulSoup 官方文档 报错暂时保存 2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容 2.1 代码和运行结果 2.2 用beautiful 打开 本地 html 文件 2.2.1 本地html文件 2.2.2 soup1BeautifulSoup(html1,"lxml") 2.3 用reque…...
物联网Lora模块从入门到精通(九)Flash的读取与存储--结题
一、前言 这将是"物联网Lora模块从入门到精通"系列的最后一篇文章,相信各位同僚通过前面八篇文章的分享已经极好的掌握了Lora模块的编程,本文的Flash的读取与存储将是Lora模块开发的最后一块,感谢大家的陪伴与支持! 希望…...
STM32MP157_PRO开发板的第一个驱动程序
文章目录 目的:为什么编译驱动程序之前要先编译内核?编译内核编译设备树编译安装内核模块编译内核模块安装内核模块到 Ubuntu 的NFS目录下备用 安装内核和模块到开发板上编译 led 驱动在开发板安装驱动模块下载驱动程序安装驱动模块 目的: 在…...
你“被”全链路了么?全链路压测实践之理论
要说当下研发领域最热门的几个词,全链路压测 肯定跑不了。最近的几次大会上,也有不少关于全链路的议题。之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测。今天我们就来聊聊全链路压测,但本文不会涉…...
基于Tensorflow+SDD+Python人脸口罩识别系统(深度学习)含全部工程源码及模型+视频演示+图片数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Anaconda 环境搭建 模块实现1. 数据预处理2. 模型构建及算法实现3. 模型生成 系统测试1. 训练准确率2. 运行结果 工程源代码下载其它资料下载 前言 在当今全球范围内,新冠疫情对我们的生活方式带来了…...
abc200 D 鸽巢原理
题意:https://www.luogu.com.cn/problem/AT_abc200_d 思路:对于一个序列最多有多少个模数,其实就是子序列个数,所以当子序列个数超过200是那么答案一定存在,那么我们就可以直接枚举了,所以我们直接枚举前八…...
QT day1 (图形界面设计)
要求: 功能函数模块 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {qDebug("%s","hello world");//qDebug() << &qu…...
JS逆向系列之猿人学爬虫第9题-动态cookie2
文章目录 目标参数流程分析js代码Python调用测试目标 https://match.yuanrenxue.cn/match/9参数流程分析 二次请求cookie携带m 第一次请求响应内容格式化之后是这样的: < body > < script src = "/static/match/safety/match9/udc.js" > <...
Java ~ Reference ~ FinalizerHistogram【总结】
前言 文章 相关系列:《Java ~ Reference【目录】》(持续更新)相关系列:《Java ~ Reference ~ FinalizerHistogram【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Referenc…...
【MySQL】一文带你了解SQL
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…...
python基础学习3【NumPy矩阵与通用函数【矩阵相乘+平方+广播机制+转置】+ save、load、sort、repeat、unique、鸢尾花1】
NumPy矩阵与通用函数 a np.mat([[1,2],[3,4]])#生成矩阵b np.matrix([[1,7],[6,4]])np.bmat("a b") 矩阵的运算 矩阵特有属性: 属性 说明 T自身转置H共轭转置I逆矩阵A自身数据的二维数据视图 例如: np.matrix(a).T 矩阵相乘:…...
【Spring学习之更简单的读取和存储Bean对象】教会你使用五大类注解和方法注解去存储 Bean 对象
前言: 💞💞今天我们依然是学习Spring,这里我们会更加了解Spring的知识,知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 💟💟前路漫漫,希望大家坚持…...
微客云原生淘宝客APP小程序系统如何定制
淘宝是中国最大的电商网站,而淘宝的火热,也兴起了一个全新的行业,淘宝客。就是帮助淘宝商家推广商品的一种职业。目前淘宝每年有百分之10的销售业绩都是通过淘宝客贡献的,所以说淘宝客的市场越来越大。但是淘宝客要推广自己的产品…...
QT CTK插件开发(六) 多对一插件
CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…...
【Spring Boot整合MyBatis教程】
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发…...
ThinkPHP3.2.3通过局域网手机访问项目
折腾一上午, 试了nginx, 试了修改Apache的httpd.conf 试了关闭代理 试了手动配置网络 试了关闭防火墙 试了添加防火墙入站出站规则 问了五个ChatGPT 都没解决。 记录一下 wampserver3.0.4 Apache2.4.18 PHP 5.6.19 MySQL 5.7.11 所有服务启…...
2306C++虚继承
构 B{无序映<串,串>列;整 大小0;空 f(){大小;} }; //虚继承其实不错,但是占位置,占空间.构 C:虚 公 B{空 g(){} };构 D:虚 公 C{空 h(){} }; 构 S{}; 构 T{}; //元<类 T>构 E:虚 公 D{}; 构 E:虚 公 D{};空 主(){//E<S>e;e.f();打印(e.大小);//E<T>m;m…...
使用oracle遇到问题笔记
一、oracle还原到不同版本的oracle数据库报错和解决办法 产生:执行imp导入dmp备份文件时报错 错误内容:导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法 解决办法:http://t.csdn.cn/pJyhc...
我和老刘又被搞惨了
前两天在调试PHY的时候遇到了一堆问题,老刘都不耐其烦的搞定了,这次我们开始调试音频部分,音频部分很简单,无非就是录音,要是能把录音的音频拿到了,那就万事大吉了。老刘也是信心满满,老刘对我说…...
DDD--基本概念
最近项目组一直在推DDD领域驱动设计,现就一些个人理解分享如下。 DDD(领域驱动设计)是一种软件开发方法论,旨在解决复杂业务场景下的软件设计与开发问题。以下是DDD的基本概念: 领域(Domain)&…...
chatgpt赋能python:Python多行注释
Python 多行注释 在 Python 中,我们经常需要写注释来解释代码或者用于调试。Python 的注释分为单行注释和多行注释,本文主要介绍 Python 中如何多行注释。 单行注释 在 Python 中,单行注释以符号 # 开头,可以写在代码的任何位置…...
JSP详细基础教学
目录 前言 环境设置 创建JSP文件 编写基本的JSP代码 部署和运行JSP页面 基础语法 前言 JSP(JavaServer Pages)是一种用于开发动态网页的Java技术。它允许将Java代码嵌入HTML页面中,以便在服务器端生成动态内容。在本次教程中ÿ…...
怎么做网站注册名密码/百度手游app下载
用电脑办公的人有个习惯,如果有非常重要的文档要保存,都习惯存到桌面。重要文件存到桌面是非常有安全感的,随时进入电脑桌面都可以看到自己放在桌面的文件。真正熟悉电脑的人会发现,重要文件放在桌面是非常不安全的,因…...
视觉设计网站/友链申请
[Error]集成第三方API时Other Linker Flags项添加-all_load引起的冲突 问题描述: 在XCode9.1新建一个项目,先集成了极光推送,再集成微信支付时出现的问题。 集成微信后运行时,报错(如图): …...
昆山做网站找文博/新东方雅思培训价目表
在这个项目上,也就是前端的工作居多。某日,一友人因把文件上传到 Dropbox 而引发众怒。同时,百度网盘也越来越不好用了。我随意吐槽之。于是乎,就有了这个项目。 某个周六深夜,写小程序已闷死,突然想起答应…...
9e做网站/公司网站建设服务机构
Forward指令是Jsp动作指令之一,可以用于将页面响应转发到另外的页面。既可以转发到静态页面,也可以转发到动态页面。 就像表单参数的转发一样,本来没什么好说,但是有几个特性还是要注意一下的。用一个例子就能够完全说明这个问题…...
wordpress 地址插件/seopeixun
1、为什么使用em em也是css中的一种单位,和px类似。很多人会疑惑为什么有了px之后还要使用em,而且em使用起来相对于px来讲比较麻烦。 em主要是应用于弹性布局,下面给出一个小栗子说明em的强大之处 <!DOCTYPE html> <html lang"…...
建立b2b企业网站/电商网站网址
找到Win10安装盘iso内的如下文件 microsoft-windows-netfx3-ondemand-package.cab 它存放于sources\sxs目录下.win10安装盘的iso可以虚拟机加载或者rar直接打开. 随便放在一个目录下,我放在了C盘根目录下 打开cmd 运行如下语句 dism.exe /online /add-package /packagepath…...