day35 网络协议与数据封装

数据封装与协议结构

以太网MAC帧格式

在这里插入图片描述

数据封装与传输流程

数据在传输过程中,从上层逐层封装到底层,最终通过物理介质发送。封装与传输的具体流程如下:

封装过程(从IP层到物理层)
  • IP层:IP数据报作为上层数据传递至MAC层
  • MAC层封装
    • 目的地址(6字节):接收设备的物理地址(MAC地址)
    • 源地址(6字节):发送设备的物理地址(MAC地址)
    • 类型(2字节):标识上层协议类型,例如 0x0800 表示承载的是IP协议数据
    • 数据(46–1500字节):实际承载的上层协议数据(如IP数据报),若不足46字节,则需填充至最小长度
    • FCS(4字节):帧检验序列(Frame Check Sequence),用于差错检测
  • 物理层封装
    • 前导码(8字节)
      • 前7字节为前同步码,比特模式为 10101010 交替,用于接收方时钟同步
      • 第8字节为帧开始定界符(SFD),比特模式为 10101011,表示帧的开始

MTU说明:以太网帧中"数据"部分的最大传输单元(MTU)为 1500字节

解封装过程(从物理层到IP层)

接收端按照相反顺序进行解封装,从物理层开始逐层去除头部信息,最终将数据交付给上层应用。

协议封装层次

数据在发送端自上而下逐层封装,接收端则自下而上解封装:

应用层数据 → TCP/UDP头 → IP头 → MAC帧 → 物理层前导码|            |           |          |
"Hello"      传输层      网络层     接口层

IP数据报首部

在这里插入图片描述

核心特性

  • 固定长度:20字节(不含选项字段)
  • 关键字段详解
字段描述
版本(4位)指明IP协议版本,IPv4为4,IPv6为6,通信双方必须一致
首部长度(IHL,4位)以32位(4字节)为单位,最小值为5(即20字节),最大值为15(60字节)。当包含选项时长度可变
区分服务(DS,8位)原称"服务类型",现用于QoS(服务质量)控制,如优先级、延迟、吞吐量等
总长度(16位)整个IP数据报的长度(首部 + 数据),单位为字节,最大值为65535字节
标识(16位)每产生一个数据报,该计数器加1;分片时所有片段共享同一标识,以便重组
标志(3位)包含两个有效位:
- DF (Don’t Fragment):禁止分片
- MF (More Fragments):还有更多分片(MF=0表示最后一片)
片偏移(13位)分片后该片在原始数据报中的位置,单位为8字节(64位),保证分片按序重组
生存时间(TTL,8位)数据报在网络中的存活时间,每经过一个路由器减1,为0时被丢弃,防止无限循环
协议(8位)指明上层协议类型,常见值:
- 6:TCP
- 17:UDP
- 1:ICMP
首部校验和(16位)仅校验IP首部,不包含数据部分。每次经过路由器需重新计算
源IP地址(32位)发送方的IP地址
目的IP地址(32位)接收方的IP地址

注意:IP是无连接、不可靠的服务,依赖上层(如TCP)实现可靠性。


TCP首部格式

在这里插入图片描述

核心特性

  • 固定长度:20字节(可选字段扩展至最多60字节)
  • 关键字段
字段描述
源/目的端口(各16位)标识通信的应用进程
序列号(32位)当前报文段第一个字节的序号,用于保证数据有序传输
确认号(32位)期望收到的下一个字节的序号,表示该序号之前的数据已正确接收
数据偏移(4位)TCP首部长度,以4字节为单位,最小为5(20字节),最大为15(60字节)
保留(6位)保留字段,置0
标志位(6位)控制连接状态的关键标志:
- URG:紧急指针有效
- ACK:确认号有效
- PSH:要求接收方立即交付给应用层
- RST:重置连接
- SYN:同步序列号,用于建立连接
- FIN:请求关闭连接
窗口大小(16位)接收方当前接收缓冲区剩余容量,用于流量控制
校验和(16位)覆盖TCP首部、数据及伪首部,确保传输完整性
紧急指针(16位)与URG配合使用,指出紧急数据的末尾位置

