当前位置: 首页 > news >正文

【Linux】网络诊断 traceroute命令详解

目录

一、traceroute概述

1.1 traceroute命令简介

1.2 命令格式

1.3 原理

1.4 命令功能

二、使用实例

实例1:traceroute 用法简单、最常用的用法

实例2:跳数设置

实例3:设置探测数据包数量

实例4:显示IP地址,不查主机名

实例5:绕过正常的路由表,直接发送到网络相连的主机

实例6:探测包使用的基本UDP端口设置6888


网络诊断相关命令或工具使用:

【Linux】网络诊断 ping命令详解_linux ping-CSDN博客

【网络】抓包工具Wireshark下载安装和基本使用教程-CSDN博客

【网络】网络层ICMP协议-CSDN博客


一、traceroute概述


1.1 traceroute命令简介


traceroute跟踪从IP网络到给定主机的路由数据包。它利用IP协议的生存时间(TTL)字段,并尝试从通往主机的路径上的每个网关引出ICMP TIME_EXCEEDED响应,它默认发送的数据包大小是60字节(IPv4,CentOS7.X)。

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute默认要测3次,输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

在大多数情况下,我们会在linux主机系统下,直接执行命令行:

traceroute hostname

而在Windows系统下是执行tracert的命令:

tracert hostname

1.2 命令格式


官方释义翻译:

traceroute跟踪从IP网络到给定主机的路由数据包。它利用IP协议的生存时间(TTL)字段,并尝试从通往主机的路径上的每个网关引出ICMP TIME_EXCEEDED响应。

traceroute唯一需要的参数是目标主机的名称或IP地址。可选的packet_length是探测报文的总大小(IPv4默认60字节,IPv6默认80字节)

程序试图通过启动带有TTL(生存时间)的探测数据包来跟踪IP数据包将遵循的路由到某些internet主机,然后侦听来自网关的ICMP“超时”回复。我们以ttl为1开始探测,然后再增加1,直到我们得到ICMP“端口不可达”(或TCP重置),这意味着我们到达了“主机”,或者达到了最大值(默认为30跳)。每个ttl设置发送三个探测(默认情况下) 打印出一行显示ttl、网关地址和每个探针的往返时间。如果需要,可以在地址后面加上其他信息。如果探测答案来自不同的网关,则将打印每个响应系统的地址。如果在5.0秒(默认)内没有响应,则为该探测打印“*”(星号)。

在行程时间之后,可以打印一些附加的注释:!H, !N,或!P(主机,网络或协议不可达),!S(源路由失败),!F(需要分片),!X(管理禁止通信),!V(主机优先级违反),!C(优先级有效切断),或!<num> (ICMP不可达代码<num>)。如果几乎所有探测都导致某种不可达,traceroute将放弃并退出。

1.3 原理


traceroute程序完整过程:首先它发送一份TTL字段为1的IP数据包给目的主机,处理这个数据包的第一个路由器将TTL值减1,然后丢弃该数据报,并给源主机发送一个ICMP报文(“超时”信息,这个报文包含了路由器的IP地址,这样就得到了第一个路由器的地址),然后traceroute发送一个TTL为2的数据报来得到第二个路由器的IP地址,继续这个过程,直至这个数据报到达目的主机。

如图所示,在IPv4中,ICMP报文属于IP子协议,协议(Protocal)字段值为1表示该报文携带了ICMPv4。

如图所示,为ICMPv4的报文格式。所有的ICMP报文都以8位的类型(Type)和代码(Code)字段开始,其后的16位校验和(CheckSum)字段涵盖了整个报文。

其中各字段的含义如下:

  • 类型(Type):指定 ICMP 报文的类型,占 1 个字节。常见类型有:回显应答(Echo Reply:0)、回显请求(Echo Request:8)等。
  • 代码(Code):指定 ICMP 报文的代码,占 1 个字节。用于进一步描述 ICMP 报文,与 Type 字段组合使用。
  • 校验和(Checksum):校验和,用于检查 ICMP 报文是否有损坏,占 2 个字节。
  • 数据(Data):数据,可变长度。可以是任意数据,长度由具体的 ICMP 报文类型和代码决定。

