Day35 網絡協議與數據封裝

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…