发送缓冲区划分

[已发送且已确认] → [已发送未确认] → [待发送]
  • 通过超时重传机制确保可靠传输
  • 只有收到ACK后,已发送未确认区域才能向前滑动

关键标志位

标志位作用
SYN连接建立请求(同步序列号)
ACK确认应答(确认号有效)
FIN连接终止请求
RST异常中断或拒绝连接
PSH推送数据,要求立即处理

UDP首部格式

在这里插入图片描述

核心特性

  • 固定长度:8字节
  • 字段说明
字段描述
源端口(16位)发送方端口号,可选
目的端口(16位)接收方端口号,必须指定
长度(16位)UDP数据报总长度(首部 + 数据),最小为8字节,最大为65535字节
校验和(16位)可选,用于差错检测;若未启用则为0。包含伪首部、UDP首部和数据

特点总结

  • 无连接(无需握手)
  • 不保证可靠传输(无确认、无重传)
  • 开销小(仅8字节首部)
  • 适用于实时性要求高的场景(如音视频流、DNS查询)

网络诊断工具集

远程连接工具

# 使用telnet连接指定IP和端口(默认端口23)
telnet 192.168.1.1 8888  # 连接到192.168.1.1的8888端口

功能说明:测试目标主机某端口是否开放并可通信。
理想输出

Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

网络状态监控

# 查看所有网络连接(包括进程信息)
netstat -anp

功能说明:显示所有网络连接、监听端口及对应进程
典型输出

tcp  0  0 0.0.0.0:8888  0.0.0.0:*  LISTEN  1234/python3

表示PID为1234的Python程序正在监听8888端口。

# 仅查看TCP连接
netstat -n -t

功能说明:显示所有TCP连接状态
典型输出

tcp        0      0 192.168.1.100:50000   192.168.0.183:80      ESTABLISHED
# 仅查看UDP连接
netstat -n -u

功能说明:显示所有UDP连接状态
典型输出

udp        0      0 0.0.0.0:68            0.0.0.0:*                        
# 查看特定端口监听情况
netstat -lnp | grep 8888

功能说明:检查特定端口是否被监听及对应进程
典型输出

tcp  0  0 0.0.0.0:8888  0.0.0.0:*  LISTEN  1234/python3

网络连通性测试

# 测试与指定IP的连通性
ping 192.168.1.1

功能说明:使用ICMP协议检测目标主机是否可达
理想输出

64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.2 ms
# 测试域名解析及连通性
ping www.baidu.com

功能说明:测试DNS解析和网络连通性
理想输出

64 bytes from 110.242.68.66: icmp_seq=1 ttl=55 time=28.3 ms

ARP表管理

# 查看ARP缓存表(IP与MAC地址映射)
arp -an

功能说明:显示本地ARP缓存中的IP地址与MAC地址映射关系
典型输出

? (192.168.1.100) at 00:1a:2b:3c:4d:5e [ether] on eth0
# 删除指定IP的ARP缓存条目
arp -d 192.168.1.100

功能说明:清除特定IP地址的ARP缓存,解决IP-MAC映射问题
理想输出

(192.168.1.100) deleted

流量抓包分析

Wireshark过滤示例
tcp.port == 50000 && ip.addr == 192.168.0.183

抓取目标或源端口为50000,且IP地址为192.168.0.183的数据包。

tcpdump高级过滤命令
# 按源IP过滤
tcpdump 'ip.src == 192.168.1.100'

功能说明:捕获来自特定IP的所有数据包
理想输出

12:30:45.123456 IP 192.168.1.100.50000 > 192.168.0.183.80: Flags [S], seq 12345
# 按目的端口过滤
tcpdump 'tcp.dstport == 9999'

功能说明:捕获发送到特定端口的所有数据包
理想输出