基于ICMP报文的traceroute是这样实现的:让你在客户端输入 traceroute 命令+ip时, 客户端就发起一个ICMP回显请求报文,第一个数据包,TTL=1,这样第一跳路由器收到后,要转发出去时,会将TTL减一,即TTL=0, 就丢弃,然后第一跳路由器就返回一个ICMP超时的错误信息,客户端收到后,会判断是否收到ICMP 回显应答 报文? 如果还没收到,就会继续发送回显请求报文,TTL加1进行尝试,当到底服务器后,服务器就会发送ICMP 回显应答报文。

 

1、客户端发送第一个TTL=1的ICMP 回显请求报文,第1跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第1跳地址:10.10.10.10

2、由于客户端发现还没收到回显应答的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=1。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=0,就丢弃该数据包,并向客户端返回TTL超时的ICMP报文。
 

客户端收到,TTL超时ICMP报文,从报文里面的源地址,得到第2跳地址:20.20.20.20

3、由于客户端仍然还没收到 回显应答 的ICMP报文,于是继续尝试发送,TTL进行加1。第1跳路由器收到后,根据目的地址进行转发,转发出去时,TTL减1,减完后TTL=2。第2跳路由器收到后,查看目的地址进行转发,转发前会将TTL会减1,减完后TTL=1, TTL不是0,路由器就继续转发。数据包终于到达服务器啦!服务器查看目的地址,就是找我的,于是继续解封装,查看IP数据部分(ICMP),发现是回显请求的ICMP报文,于是向客户端发送一个 回显应答的ICMP报文。

客户端收到,回显应答的ICMP报文,确认UDP数据包已成功到达服务器了,traceroute结束,并记录源IP地址:192.168.2.1

1.4 命令功能


traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

命令参数:

参数

释义

-d

使用Socket层级的排错功能。

-f

设置第一个检测数据包的存活数值TTL的大小。

-F

不要分割数据包。

-g

设置来源路由网关,最多可设置8个。

-i

使用指定的网络界面送出数据包。

-I

使用ICMP ECHO进行跟踪路由

-T

使用TCP SYN进行跟踪路由(默认端口为80)

-m

设置检测数据包的最大存活数值TTL的大小。

-N

同时发送探测报文的个数。同时发送多个探针可以提高速度traceroute很大。默认值为16。

-n

直接使用IP地址而非主机名称。

-p

设置UDP传输协议的通信端口。

-r

忽略普通的Routing Table,直接将数据包送到远端主机上。

-s

设置本地主机送出数据包的IP地址。

-t

设置检测数据包的TOS数值。

-v

详细显示指令的执行过程。

-w

设置等待远端主机回报的时间。

-x

开启或关闭数据包的正确性检验。


二、使用实例


实例1:traceroute 用法简单、最常用的用法

命令:

traceroute www.baidu.com 

输出:

[root@hdp105 ~]#  traceroute www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  4.446 ms  4.398 ms  3.707 ms4  123.139.0.85 (123.139.0.85)  3.225 ms 123.139.1.29 (123.139.1.29)  12.200 ms 123.139.1.177 (123.139.1.177)  2.085 ms5  * 221.11.0.145 (221.11.0.145)  35.491 ms *6  219.158.111.233 (219.158.111.233)  33.572 ms * 221.11.0.45 (221.11.0.45)  33.728 ms7  110.242.66.166 (110.242.66.166)  65.619 ms 110.242.66.170 (110.242.66.170)  65.541 ms *8  110.242.66.178 (110.242.66.178)  20.313 ms 221.194.45.134 (221.194.45.134)  20.487 ms 110.242.66.182 (110.242.66.182)  19.403 ms9  221.194.45.134 (221.194.45.134)  22.095 ms * 221.194.45.130 (221.194.45.130)  19.838 ms.....
29  * * *
30  * * *

说明:

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到有的行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

实例2:跳数设置

命令:限制路由经过 10跳停止

traceroute -m 10 www.baidu.com

输出:

