【网络安全】【深度学习】【入侵检测】SDN模拟网络入侵攻击并检测,实时检测,深度学习
文章目录
- 1. 前言
- 2. Mininet 和 Ryu 的区别
- 2.1 Mininet
- 2.2 Ryu
- 2.3 总结
- 3. 模拟攻击
- 3.1 环境准备
- 3.2 创建 Mininet 网络拓扑
- 3.2 启动 Ryu 控制器
- 3.3 模拟网络攻击
- 3.4 捕获流量
- 4. 实时异常检测
- 4.1 在 Ryu 控制器中
- 4.2 在 h2 机器上的实验结果
- 4.3 深度学习模型部署上h2机器
- 帮助、咨询
1. 前言
做了很多入侵检测的深度学习模型:
【深度学习】Transformer分类器,CICIDS2017,入侵检测,随机森林、RFE、全连接神经网络
https://qq742971636.blog.csdn.net/article/details/137994375
https://qq742971636.blog.csdn.net/article/details/137873472
有时候有的同学想部署到环境中,模拟攻击,来验证一下模型行不行,我也来试试。
使用 Mininet 模拟网络环境,使用 Ryu 作为 SDN 控制器来管理模拟网络中的设备和流量。
部署深度学习模型在其中做实时检测。
2. Mininet 和 Ryu 的区别
Mininet 和 Ryu 是两个不同的工具,分别用于不同的网络虚拟化和软件定义网络 (SDN) 任务。以下是它们的主要区别:
2.1 Mininet
- 功能: Mininet 是一个网络仿真器,用于创建和测试虚拟网络拓扑。它允许用户在单台计算机上模拟完整的网络,包括主机、交换机、链路等。
- 用例: Mininet 常用于研究和教学,帮助用户快速构建和测试复杂的网络环境,而无需实际硬件。它也用于开发和调试网络应用和协议。
- 实现: Mininet 使用 Linux 容器 (如 Network Namespaces 和 Open vSwitch) 来创建虚拟网络环境。用户可以通过 Python 脚本定义网络拓扑。
- 交互: 用户可以使用 Mininet 的命令行接口 (CLI) 或 Python API 来创建和操作网络拓扑。
2.2 Ryu
- 功能: Ryu 是一个开源的 SDN 控制器框架,用于开发和管理 SDN 控制器。它提供了用于编写控制平面应用程序的工具和库。
- 用例: Ryu 用于实现 SDN 控制器,以管理和控制网络设备的行为。它支持 OpenFlow 协议,可以与支持 OpenFlow 的交换机进行通信。
- 实现: Ryu 是用 Python 编写的,并且提供了丰富的 API 和库,便于开发者编写自定义的网络控制逻辑和应用。
- 交互: 开发者使用 Ryu 来编写 SDN 应用程序,通过 Ryu 控制器与网络设备进行通信和管理。
2.3 总结
- Mininet: 主要用于创建和模拟虚拟网络拓扑,适合于网络实验和研究。
- Ryu: 主要用于开发和运行 SDN 控制器,用于管理和控制网络设备。
这两个工具通常可以结合使用:使用 Mininet 模拟网络环境,使用 Ryu 作为 SDN 控制器来管理模拟网络中的设备和流量。
3. 模拟攻击
Mininet 可以结合 SDN(软件定义网络)控制器来模拟网络攻击。这种组合允许您创建一个虚拟网络环境,在其中可以通过 SDN 控制器动态管理和监控网络流量,同时生成和检测网络攻击。以下是一个详细的示例流程,展示如何使用 Mininet 和 SDN 控制器(例如 Ryu)来模拟网络攻击并检测它们。
3.1 环境准备
Ubuntu22的VM虚拟机。
Python3.8才行,看这里教程使用Python3.8虚拟环境:https://qq742971636.blog.csdn.net/article/details/139566288
-
安装 Mininet:
在 Ubuntu 上,您可以通过以下命令安装 Mininet:sudo apt-get updatesudo apt-get install mininet pip install mininet # 虚拟环境python3.8中安装
-
安装 Ryu:
Ryu 是一个开源的 SDN 控制器,可以通过 pip 安装:sudo apt-get install python3-pip sudo apt install gcc libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev -y pip3 install eventlet==0.30.2 ryu==4.34
-
安装 scapy 和 tcpdump:
scapy 是一个用于生成和处理网络包的 Python 库,而 tcpdump 是一个流行的网络包捕获工具:sudo apt-get install python3-scapy tcpdump pip3 install scapy -i https://pypi.tuna.tsinghua.edu.cn/simple
3.2 创建 Mininet 网络拓扑
创建一个简单的 Mininet 网络拓扑,并启动 Ryu 控制器:
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.cli import CLI
from mininet.log import setLogLeveldef simpleTopo():net = Mininet(controller=RemoteController)print("*** Creating nodes")h1 = net.addHost('h1')h2 = net.addHost('h2')s1 = net.addSwitch('s1')c0 = net.addController('c0', controller=RemoteController, ip='127.0.0.1', port=6633)print("*** Creating links")net.addLink(h1, s1)net.addLink(h2, s1)print("*** Starting network")net.start()print("*** Running CLI")CLI(net)print("*** Stopping network")net.stop()if __name__ == '__main__':setLogLevel('info')simpleTopo()
这个代码创建了一个简单的 Mininet 拓扑,并使用一个远程 SDN 控制器来管理网络。以下是代码的详细说明以及对应的拓扑图。
-
创建 Mininet 网络:
Mininet(controller=RemoteController)
:创建一个 Mininet 网络,并指定使用远程控制器。
-
创建节点:
h1 = net.addHost('h1')
:添加主机 h1。h2 = net.addHost('h2')
:添加主机 h2。s1 = net.addSwitch('s1')
:添加交换机 s1。c0 = net.addController('c0', controller=RemoteController, ip='127.0.0.1', port=6633)
:添加一个远程控制器 c0,控制器运行在本地机器上(IP 地址为 127.0.0.1),使用端口 6633。
-
创建链接:
net.addLink(h1, s1)
:将主机 h1 连接到交换机 s1。net.addLink(h2, s1)
:将主机 h2 连接到交换机 s1。
-
启动网络:
net.start()
:启动 Mininet 网络。
-
运行命令行界面 (CLI):
CLI(net)
:启动 Mininet 的命令行界面,可以在其中输入命令来管理网络。
-
停止网络:
net.stop()
:停止 Mininet 网络。
拓扑图
以下是这个代码创建的网络拓扑图:
+--------+ +--------+| h1 |------| s1 |------| h2 |+--------+ +--------+ +--------+||+---------+| c0 | (Remote SDN Controller)+---------+
h1
和h2
是两台主机。s1
是一个交换机。c0
是一个远程 SDN 控制器,管理交换机s1
。
在这个拓扑中,交换机 s1
由远程控制器 c0
管理,主机 h1
和 h2
通过交换机 s1
进行通信。这个简单的拓扑结构可以用于模拟和测试网络配置、流量管理和攻击检测等任务。
保存上述代码为 simple_topo.py
,并使用以下命令运行:
sudo python3 simple_topo.py
启动后得到cli端:
3.2 启动 Ryu 控制器
创建一个简单的 Ryu 控制器脚本,例如 simple_switch.py
,它实现一个基本的交换机功能:
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER, CONFIG_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernetclass SimpleSwitch13(app_manager.RyuApp):OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]def __init__(self, *args, **kwargs):super(SimpleSwitch13, self).__init__(*args, **kwargs)self.mac_to_port = {}@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)def switch_features_handler(self, ev):datapath = ev.msg.datapathofproto = datapath.ofprotoparser = datapath.ofproto_parsermatch = parser.OFPMatch()actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)]self.add_flow(datapath, 0, match, actions)def add_flow(self, datapath, priority, match, actions, buffer_id=None):ofproto = datapath.ofprotoparser = datapath.ofproto_parserinst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]if buffer_id:mod = parser.OFPFlowMod(datapath=datapath, buffer_id=buffer_id,priority=priority, match=match,instructions=inst)else:mod = parser.OFPFlowMod(datapath=datapath, priority=priority,match=match, instructions=inst)datapath.send_msg(mod)@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)def _packet_in_handler(self, ev):msg = ev.msgdatapath = msg.datapathofproto = datapath.ofprotoparser = datapath.ofproto_parserin_port = msg.match['in_port']pkt = packet.Packet(msg.data)eth = pkt.get_protocols(ethernet.ethernet)[0]dst = eth.dstsrc = eth.srcdpid = datapath.idself.mac_to_port.setdefault(dpid, {})self.mac_to_port[dpid][src] = in_portif dst in self.mac_to_port[dpid]:out_port = self.mac_to_port[dpid][dst]else:out_port = ofproto.OFPP_FLOODactions = [parser.OFPActionOutput(out_port)]if out_port != ofproto.OFPP_FLOOD:match = parser.OFPMatch(in_port=in_port, eth_dst=dst)self.add_flow(datapath, 1, match, actions)data = Noneif msg.buffer_id == ofproto.OFP_NO_BUFFER:data = msg.dataout = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id,in_port=in_port, actions=actions, data=data)datapath.send_msg(out)
保存上述代码为 simple_switch.py
,并使用以下命令运行:
ryu-manager simple_switch.py
这个 Ryu 控制器应用程序实现了一个基本的学习交换机功能。当交换机收到一个未知目标 MAC 地址的数据包时,会将该数据包发送给控制器。控制器会首先检查已知的 MAC 地址与端口的映射关系。如果目标 MAC 地址已知,控制器会将数据包转发到对应的端口;如果目标 MAC 地址未知,控制器会将数据包泛洪到所有端口,确保目标主机能够收到数据包并回应。通过这种方式,交换机逐渐学习并建立起网络中各个设备的 MAC 地址与端口的映射关系,从而优化后续的数据包转发过程。
启动成功这样:
3.3 模拟网络攻击
安装xterm:
sudo apt-get install xterm
进入h1机器:
mininet> xterm h1
可以看到:
在 Mininet CLI 中,使用 h1
主机对 h2
主机进行攻击。例如,使用 scapy 生成 SYN Flood 攻击:
python3.8 -c "
from scapy.all import *
target_ip = '10.0.0.2'
target_port = 80
while True:send(IP(dst=target_ip)/TCP(dport=target_port,flags='S'),verbose=0)
"
3.4 捕获流量
进入h2机器:
mininet> xterm h2
在 h2
主机上捕获流量,并保存为 pcap 文件:
tcpdump -w attack_traffic.pcap
可以用这个指令看一下pcap文件大概内容:
tcpdump -vr attack_traffic.pcap
4. 实时异常检测
我开发了一个基于随机森林的入侵检测模型,利用了CICIDS数据进行训练。现在,我想要实现在 h2 机器上进行实时流量包检测,并利用模型推断出其中的异常流量。
4.1 在 Ryu 控制器中
一种方法是在 Ryu 控制器中添加代码以监测流量模式。举例来说,你可以创建一个模块来检测异常流量,并在检测到攻击时采取相应措施。虽然这种监测方法是可行的,但我更倾向于寻找其他方案。
4.2 在 h2 机器上的实验结果
在之前的实验中,我模拟了 h1 机器向 h2 机器发送 SYN 泛洪攻击。结果显示,h2 机器成功接收到了这些攻击流量。通过使用抓包工具执行指令 tcpdump -w attack_traffic.pcap
,我捕获了相关信息。
让我们回顾一下网络拓扑图:
+--------+ +--------+| h1 |------| s1 |------| h2 |+--------+ +--------+ +--------+||+---------+| c0 | (远程 SDN 控制器)+---------+
在 h2 机器上执行以下命令查看网络接口:
ifconfig
结果显示网络接口为 h2-eth0
:
接着,我编写了以下 Python 代码来抓取 h2 机器的流量,并对其进行进一步的检测与分析:
from scapy.all import *def packet_callback(packet):if packet.haslayer(IP) and packet.haslayer(TCP):src_ip = packet[IP].srcdst_ip = packet[IP].dstsrc_port = packet[TCP].sportdst_port = packet[TCP].dportflags = packet[TCP].flagsprint(f"IP: {src_ip} -> {dst_ip}, TCP Port: {src_port} -> {dst_port}, Flags: {flags}")sniff(iface="h2-eth0", prn=packet_callback, store=0)
通过这段代码,我成功捕获到了 SYN 攻击的流量:
4.3 深度学习模型部署上h2机器
这里嘛,有缘再见了。
帮助、咨询
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
相关文章:
【网络安全】【深度学习】【入侵检测】SDN模拟网络入侵攻击并检测,实时检测,深度学习
文章目录 1. 前言2. Mininet 和 Ryu 的区别2.1 Mininet2.2 Ryu2.3 总结 3. 模拟攻击3.1 环境准备3.2 创建 Mininet 网络拓扑3.2 启动 Ryu 控制器3.3 模拟网络攻击3.4 捕获流量 4. 实时异常检测4.1 在 Ryu 控制器中4.2 在 h2 机器上的实验结果4.3 深度学习模型部署上h2机器 帮助…...
【CentOS】手动编译安装make、cmake、gcc、git
摘要 Centos7升级make和gcc版本到最新——CSDN make make 各个版本下载地址 http://ftp.gnu.org/pub/gnu/make 以4.4为例安装: # 下载 wget https://ftp.gnu.org/pub/gnu/make/make-4.4.tar.gz # 解压配置 tar zxf make-4.4.tar.gz cd make-4.4 ./configure --p…...
45.django - 开始建立第一个项目
1.django是什么? Django是一个高级的、免费的、开源的Web应用框架,它由Python编程语言编写而成。Django遵循模型-视图-控制器(MVC)的设计模式,但通常将其称为模型-视图-模板(MVT)架构。它的主要…...
# 梯影传媒T6投影仪刷机方法及一些刷机工具链接
梯影传媒T6投影仪刷机方法及一些刷机工具链接 文章目录 梯影传媒T6投影仪刷机方法及一些刷机工具链接1、安装驱动程序2、备份设备rom【boot、system】3、还原我要刷进设备的rom【system】4、打开开发者模式以便于安装apk5、root设备6、更多好链接: 梯影传媒T6使用的…...
【代码随想录算法训练营第37期 第三十二天 | LeetCode122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II】
代码随想录算法训练营第37期 第三十二天 | LeetCode122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II 一、122.买卖股票的最佳时机II 解题代码C: class Solution { public:int maxProfit(vector<int>& prices) {int result 0;for(int i 1; i &…...
DP:回文串模型
一、回文子串 . - 力扣(LeetCode) 该题有3种解法 (1)中心扩展算法(在字符串章节有介绍)时间复杂度O(N^2),空间复杂度O(1) (2)马丁车…...
STM32CubeMX软件的安装以及配置
STM32CubeMX软件的配置过程可以详细分为以下几个步骤,以确保您能够顺利地使用该软件进行STM32微控制器的配置和代码生成: 1. 安装前准备 安装JAVA环境:由于STM32CubeMX软件是基于JAVA环境运行的,所以需要先安装Java Runtime Env…...
【适配鸿蒙next】Flutter 新一代混合栈管理框架
前言 据最新消息显示,华为今年下半年将全面转向其自主平台HarmonyOS,放弃Android系统。 报道中提到,下一版HarmonyOS预计将随华为即将推出的Mate 70旗舰系列一起发布。 据悉,HarmonyOS Next 已经扩展到4000个应用程序,…...
车载电子电气架构 --- 车载信息安全
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...
【数据结构(邓俊辉)学习笔记】图04——双连通域分解
文章目录 0. 概述1 关节点与双连通域2 蛮力算法3 可行算法4 实现5 示例6 复杂度 0. 概述 学习下双连通域分解,这里略微有一点点难,这个算是DFS算法的非常非常经典的应用,解决的问题也非常非常有用。 1 关节点与双连通域 连通性很好理解&am…...
UI学习(二)
UI学习(二) 文章目录 UI学习(二)布局子视图手动布局自动布局 导航控制器导航控制器基础导航控制器的切换导航栏工具栏 分栏控制器分栏控制器协议部分的内容UITableView基础部分相关的协议函数高级协议与单元格 多界面传值 布局子视…...
【嵌入式】波特率9600,发送8个字节需要多少时间,如何计算?
问题: 波特率9600,发送 01 03 00 00 00 04 44 09 (8字节) 需要多少时间,如何计算? 在计算发送数据的时间时,首先要考虑波特率以及每个字符的数据格式。对于波特率9600和标准的UART数据格式(1个起始位&…...
jmeter -n -t 使用非GUI模式运行脚本说明
命令模式下执行jmx文件 jmeter -n -t fatie.jmx -l results\t4.jtl -e -o results\h1 表示以命令行模式运行当前目录下的脚本fatie.jmx,将结果存入当前目录下的results\t1.jtl,并且生成html格式的报告,写入文件夹results\h1。 说明:生成结果的文件夹r…...
网络流媒体协议——HLS协议
HTTP 实时流媒体(HTTP Live Streaming,HLS)协议是苹果公司提出的主要用于直播的流媒体协议。一个完整的基于HLS协议的流媒体直播系统由四部分组成,即音视频采集器、媒体服务器、媒体分发器和播放客户端。 媒体服务器 媒体服务器的…...
Linux服务器扩容及磁盘分区(LVM和非LVM)
Linux扩容及磁盘分区(LVM和非LVM) 本文主要介绍了阿里云服务器centos的扩容方法:非LVM分区扩容方法(系统盘),以及磁盘改LVM并分区(数据盘)。主要是ext4文件系统及xfs磁盘scsi MBR分…...
支持向量机
支持向量机(SVM) 支持向量机(Support Vector Machine, SVM)是一种用于分类和回归任务的监督学习算法。SVM 的核心思想是找到一个最优的决策边界(或称为超平面),以最大化不同类别之间的间隔。以…...
Kafka 架构
1 整体架构 1.1 Zookeeper Zookeeper 是一个分布式协调服务,用于管理 Kafka 的元数据。它负责维护 Kafka 集群的配置信息、Broker 列表和分区的 Leader 信息。 Zookeeper 确保了 Kafka 集群的高可用性和可靠性。 但 Zookeeper 已经成为 Kafka 性能瓶颈,…...
iOS 查看runtime源码的几种方法
目录 前言 查看runtime 源码方法 1.下载 Apple 官方提供的源代码 2.通过 GitHub 访问镜像 3.使用命令行工具查看 4.示例 前言 这篇博客主要介绍了查看iOS runtime源代码的方法。 查看runtime 源码方法 查看iOS runtime源码的方法包括以下几个步骤: 1.下载 A…...
底板外设倒灌到处理器分析
在嵌入式系统中,底板外设通常与处理器通过各种接口(如UART、SPI、I2C、GPIO等)进行连接。这些外设可能包括传感器、执行器、存储器、通信模块等。倒灌是指当外设向处理器提供的信号电平超出了处理器能够接受的范围,导致处理器无法…...
使用贝塞尔曲线实现一个iOS时间轴
UI效果 实现的思路 就是通过贝塞尔曲线画出时间轴的圆环的路径,然后 使用CAShaper来渲染UI,再通过 animation.beginTime [cilrclLayer convertTime:CACurrentMediaTime() fromLayer:nil] circleTimeOffset 来设置每个圆环的动画开始时间, …...
【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境
【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境 大家好 我是寸铁👊 总结了一篇【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境✨ 喜欢的小伙伴可以点点关注 &#…...
在docker容器中使用gdb调试python3.11的进程
gdb调试python进程的前提条件 安装python及python调试信息安装gdb工具安装python-gdb.py扩展 安装过程 我们使用docker来安装以上内容,Dockerfile文件内容如下: FROM docker.io/centos:7.4.1708# 安装依赖 RUN yum install -y -q epel-release &…...
堆排序要点和难点以及具体案例应用
堆排序(Heap Sort)是一种基于堆数据结构的排序算法。下面我将以分点表示和归纳的方式,结合相关数字和信息,详细描述堆排序的PTA(Programming and Testing Approach,编程与测试方法)。 1. 堆排序原理 堆排序是一种树形选择排序,利用了完全二叉树的性质,通过构建最大堆…...
pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决
报错信息: py4j.protocol.Py4JJavaError: An error occurred while calling o33.load. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我的解决方法: 这个报错就是提示你找不到jar包,所以你需要去下载一个和你mysql版本匹配的j…...
对称加密系统解析
目录 1.概述 2. 对称密码类型 3. 对称加密优缺点 4. 对称加密算法 4.1 DES 4.2 3DES 4.3 AES 4.4 SM1 4.5 SM4 1.概述 对称加密,是指在加密和解密时使用同一秘钥的方式。秘钥的传送和保存的保护非常重要,务必不要让秘…...
初识 java 2
1. idea 的调试 1. 点击鼠标左键设置断点 2.运行到断点处 点击 或点击鼠标右键,再点击 使代码运行到断点处,得到 2. 输出到控制台 System.out.println(value);//输出指定的内容,并换行 value 要打印的内容System.out.print(value);…...
云端狂飙:Django项目部署与性能优化的极速之旅
Hello,我是阿佑,这次阿佑将手把手带你亲自踏上Django项目从单机到云端的全过程,以及如何通过Docker实现项目的无缝迁移和扩展。不仅详细介绍了Docker的基本概念和操作,还深入探讨Docker Compose、Swarm和Kubernetes等高级工具的使…...
GDPU JavaWeb 大结局篇(持续更新中)
GDPUJavaWeb程序设计复习,习题集,重点知识总结,一篇就够了。 实验复习 JavaWeb代码复习,在专栏也可查阅。 课后巩固习题 1 【单选题】下列说法正确的是( D ) A、在B/S结构中,结果应用软件发生了改变,就必须通知所有的客户端重新…...
Linux系统信息的查看
目录 前言一、系统环境二、查看系统IP地址信息2.1 ifconfig命令2.2 ip address命令 三、查看系统端口信息3.1 nmap命令3.2 netstat命令 四、查看系统进程信息4.1 ps命令4.2 kill命令 五、查看系统监控信息5.1 top命令5.2 df命令iostat命令5.3 sar命令 总结 前言 本篇文章介绍查…...
LE Audio音频广播新功能Auracast介绍
LE Audio音频广播新功能Auracast介绍 /*! \copyright Copyright (c) 2019-2022 Qualcomm Technologies International, Ltd. All Rights Reserved. Qualcomm Technologies International, Ltd. Confidential and Proprietary. \file audio_sources.h \defgroup audio_so…...
wordpress框架文件上传/台州百度快照优化公司
1 介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: (1)集群监控,负责监控redis master和slave进程是否正常工作 (2)消息通知,如果…...
做服装外单的网站有哪些/广东网络优化推广
1 [rootok /]# cat /proc/sys/net/ipv4/tcp_keepalive_time 2 72003 如果在该参数指定时间内某条连接处于空闲状态,则内核向远程主机发起探测4 [rootok /]# cat /proc/sys/net/ipv4/tcp_keepalive_intvl 5 756 内核向远程主机发送的保活探测的时间间隔7 [rootok /]#…...
沈阳高端网站/郑州专业的网站公司
概念 自动化构建工具,暂且类比成maven那一类的工具吧(不完全是) 可以不许需要手动再做重复的事情(task) 安装gulp需要Node.js,所以我觉得可以直接学Node.js,对后续的学习还是有比较大的便利。 第三方依赖管理工具bower less可以按照编程的写法…...
朔州建设机械网站/直链平台
html5的onhashchange和history历史管理 现在的开发,越来越倾向于页面内跳转,这种情况下需要更新自己的知识,来实现页面内跳转。history就是解决这个问题的。 HTML5有两种解决办法: 1,onhashchange 用到了window.loacti…...
建设优化网站/百度浏览器手机版
添加依赖 implementation "com.github.MZCretin:AutoUpdateProject:2.0.5"进行初始化 //更新库配置val updateConfig: UpdateConfig = UpdateConfig().setDebug(true) //是否是Debug模式.setBaseUrl(BaseUrl.getBaseUrl()) //当dataSourceType为DATA_SOURCE_TYPE_U…...
连城住房和城乡建设局门户网站/名片seo什么意思
7-3 求和 (20分) 求[1,n]之和。 输入格式: 输入一个正整数n。 输出格式: 输出12……n之和。 输入样例: 在这里给出一组输入。例如: 3 输出样例: 在这里给出相应的输出。例如: 6 #include<stdio.h> int main(){ int n,i,sum; scanf("%d…...