12:31:22.678901 IP 192.168.1.100.50001 > 192.168.0.183.9999: Flags [P.], seq 12345:12400
# 组合条件:源IP为192.168.1.100 且 目的端口为9999
tcpdump 'ip.src == 192.168.1.100 and tcp.dstport == 9999'

功能说明:使用逻辑AND组合多个过滤条件
理想输出

12:32:15.234567 IP 192.168.1.100.50002 > 192.168.0.183.9999: Flags [S], seq 12346
# 组合条件:源IP为192.168.1.100 或 目的IP为192.168.1.102
tcpdump 'ip.src == 192.168.1.100 or ip.dst == 192.168.1.102'

功能说明:使用逻辑OR组合多个过滤条件
理想输出

12:33:08.765432 IP 192.168.1.100.50003 > 192.168.1.102.80: Flags [P.], seq 12347:12450

环境配置建议

# 禁用防火墙(避免干扰抓包)
sudo ufw disable# 安装SSH服务(支持远程登录)
sudo apt-get install openssh-server openssh-client# 安装Wireshark(图形化抓包工具)
sudo apt-get install wireshark

tcpdump 使用补充说明

# 在默认网卡上抓包(显示简要信息)
tcpdump -n

功能说明:捕获所有网络接口的流量,以数字形式显示IP和端口
理想输出

12:35:45.123456 IP 192.168.1.100.50000 > 192.168.0.183.80: Flags [S], seq 12345
# 根据源或目的IP抓包
tcpdump -n src 192.168.1.100
tcpdump -n dst 192.168.1.100

功能说明:分别捕获指定IP作为源或目的的数据包
理想输出

12:36:22.678901 IP 192.168.1.100.50001 > 192.168.0.183.80: Flags [P.], seq 12345:12400
# 抓取指定IP的所有收发包并输出十六进制
sudo tcpdump -n -x src or dst 192.168.0.130

功能说明:捕获指定IP的所有流量并以十六进制格式显示
理想输出

12:37:15.234567 IP 192.168.0.130.50002 > 192.168.1.100.80: Flags [S], seq 123460x0000:  4500 003c 1234 4000 4006 0000 c0a8 00820x0010:  c0a8 0164 0050 0089 0000 3039 0000 0000
# 将抓包内容保存到文件
tcpdump -n -x src 192.168.1.100 > xxx.log

功能说明:将抓包结果保存到文件以便后续分析
操作结果:生成包含原始数据包的xxx.log文件

# 按端口过滤
tcpdump -n src port 80
tcpdump -n dst port 80
tcpdump -n port 80

功能说明:分别捕获源端口、目的端口或任意方向端口为80的流量
理想输出

12:38:08.765432 IP 192.168.1.100.50003 > 192.168.0.183.80: Flags [P.], seq 12347:12450
# 按协议过滤
tcpdump -n proto icmp
tcpdump -n proto tcp
tcpdump -n proto udp

功能说明:分别捕获指定协议类型的数据包
理想输出

12:39:01.234567 IP 192.168.1.100 > 192.168.1.1: ICMP echo request
# 指定网络接口抓包
tcpdump -n -i eth0
tcpdump -n -i lo  # 本地回环接口

功能说明:在特定网络接口上捕获流量
理想输出

12:40:15.678901 IP 127.0.0.1.50004 > 127.0.0.1.8080: Flags [S], seq 12348
# 组合条件(and/or)
tcpdump 'ip.src == 192.168.1.100 and tcp.dstport == 9999'
tcpdump 'ip.src == 192.168.1.100 or ip.dst == 192.168.1.102'

功能说明:使用逻辑运算符组合多个过滤条件
理想输出

12:41:22.345678 IP 192.168.1.100.50005 > 192.168.1.102.9999: Flags [P.], seq 12349:12452

高级抓包示例

sudo tcpdump -n -i esn33 -xx src or dst www.taobao.com -AXX -vv | less
  • -xx:以十六进制和ASCII显示链路层数据
  • -A:以ASCII显示数据包内容
  • -XX:十六进制显示并包含链路层头
  • -vv:详细输出
  • | less:分页查看输出