[root@hdp105 ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  5.417 ms  5.530 ms  5.287 ms4  123.139.1.29 (123.139.1.29)  1.992 ms 123.139.1.177 (123.139.1.177)  1.968 ms 123.139.2.161 (123.139.2.161)  1.945 ms5  * 221.11.0.1 (221.11.0.1)  2.090 ms *6  219.158.111.233 (219.158.111.233)  35.322 ms 221.11.0.69 (221.11.0.69)  28.003 ms *7  219.158.111.233 (219.158.111.233)  33.298 ms  33.255 ms *8  221.194.45.130 (221.194.45.130)  20.088 ms 110.242.66.170 (110.242.66.170)  20.029 ms 221.194.45.130 (221.194.45.130)  20.582 ms9  * * 221.194.45.134 (221.194.45.134)  21.801 ms
10  * * *
[root@hdp105 ~]# 

实例3:设置探测数据包数量

命令:限制路由经过 10跳且 每一跳发送4个探测数据包

[root@hdp105 ~]# traceroute -q 4 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 10 hops max, 60 byte packets1  * * * *2  * * * *3  124.89.90.205 (124.89.90.205)  3.536 ms  3.507 ms  2.734 ms  3.425 ms4  * * * 123.139.2.37 (123.139.2.37)  2.599 ms5  221.11.0.1 (221.11.0.1)  2.756 ms  2.727 ms  5.096 ms  7.570 ms6  * 221.11.0.169 (221.11.0.169)  22.440 ms 221.11.0.69 (221.11.0.69)  27.588 ms *7  * 110.242.66.186 (110.242.66.186)  25.913 ms 219.158.111.233 (219.158.111.233)  21.579 ms 110.242.66.178 (110.242.66.178)  20.378 ms8  221.194.45.130 (221.194.45.130)  23.732 ms 110.242.66.162 (110.242.66.162)  20.793 ms 221.194.45.130 (221.194.45.130)  20.476 ms  23.077 ms9  221.194.45.134 (221.194.45.134)  24.247 ms * * *
10  * * * *
[root@hdp105 ~]# 

如下图可以看到 发送4个探测数据包 输出了 4个数据包的时间

实例4:显示IP地址,不查主机名

命令:

traceroute -n -m 10 www.baidu.com

输出:

实例5:绕过正常的路由表,直接发送到网络相连的主机

命令:

traceroute -r www.baidu.com

输出:

实例6:探测包使用的基本UDP端口设置6888

命令:

traceroute -p 6888 www.baidu.com

输出:

[root@hdp105 ~]# traceroute -p 6888 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets1  * * *2  * * *3  124.89.90.205 (124.89.90.205)  2.079 ms  2.502 ms  2.440 ms4  123.139.0.85 (123.139.0.85)  2.280 ms 123.139.2.161 (123.139.2.161)  1.945 ms 123.139.1.29 (123.139.1.29)  2.212 ms5  * 221.11.0.53 (221.11.0.53)  27.007 ms *6  221.11.0.97 (221.11.0.97)  22.444 ms * *7  110.242.66.170 (110.242.66.170)  20.305 ms * *8  110.242.66.174 (110.242.66.174)  20.119 ms 221.194.45.130 (221.194.45.130)  19.840 ms 221.194.45.134 (221.194.45.134)  21.036 ms9  * 221.194.45.130 (221.194.45.130)  20.001 ms *
10  * * *
[root@hdp105 ~]# 

参考文章:

【Linux】网络诊断 ping命令详解_linux ping-CSDN博客

traceroute 命令,Linux traceroute 命令详解:显示数据包到主机间的路径 - Linux 命令搜索引擎

Linux命令:traceroute命令(路由跟踪)-CSDN博客

原文链接:linux网络命令--traceroute_traceroute命令详解-CSDN博客

动态图解 | 9分钟让你明明白白看懂Traceroute(路由追踪)的原理与实现

相关文章:

【Linux】网络诊断 traceroute命令详解

目录 一、traceroute概述 1.1 traceroute命令简介 1.2 命令格式 1.3 原理 1.4 命令功能 二、使用实例 实例1&#xff1a;traceroute 用法简单、最常用的用法 实例2&#xff1a;跳数设置 实例3&#xff1a;设置探测数据包数量 实例4&#xff1a;显示IP地址&#xff0c…...

c#cad 创建-圆(二)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 这段代码是一个AutoCAD插件&#xff0c;用于在模型空间中创建一个圆形。 首先&#xff0c;我们需要定义一个命令类CreateCircleCommand&#xff0c;并在命名空间CreateCircleInCad中声明。 在CreateCircleCommand类中&a…...

面试高频知识点:2线程 2.1.5如何自定义实现一个线程池

在Java中&#xff0c;线程池是一种用于管理线程的机制&#xff0c;它可以有效地管理多个线程并且可以重复使用它们&#xff0c;从而减少了线程创建和销毁的开销&#xff0c;提高了线程的利用率。本文将介绍如何自定义实现一个简单的线程池&#xff0c;并提供相应的Java代码示例…...

【stm32】hal库学习笔记-ADC模数转换(超详细)

【stm32】hal库学习笔记-ADC模数转换&#xff08;超详细&#xff09; 本篇章介绍了ADC实现电压检测的三种方式 ADC原理及选型 ADC将连续的模拟电压信号转换为二进制的数字信号 选型参数 速度&#xff08;采样频率&#xff09; 功耗 精度 转换原理 ADC hal库驱动函数 普通…...

蓝桥杯基础知识6 pair

蓝桥杯基础知识6 pair pair 的定义和结构&#xff1a;在C中&#xff0c;pair是一个模板类&#xff0c;用于表示一对值的组合&#xff0c;头文件<utility>。 pair类 的定义&#xff1a; template<class T1, class T2> struct pair{T1 first; // 第一个值T2 seco…...

后端返回给前端的数据格式有哪些?

后端返回的数据格式有很多种&#xff0c;常见的包括JSON、XML、HTML、CSV等。这些格式各有特点&#xff0c;适用于不同的应用场景。 JSON&#xff08;JavaScript Object Notation&#xff09;&#xff1a;JSON是一种轻量级的数据交换格式&#xff0c;易于阅读和编写&#xff0c…...

Transformer的PyTorch实现之若干问题探讨(一)

《Transformer的PyTorch实现》这篇博文以一个机器翻译任务非常优雅简介的阐述了Transformer结构。在阅读时存在一些小困惑&#xff0c;此处权当一个记录。 1.自定义数据中enc_input、dec_input及dec_output的区别 博文中给出了两对德语翻译成英语的例子&#xff1a; # S: de…...

系统参数SystemParameters.MinimumHorizontalDragDistance

SystemParameters.MinimumHorizontalDragDistance 是一个系统参数&#xff0c;它表示在拖放操作中鼠标水平移动的最小距离。 当用户按下鼠标左键并开始移动鼠标时&#xff0c;系统会检查鼠标的水平移动距离是否超过了 SystemParameters.MinimumHorizontalDragDistance。只有当…...

平屋顶安装光伏需要注意哪些事项?

我国对于房屋建设的屋顶形式&#xff0c;主要有平屋顶、斜屋顶、曲面屋顶和多波式折板屋顶等。今天来讲讲在平屋顶安装光伏&#xff0c;需要注意的事项。 1.屋顶结构&#xff1a;在安装光伏系统之前&#xff0c;需要对屋顶结构进行评估&#xff0c;确保屋顶能够承受光伏系统的…...

《Git 简易速速上手小册》第7章:处理大型项目(2024 最新版)

文章目录 7.1 Git Large File Storage (LFS)7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;在 Python 项目中使用 Git LFS 管理数据集7.1.3 拓展案例 1&#xff1a;使用 Git LFS 管理大型静态资源7.1.4 拓展案例 2&#xff1a;优化现有项目中的大文件管理 7.2 性能优化技巧7.2.…...

从0开始学Docker ---Docker安装教程

Docker安装教程 本安装教程参考Docker官方文档&#xff0c;地址如下&#xff1a; https://docs.docker.com/engine/install/centos/ 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest…...

嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.什么是命令&#xff1f; 命令就是可执行程序。 比如 ls -a…...

【C语言】SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)