功能说明:全面捕获并详细显示与淘宝相关的网络流量,适合深度分析


TCP连接管理

三次握手建立连接

在这里插入图片描述

过程解析
  1. 第一次握手(SYN)
    客户端 → 服务器:SYN=1, Seq=x
    客户端发起连接请求,进入 SYN_SENT 状态。

  2. 第二次握手(SYN+ACK)
    服务器 → 客户端:SYN=1, ACK=1, Seq=y, Ack=x+1
    服务器确认请求并同步自己的序列号,进入 SYN_RCVD 状态。

  3. 第三次握手(ACK)
    客户端 → 服务器:ACK=1, Ack=y+1
    客户端确认服务器的SYN,连接建立完成,双方进入 ESTABLISHED 状态。

关键点:三次握手确保双方的发送与接收能力正常,实现全双工通信。

编程对应函数

  • 客户端调用 connect() 触发握手。
  • 服务器调用 listen() 监听连接,accept() 接受连接。

四次挥手终止连接

在这里插入图片描述

过程解析
  1. 第一次挥手(FIN+ACK)
    主机A → 主机B:FIN=1, ACK=1, Seq=u, Ack=v
    A端主动关闭连接,停止发送数据,但仍可接收数据。

  2. 第二次挥手(ACK)
    主机B → 主机A:ACK=1, Ack=u+1
    B端确认A的关闭请求,A进入 FIN-WAIT-2 状态。

  3. 第三次挥手(FIN+ACK)
    主机B → 主机A:FIN=1, ACK=1, Seq=w, Ack=u+1
    B端也关闭连接,发送FIN。

  4. 第四次挥手(ACK)
    主机A → 主机B:ACK=1, Ack=w+1
    A确认B的FIN,等待2MSL后关闭连接。

关键点:TCP连接是全双工的,因此需要双方独立关闭,共需四次挥手。


万维网WWW

在这里插入图片描述

万维网(World Wide Web,简称 WWW 或 Web)并非一种独立的计算机网络,而是一个基于因特网的大规模、联机式信息储藏所。它通过"超链接"机制,使用户可以从一个站点方便地跳转到另一个站点,实现主动、按需获取信息。
图中展示了多个万维网站点(A、B、C、D、E),它们之间通过虚线"链接到"相互连接,表明信息是分布式存储的,而非集中在一个服务器上,体现了万维网的分布式服务特性。


在这里插入图片描述

为解决"如何让用户方便找到所需信息"的问题,万维网采用三大核心技术:

  • URL(统一资源定位符):为因特网上的每个资源(如网页、图片、文件)提供唯一的地址标识,实现精确定位。
  • HTTP(超文本传输协议):应用层协议,定义浏览器与服务器之间的交互规则,基于TCP实现可靠数据传输。
  • HTML(超文本标记语言):用于编写网页内容,支持嵌入超链接、文本、图像、音视频等多媒体元素,并可在浏览器中渲染展示。

此外,用户还可借助搜索引擎等工具快速查找所需信息。


在这里插入图片描述

URL结构与示例

使用HTTP的URL一般形式:

http://<主机>:<端口>/<路径>
  • 主机:服务器域名或IP地址(如 www.tsinghua.edu.cn
  • 端口:HTTP默认端口为 80,通常省略不写
  • 路径:服务器上资源的具体路径,若省略则指向该站点的主页
主页的含义
  • 可以是WWW服务器最高级别的页面
  • 某组织或部门定制的门户页面
  • 个人创建的自我介绍页面
示例

访问清华大学主页:

http://www.tsinghua.edu.cn

在这里插入图片描述

在这里插入图片描述

HTTP协议与万维网工作过程

  • HTTP角色
    HTTP是应用层协议,规定了浏览器(客户端)向服务器请求文档、服务器响应文档的格式与流程,是万维网交换文本、图像、音视频等多媒体文件的基础。

  • 工作流程

    1. 浏览器与服务器(如 www.tsinghua.edu.cn)建立TCP连接
    2. 浏览器发送HTTP请求报文,请求特定文档
    3. 服务器返回HTTP响应报文,携带请求的文档内容
    4. 传输完成后释放TCP连接(HTTP/1.0行为)

在这里插入图片描述

HTTP请求与响应流程

当用户点击指向"清华大学院系设置"页面的链接(URL:http://www.tsinghua.edu.cn/chn/yxsz/index.htm)时,发生以下步骤:

  1. 解析URL:浏览器提取主机名 www.tsinghua.edu.cn 和路径 /chn/yxsz/index.htm
  2. DNS解析:向DNS服务器查询该域名对应的IP地址
  3. 获取IP地址:DNS返回IP地址 166.111.4.100
  4. 建立TCP连接:浏览器与服务器在IP 166.111.4.100、端口 80 上建立TCP连接
  5. 发送HTTP请求:浏览器发送GET请求,获取 /chn/yxsz/index.htm 文件
  6. 接收响应:服务器返回HTML文件内容
  7. 释放连接:TCP连接关闭
  8. 显示内容:浏览器解析并显示文本内容

优化行为
浏览器可设置"仅下载文本",加快页面加载速度。图像、音频等内容仅显示占位图标,点击后再单独建立连接下载。


在这里插入图片描述

HTTP报文结构

HTTP是面向文本的协议,报文由ASCII字符组成,字段长度不固定。

两类报文
报文类型组成部分
请求报文1. 请求行(方法、URL、版本)
2. 首部行(多个字段名:值)
3. 实体主体(可选,如POST数据)
响应报文1. 状态行(版本、状态码、短语)
2. 首部行(多个字段名:值)
3. 实体主体(可选,如HTML内容)

主要区别:起始行不同(请求报文为"请求行",响应报文为"状态行")。


HTTP请求报文示例解析

GET /?pcm=202.412_0_0.0.0&scm=thor.412_14-201000.0.0.0&spm=smpc.home.top-nav.1.1756968683979AWFZBXy_1467 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Host: news.sohu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36

这是一条 HTTP/1.1 请求报文,用于向搜狐新闻服务器请求资源。

解析如下:
  • 请求行

    GET /?pcm=... HTTP/1.1
    
    • 方法:GET(获取资源)
    • 路径与参数:包含多个跟踪参数(用于统计来源)
    • 协议版本:HTTP/1.1
  • 请求首部字段

    • Accept:客户端可接受的内容类型,包括HTML、XML、图片等,q值表示优先级
    • Accept-Encoding:支持的压缩方式(gzip, deflate),减少传输体积
    • Accept-Language:首选语言为简体中文(zh-CN
    • Host:请求的主机名,用于虚拟主机识别
    • Connection: keep-alive:希望保持TCP连接,复用连接提高效率
    • User-Agent:客户端身份标识,此处为Windows 10上的Chrome浏览器(v121)

该请求体现了现代浏览器在访问网页时的标准行为:支持压缩、多语言、连接复用等特性。


Remote Address:
[240e:45:d000:3008:2a::]:80

在这里插入图片描述

这是用网络抓包工具 Wireshark捕获的网络数据包界面,展示了设备与搜狐新闻(news.sohu.com)等网络节点之间的通信情况:

  • 上半部分:是捕获的数据包列表,包含时间(Time)、源地址(Source)、目的地址(Destination)、协议(Protocol)、长度(Length)、信息(Info)等列,能看到有 TCP、HTTP 等协议的数据包,记录了不同时间、不同地址间的网络交互,比如 TCP 连接的建立(含 SYN 等标志)、HTTP 请求与响应等过程
  • 中间部分:是选中的某条数据包(这里是 HTTP 相关)的详细解析,展开了"Hypertext Transfer Protocol"(超文本传输协议)部分,能看到 HTTP 请求的具体内容,像请求行(包含请求方法、URL 等)、请求首部字段(如 Host 指定主机为 news.sohu.comConnection 表示连接方式,User-Agent 标识客户端为 Chrome 浏览器等)
  • 下半部分:是该数据包的十六进制与 ASCII 码形式的原始数据,可用于更底层的数据包内容分析,查看数据在网络传输中的原始字节形态

整体呈现了从网络数据包捕获到分层解析的过程,便于分析网络通信的细节,比如 HTTP 请求的构造、TCP 连接的交互等。

ipv6.addr == 240e:45:d000:3008:2a:: && tcp.port == 80


网络爬虫应用示例

天气API接口

接口网址
http://api.k780.com
https://sapi.k780.com    AppKey
77384Sign
5ac63f91d88ad9c5e08f6e513552b3f1

天气查询请求示例

https://sapi.k780.com/?app=weather.today&cityNm=台北&appkey=77384&sign=5ac63f91d88ad9c5e08f6e513552b3f1&format=json

API响应示例

{"success":"1","result":{"weaid":"360","days":"2025-09-04","week":"星期四","cityno":"taibeixian","citynm":"台北","cityid":"101340101","temperature":"31℃/25℃","temperature_curr":"31℃","humidity":"72%","aqi":"15","weather":"多云转晴","weather_curr":"阴","weather_icon":"http://api.k780.com/upload/weather/d/2.gif","weather_icon1":"","wind":"无持续风向","winp":"1级","temp_high":"31","temp_low":"25","temp_curr":"31","humi_high":"0","humi_low":"0","weatid":"3","weatid1":"","windid":"0","winpid":"1","weather_iconid":"2"}}

接口说明
该示例展示了如何通过HTTP GET请求调用天气API,获取指定城市的天气信息。请求中包含必要的认证参数(AppKey和Sign),API返回JSON格式的天气数据,包括温度、湿度、天气状况等信息。


数据封装与拆包回顾

数据在传输过程中经历完整的封装与解封装过程:

服务器端                          客户端
应用层                            应用层
传输层                            传输层
网络层   [数据拆包]           网络层   [数据封包]
接口层                            接口层
  • 数据封装结构|MAC头部|IP头部|TCP/UDP头部|应用数据|
  • 一帧数据:帧(frame)的最大传输单元(MTU)为1500字节

协议头部关键字段

IP头部

  • ipflag:D位(能否分片)、M位(是否最后一片)
  • TTL:生命周期计数器

TCP头部(20字节):

  • U:紧急数据标志
  • S:SYN标志(同步序列号)
  • F:FIN标志(结束连接)
  • R:RESET标志(重置连接)
  • P:PUSH标志(立即推送)
  • A:ACK标志(确认应答)

UDP头部(8字节):

  • 仅包含源端口、目的端口、长度和校验和

网络协议分析工具

Wireshark网络抓包工具

Wireshark是一款强大的网络协议分析工具,用于网络调试和协议分析:

  1. 启动方式

    sudo wireshark
    
  2. 基本操作流程

    • 选择网络设备进行监听
    • 设置过滤条件(如端口、IP地址等)
    • 分析捕获的数据包
  3. 常用过滤条件示例

    port 80                # 过滤HTTP流量
    ip.addr == 192.168.1.1 # 过滤指定IP的流量
    tcp.port == 50000      # 过滤指定端口的TCP流量
    

该工具能够直观展示网络数据包的层次结构,从物理层到应用层的完整协议栈,是理解和分析网络通信的重要工具。


HTTP协议详解

HTTP协议概述

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web应用的基础协议,具有以下特点:

  • B/S架构:浏览器/服务器模式
  • 资源定位:通过URL唯一标识互联网上的资源(网页、电影、图片等)
  • 标记语言:HTML(HyperText Markup Language)用于编写网页内容

HTTP交互步骤

  1. 建立连接:通过TCP三次握手建立连接
  2. 发送请求:浏览器发送HTTP请求报文
  3. 处理响应:等待服务器返回响应报文及数据
  4. 断开连接:通过TCP四次挥手断开连接(HTTP/1.0默认行为)

HTTP/1.1引入了持久连接(Keep-Alive)机制,可以在一个TCP连接上发送多个请求,提高了效率。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deeplizard深度学习课程(七)—— 神经网络实验

前言我们正在利用pytorch实现CNN。主要分为四个小部分&#xff1a;数据预处理、神经网络pytorch设计、训练神经网络 和 神经网络实验。在之前的章节中&#xff0c;我们已经完成了整个CNN框架的设计、训练与简单分析&#xff0c;本节将更进一步讨论神经网络处理过程中的细节问题…

STM32实践项目(激光炮台)

刚开始设想做一个上半部分可以上下180移动,下半部分底座360移动的激光炮台。于是便开始了实践。 所需材料清单: 序号 名称 数量 备注说明 1 面包板(Breadboard) 2 用于电路搭建和模块连接 2 杜邦线(公对公、公对母等) 若干 建议准备 30~50 根,方便连接 3 MB-102 电源模块…

不止是夹住,更是“感知”:Contactile GAL2触觉型夹爪实现自适应抓取

近日&#xff0c;专注于触觉传感与智能抓取技术的Contactile推出全新Contactile 触觉型夹爪 GAL2&#xff0c;这款集成先进传感技术的双指夹爪&#xff0c;凭借实时触觉反馈能力&#xff0c;为多行业智能抓取场景带来突破性解决方案。 Contactile 触觉型夹爪GAL2是一款多功能即…

Grafana - 监控磁盘使用率Variables使用

1 查询prometheus2 编辑grafana dashboard 2.1 配置变量2.2 配置多选2.3 配置legend2.4 优化显示 1 查询prometheus 指标名称描述node_filesystem_size_bytes文件系统总容量node_filesystem_avail_bytes用户可用空间node_filesystem_files_free剩余inode数量比如我们想看/目…

WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析10

上一篇&#xff1a;WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析9 如果有错误欢迎指正批评&#xff0c;在此只作为科普和参考。 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\iphlpapi.h 文章目录GetNetworkParams&#xff1a…

算法 --- 分治(归并)

分治&#xff08;归并&#xff09; 分治&#xff08;特别是归并&#xff09;算法适用于解决“整体求解依赖于子问题合并”且子问题相互独立的题目&#xff0c;其典型特征是能将大规模数据分解、递归求解&#xff0c;然后通过合并操作&#xff08;这正是归并排序中‘归并’的精…

【程序人生】有梦想就能了不起,就怕你没梦想

梦想不是遥不可及的星辰&#xff0c;而是需要我们用脚步丈量的路途两年前的一个夏日&#xff0c;我在日记本上郑重地写下&#xff1a;"我要掌握Web开发&#xff0c;能够独立构建一个完整的Web应用。"那天是2023年6月8日&#xff0c;当时的我连Java和JavaScript都分不…

前端基础(四十二):非固定高度的容器实现折叠面板效果

效果展示源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…

发票、收据合并 PDF 小程序,报销上传 3 秒搞定

每到报销、报税、财务整理时&#xff0c;手里是不是总有一堆格式不一的票据&#xff1a; 聊天记录里的电子发票邮件附件中的 PDF 发票手机相册里的报销收据甚至还有零散的纸质票据扫描件 要上传或交给财务前&#xff0c;还得一个个整理、转换、排版&#xff0c;既耗时又容易出…

GitHub每日最火火火项目(9.4)

1. bytebot-ai / bytebot 项目名称&#xff1a;bytebot项目介绍&#xff1a;基于 TypeScript 开发&#xff0c;是一款自托管的 AI 桌面智能体&#xff0c;能通过自然语言命令自动化执行计算机任务&#xff0c;运行在容器化的 Linux 桌面环境中。它借助自然语言处理和 AI 技术&a…

MMORPG 游戏战斗系统架构

&#x1f30c; MMORPG 游戏战斗系统架构 引用&#xff1a; 游戏服务器同步技术解析&#xff08;C&#xff09;MMORPG移动同步与反外挂 虽然我已离开游戏行业&#xff0c;转而与几位成功的商人共同创业&#xff0c;投身于商用机器人领域&#xff0c;但坦诚地说&#xff0c;游戏…

【数学建模学习笔记】启发式算法:蒙特卡洛算法

蒙特卡洛模拟入门笔记&#xff1a;从原理到代码实践一、什么是蒙特卡洛模拟&#xff1f;蒙特卡洛模拟是一种通过大量随机实验来解决复杂问题的方法。简单说&#xff0c;就是用电脑模拟成千上万次随机事件&#xff0c;然后统计结果&#xff0c;以此估算一个问题的答案。举个生活…

20250904的学习笔记

一、封包与拆包1. 封包&#xff08;Packet Encapsulation&#xff09;封包 是指在发送数据时&#xff0c;将数据从高层协议封装到低层协议的过程。每经过一层协议&#xff0c;数据都会被加上相应的协议头&#xff08;有时也会加上协议尾&#xff09;&#xff0c;形成一个新的数…

STM32F4 + RT-Thread 实战指南:TIM10 硬件定时器驱动开发与 1 秒定时功能实现

目录前言一、STM32定时器10是个什么定时器&#xff1f;二、工程创建、环境配置三、程序代码四、运行前言 在rtthread中&#xff0c;STM32F4的定时器10有些驱动并不完整&#xff0c;对比与其它定时器在使用时需要手动的添加一些代码&#xff0c;我在使用上拆踩了一些坑&#xf…

echarts图库

环形图// 指定图表的配置项和数据this.option {// tooltip: {// trigger: item// },color: [#FFB32F, #FF5757, #57D5FF, #2FA8FF, #95FFF1], // 扇形区域以及列表颜色legend: {orient:vertical,//文字横向排itemGap:20,left: left,textStyle:{color: #F3F9FF,// fontSi…

进程(Process)全面概述

进程&#xff08;Process&#xff09;全面概述 本文档扩展了进程的定义、属性、生命周期、管理机制及示例&#xff0c;涵盖 task_struct 结构、进程链表、状态与优先级、fork 函数及其写时复制示例。 一、进程基本概念 进程&#xff1a;系统进行资源分配和调度的基本单位&#…

Java并发编程:sleep()与wait()核心区别详解

今天完成了实验室纳新网站的工作&#xff0c;大体功能都已经完善&#xff0c;也和前端测试过了&#xff0c;费了点时间&#xff0c;而且今天大部分时间在看langchain4j的东西&#xff0c;就简单复习一下八股&#xff0c;等会再复习一下算法题吧在Java并发编程中&#xff0c;sle…

AR眼镜在智能制造的应用方向和场景用例|阿法龙XR云平台

AR巡检在制造业的应用已形成覆盖设备维护、质量检测、安全监控和远程协作四大类别的成熟场景&#xff0c;不同制造领域的实践各具特色&#xff0c;为行业提供了宝贵参考。在汽车制造领域&#xff0c;AR 巡检主要应用于生产线设备维护和焊接质量检测。在汽车厂总装车间部署 AR 系…

【Linux系统】线程同步

在上一章节中&#xff0c;我们使用互斥量之后&#xff0c;确实解决了数据竞争问题&#xff0c;但出现了新的问题&#xff1a;只有一个线程&#xff08;thread 1&#xff09;在处理所有售票任务。这展示了互斥量的一个局限性&#xff1a;它确保了线程安全&#xff0c;但不保证公…

代码随想录训练营第三十一天|LeetCode56.合并区间、LeetCode738.单调递增的数字

56.合并区间 思路&#xff1a;先让二维数组进行排序&#xff1b; 遍历数组&#xff0c;定义一个min表示重合区间的左边界&#xff0c;max表示重合区间的右边界&#xff1b; 如果当前区间左边大于max&#xff0c;就证明重合区间断了&#xff0c;就要对它进行加入ArrayList&am…