一、SYSCALL_DEFINE3与系统调用 在Linux操作系统中&#xff0c;为了从用户空间跳转到内核空间执行特定的内核级操作&#xff0c;使用了一种机制叫做"系统调用"&#xff08;System Call&#xff09;。系统调用是操作系统提供给程序员访问和使用内核功能的接口。例如&…...

C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)

1环境说明 2获取鼠标位置的接口 void GetMouseCurPoint() {POINT mypoint;for (int i 0; i < 100; i){GetCursorPos(&mypoint);//获取鼠标当前所在位置printf("% ld, % ld \n", mypoint.x, mypoint.y);Sleep(1000);} } 3操作鼠标左键和右键的接口 void Mo…...

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图&#xff1a;二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶&#xff1a;辅助线、注释和子图三维散点图进阶&#xff1a;动画效果和交互性散点图矩阵进阶&#xff1a;调整样式和添加密度图总结与展…...

Docker-Learn(一)使用Dockerfile创建Docker镜像

1.创建并运行容器 编写Dockerfile&#xff0c;文件名字就是为Dockerfile 在自己的工作工作空间当中新建文件&#xff0c;名字为Docerfile vim Dockerfile写入以下内容&#xff1a; # 使用一个基础镜像 FROM ubuntu:latest # 设置工作目录 WORKDIR /app # 复制当前目…...

问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享

问题&#xff1a;银行账号建立以后&#xff0c;一般需要维护哪些设置&#xff0c;不包括&#xff08;&#xff09; A&#xff0e;维护结算科目对照 B&#xff0e;期初余额初始化刷 C&#xff0e;自定义转账定义 D&#xff0e;对账单初始化 参考答案如图所示...

教授LLM思考和行动:ReAct提示词工程

ReAct&#xff1a;论文主页 原文链接&#xff1a;Teaching LLMs to Think and Act: ReAct Prompt Engineering 在人类从事一项需要多个步骤的任务时&#xff0c;而步骤和步骤之间&#xff0c;或者说动作和动作之间&#xff0c;往往会有一个推理过程。让LLM把内心独白说出来&am…...

FPGA_工程_按键控制的基于Rom数码管显示

一 信号 框图&#xff1a; 其中 key_filter seg_595_dynamic均为已有模块&#xff0c;直接例化即可使用&#xff0c;rom_8*256模块&#xff0c;调用rom ip实现。Rom_ctrl模块需要重新编写。 波形图&#xff1a; 二 代码 module key_fliter #(parameter CNT_MAX 24d9_999_99…...

WordPress Plugin HTML5 Video Player SQL注入漏洞复现(CVE-2024-1061)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress Plugin HTML5 Video Player 插件 get_v…...

【Kotlin】Kotlin基本数据类型

1 变量声明 var a : Int // 声明整数类型变量 var b : Int 1 // 声明整数类型变量, 同时赋初值为1 var c 1 // 声明整数类型变量, 同时赋初值为1 val d 1 // 声明整数类型常量, 值为1(后面不能改变d的值) 变量命名规范如下。 变量名可以由字母、数字、下划线&#xff08;_…...

UDP端口探活的那些细节

一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了&#xff0c;如图 udp是无连接的&#xff0c;无法用建立连接的形式判断端口。 插件最初的设计是需要配置udp的发送字符&#xff0c;并且配置期望返回的字符串&#xff0c; [[instances]] targets…...

拦截器配置,FeignClient根据业务规则实现微服务动态路由

文章目录 业务场景拦截器用法Open Feign介绍 业务场景 我们服务使用Spring Cloud微服务架构&#xff0c;使用Spring Cloud Gateway 作为网关&#xff0c;使用 Spring Cloud OpenFeign 作为服务间通信方式我们现在做的信控平台&#xff0c;主要功能之一就是对路口信号机进行管控…...

预测模型:MATLAB线性回归

1. 线性回归模型的基本原理 线性回归是统计学中用来预测连续变量之间关系的一种方法。它假设变量之间存在线性关系&#xff0c;可以通过一个或多个自变量&#xff08;预测变量&#xff09;来预测因变量&#xff08;响应变量&#xff09;的值。基本的线性回归模型可以表示为&…...

【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)

什么是嵌入&#xff1f; OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于&#xff1a; Search 搜索&#xff08;结果按与查询字符串的相关性排序&#xff09;Clustering 聚类&#xff08;文本字符串按相似性分组&#xff09;Recommendations 推荐&#xff08;推荐具有…...

Redis + Lua 实现分布式限流器

文章目录 Redis Lua 限流实现1. 导入依赖2. 配置application.properties3. 配置RedisTemplate实例4. 定义限流类型枚举类5. 自定义注解6. 切面代码实现7. 控制层实现8. 测试 相比 Redis事务&#xff0c; Lua脚本的优点&#xff1a; 减少网络开销&#xff1a;使用Lua脚本&…...

ruoyi若依框架SpringSecurity实现分析

系列文章 ruoyi若依框架学习笔记-01 ruoyi若依框架分页实现分析 ruoyi若依框架SpringSecurity实现分析 文章目录 系列文章前言具体分析一、项目中的SpringSecurity版本二、登录认证流程分析三、权限鉴定四、退出登录五、SpringSecurity配置类 总结 前言 在ruoyi-vue若依框…...

Habitat环境学习四:Habitat-sim基础用于导航——使用导航网格NavMesh

如何使用导航网格NavMesh 官方教程1、NavMesh基础定义1.1 使用NavMesh的原因1.2 什么是NavMesh 2、NavMesh的使用方法2.1 获取自上而下Top down view视角地图2.2 在NavMesh中进行查询以及随机产生可导航点2.3 查找最短路径2.4 场景加载NavMesh2.5 重新计算并生成NavMesh2.6 什么…...

python学习笔记 -- 字符串

目录 一、输出字符串的格式 二、字符串的一些函数 1、len函数&#xff1a;字符串长度 2、查找字符所在位置index 3、某字符在字符串中的个数count 4、字符切片 对字符串进行翻转 -- 利用步长 5、修改大小写字母&#xff1a; 6、判断开头和结尾 7、拆分字符串 一、输出…...

2024年GPT如何发展?

2023 年&#xff0c;人工智能领域最具影响的莫过于 GPT-4、ChatGPT 了。 ChatGPT 凭一己之力掀起了 AI 领域的热潮&#xff0c;火爆全球&#xff0c;似乎开启了第四次工业革命。 ChatGPT 入选《Nature》2023 年度十大人物&#xff08;Nature’s 10&#xff09;&#xff0c;这…...

从REPR设计模式看 .NET的新生代类库FastEndpoints的威力

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 又到了一年年末,春节将至…...

前端入门:(五)JavaScript 续

10. 浏览器存储 10.1 Cookie的概念和使用 Cookie是一种存储在用户计算机上的小型文本文件&#xff0c;用于跟踪和识别用户。Cookie通常用于存储用户的偏好设置、会话信息等&#xff0c;可以通过JavaScript进行读取和设置。 // 示例&#xff1a;设置和读取Cookie document.co…...

研究多态恶意软件,探讨网络安全与AI

前言 近期ChatGPT火遍全球&#xff0c;AI技术被应用到了全球各行各业当中&#xff0c;国内外各大厂商也开始推出自己的ChatGPT&#xff0c;笔者所在公司在前段时间也推出了自研的安全GPT&#xff0c;AI技术在网络安全行业得到了很多的应用&#xff0c;不管是网络安全研究人员、…...

linux驱动工作原理

linux或者windows驱动是如何对上和对下工作的&#xff0c;请用中文回答 在Linux系统中&#xff0c;设备驱动程序通过在/dev目录下创建文件系统条目与硬件通信。应用程序通过打开这些文件来获取描述符&#xff0c;以此来与设备交互。驱动程序内部使用主次设备号来标识设备。而在…...

Rust语言入门(第3篇)

引用与借用 上一篇中&#xff0c;我们介绍了rust的所有权概念&#xff0c;若直接传递变量做函数参数&#xff0c;堆上的变量就会失去所有权&#xff0c;而栈上变量则由于复制&#xff0c;仍有所有权。 fn main(){let b 3;makes_copy(b);println!("after using a variab…...

电脑服务器离线安装.net framework 3.5解决方案(错误:0x8024402c )(如何确定当前系统是否安装NET Framework 3.5)

问题环境&#xff1a; 日常服务的搭建或多或少都会有需要到NET Framework 3.5的微软程序运行框架&#xff0c;本次介绍几种不同的安装方式主要解决运行在Windows 2012 以上的操作系统的服务。 NET Framework 3.5 是什么&#xff1f; .NET Framework是微软公司推出的程序运行框架…...

Three.js学习8:基础贴图

一、贴图 贴图&#xff08;Texture Mapping&#xff09;&#xff0c;也翻译为纹理映射&#xff0c;“贴图”这个翻译更直观。 贴图&#xff0c;就是把图片贴在 3D 物体材质的表面&#xff0c;让它具有一定的纹理&#xff0c;来为 3D 物体添加细节的一种方法。这使我们能够添加…...

【Linux】进程学习(二):进程状态

目录 1.进程状态1.1 阻塞1.2 挂起 2. 进程状态2.1 运行状态-R进一步理解运行状态 2.2 睡眠状态-S2.3 休眠状态-D2.4 暂停状态-T2.5 僵尸状态-Z僵尸进程的危害 2.6 死亡状态-X2.7 孤儿进程 1.进程状态 1.1 阻塞 阻塞&#xff1a;进程因为等待某种条件就绪&#xff0c;而导致的…...

Spring Boot 笔记 003 Bean注册

使用Idea导入第三方jar包 在porn.xml种添加的第三方jar包依赖&#xff0c;并刷新 可以在启动类中尝试调用 以上放到启动类中&#xff0c;不推荐&#xff0c;建议创建一个专门定义的类 package com.geji.config;import cn.itcast.pojo.Country; import cn.itcast.pojo.Province;…...

PCIE 参考时钟架构

一、PCIe架构组件 首先先看下PCIE架构组件&#xff0c;下图中主要包括&#xff1a; ROOT COMPLEX (RC) (CPU); PCIE PCI/PCI-X Bridge; PCIE SWITCH; PCIE ENDPOINT (EP) (pcie设备); BUFFER; 各个器件的时钟来源都是由100MHz经过Buffer后提供。一个PCIE树上最多可以有256…...

【开源】JAVA+Vue.js实现在线课程教学系统

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…...

计算机网络(第六版)复习提纲29

第六章&#xff1a;应用层 SS6.1 域名系统DNS 1 DNS被设计为一个联机分布式数据库系统&#xff0c;并采用客户服务器方式&#xff08;C/S&#xff09; 2 域名的体系结构 3 域名服务器及其体系结构 A 域名服务器的分类 1 根域名服务器 2 顶级域名服务器&#xff08;TLD服务器&a…...

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址 有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto…...

node.js 使用 elementtree 生成思维导图 Freemind 文件

请参阅: java : pdfbox 读取 PDF文件内书签 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 npm install elementtree --save 编写 txt_etree_mm.js 如下 // 读目录.txt文件&#xff0c;使用 elementtree 生成思维导图 Free…...

Vue中路由守卫的详细应用

作为一名web前端开发者&#xff0c;我们肯定经常使用Vue框架来构建我们的项目。而在Vue中&#xff0c;路由是非常重要的一部分&#xff0c;它能够实现页面的跳转和导航&#xff0c;提供更好的用户体验。然而&#xff0c;有时我们需要在路由跳转前或跳转后执行一些特定的逻辑&am…...

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…...

【Java程序代理与系统代理关系】Java程序代理与系统代理关系优先级及覆盖关系

前言 使用Apache HttpClient工具包中的HttpClients.createDefault()方法创建的默认HTTP客户端会根据操作系统当前的设置来决定是否使用代理。 具体来说&#xff0c;当创建默认HTTP客户端时&#xff0c;它会检查系统的代理设置。如果操作系统当前设置了系统级代理&#xff0c;…...

MQ,RabbitMQ,SpringAMQP的原理与实操

MQ 同步通信 异步通信 事件驱动优势&#xff1a; 服务解耦 性能提升&#xff0c;吞吐量提高 服务没有强依赖&#xff0c;不担心级联失败问题 流量消峰 ​ 小结: 大多情况对时效性要求较高&#xff0c;所有大多数时间用同步。而如果不需要对方的结果&#xff0c;且吞吐…...

Vue 3 + Koa2 + MySQL 开发和上线部署个人网站

Vue 3 Koa2 MySQL 开发和上线部署个人网站 记录个人的一个操作步骤, 顺序不分先后, 嫌啰嗦请出门右转! 环境说明: 服务器: 阿里云轻量应用服务器 服务器系统: CentOS8.2 本地环境: macOS 12.7.2 Node: 20.10.0 MySQL: 8.0.26 Vue: 3.3.11 Koa: 2.7.0 pm2: 5.3.1 Nginx: 1.1…...

uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面

1. pages下创建三个不同用户身份的“我的”页面。 显示第几个tabbar&#xff0c;0是管理员 1是财务 2是司机 2. 在uni_modules文件夹创建底部导航cc-myTabbar文件夹&#xff0c;在cc-myTabbar文件夹创建components文件夹&#xff0c;在components文件夹创建cc-myTabbar.vue组件…...