數據包如何游走于 Iptables 規則之間?

在前文《Linux路由三大件》中,我們提到了 iptables 可以修改數據包的特征從而影響其路由。這個功能無論是傳統場景下的 防火墻,還是云原生場景下的 服務路由(k8s service)、網絡策略(calico network policy) 等都有依賴。

雖然業界在積極地推進 ipvs、ebpf 等更新、更高效的技術落地,但是出于各種各樣的原因(技術、成本、管理等),iptables 仍然有著非常廣泛的使用 ,所以我們有必要了解 iptables 的方方面面。今天我們就來了解其中的重要一環:調試和追蹤 iptables。更具體一點:一個數據包是怎么在 iptables 的各個 chain/table/rule 中游走的。

trace

我們知道,iptables 的 rule 最后是一個 target,這個 target 可以設置為 TRACE。這樣,匹配這個 rule 的包經過的所有 chain/table/rule 都會被記錄下來。

這個 rule 本身只能被放在?raw?表里,可以存在于?PREROUTING?和?OUTPUT?兩個 chain 中。其匹配規則和其他一般的 rule 沒有什么差別。

實踐

我們采用一個 docker 場景來進行實踐,如下圖:

亦即宿主機的 10000 端口映射給了容器的 80 端口。圖中有兩種測試場景,分別是:

  1. 本節點訪問容器 IP
  2. 跨節點訪問宿主機 IP

為了讓分析更直觀/簡單,我們用 telnet 測試即可(curl 會產生很多后續 http 包,不夠簡潔)。

OK,開始我們的測試!

首先在宿主機上開啟 iptables log

# check first
# cat /proc/net/netfilter/nf_logmodprobe nf_log_ipv4
sysctl net.netfilter.nf_log.2=nf_log_ipv4

然后增加 trace 配置

# 訪問容器 IP 使用
iptables -t raw -A OUTPUT -p tcp --destination 172.19.0.0/16 --dport 80 -j TRACE# 訪問節點 IP 使用
iptables -t raw -A PREROUTING -p tcp --destination 192.168.64.4 --dport 10000 -j TRACE

查看結果可以用這個命令:cat /var/log/messages | grep "TRACE:"

本節點訪問:telnet 172.19.0.9 80,結果:

fedora kernel: [ 2350.411619] TRACE: raw:OUTPUT:policy:2 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=11432 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959420 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080AAF8EE4320000000001030307) UID=0 GID=0 
fedora kernel: [ 2350.411634] TRACE: nat:OUTPUT:policy:2 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=11432 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959420 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080AAF8EE4320000000001030307) UID=0 GID=0 
fedora kernel: [ 2350.411639] TRACE: filter:OUTPUT:policy:1 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=11432 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959420 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080AAF8EE4320000000001030307) UID=0 GID=0 
fedora kernel: [ 2350.411644] TRACE: nat:POSTROUTING:policy:4 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=11432 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959420 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080AAF8EE4320000000001030307) UID=0 GID=0 
fedora kernel: [ 2350.411778] TRACE: raw:OUTPUT:policy:2 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=11433 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959421 ACK=357062108 WINDOW=502 RES=0x00 ACK URGP=0 OPT (0101080AAF8EE4320C2ACEC2) UID=0 GID=0 
fedora kernel: [ 2350.411784] TRACE: filter:OUTPUT:policy:1 IN= OUT=br-00ea7870520a SRC=172.19.0.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=11433 DF PROTO=TCP SPT=43256 DPT=80 SEQ=2316959421 ACK=357062108 WINDOW=502 RES=0x00 ACK URGP=0 OPT (0101080AAF8EE4320C2ACEC2) UID=0 GID=0 

跨節點訪問:telnet 192.168.64.4 10000,結果:

fedora kernel: [ 2631.978281] TRACE: raw:PREROUTING:policy:2 IN=enp0s1 OUT= MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=192.168.64.4 LEN=64 TOS=0x10 PREC=0x00 TTL=64 ID=0 PROTO=TCP SPT=52842 DPT=10000 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.978585] TRACE: nat:PREROUTING:rule:1 IN=enp0s1 OUT= MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=192.168.64.4 LEN=64 TOS=0x10 PREC=0x00 TTL=64 ID=0 PROTO=TCP SPT=52842 DPT=10000 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.979055] TRACE: nat:DOCKER:rule:3 IN=enp0s1 OUT= MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=192.168.64.4 LEN=64 TOS=0x10 PREC=0x00 TTL=64 ID=0 PROTO=TCP SPT=52842 DPT=10000 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.979077] TRACE: filter:FORWARD:rule:1 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.979585] TRACE: filter:DOCKER-USER:return:1 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.979585] TRACE: filter:FORWARD:rule:2 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.979585] TRACE: filter:DOCKER-ISOLATION-STAGE-1:return:3 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.980070] TRACE: filter:FORWARD:rule:8 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.980070] TRACE: filter:DOCKER:rule:1 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.980070] TRACE: nat:POSTROUTING:policy:4 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=64 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533180 ACK=0 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0 OPT (020405B4010303060101080A6EF8750A0000000004020000) 
fedora kernel: [ 2631.981288] TRACE: raw:PREROUTING:policy:2 IN=enp0s1 OUT= MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=192.168.64.4 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=0 PROTO=TCP SPT=52842 DPT=10000 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 
fedora kernel: [ 2631.981299] TRACE: filter:FORWARD:rule:1 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 
fedora kernel: [ 2631.981304] TRACE: filter:DOCKER-USER:return:1 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 
fedora kernel: [ 2631.981308] TRACE: filter:FORWARD:rule:2 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 
fedora kernel: [ 2631.981312] TRACE: filter:DOCKER-ISOLATION-STAGE-1:return:3 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 
fedora kernel: [ 2631.981316] TRACE: filter:FORWARD:rule:7 IN=enp0s1 OUT=br-00ea7870520a MAC=fa:f3:dc:b4:4e:ef:3a:f9:d3:9e:aa:64:08:00 SRC=192.168.64.1 DST=172.19.0.9 LEN=52 TOS=0x10 PREC=0x00 TTL=63 ID=0 PROTO=TCP SPT=52842 DPT=80 SEQ=1184533181 ACK=3245308350 WINDOW=2058 RES=0x00 ACK URGP=0 OPT (0101080A6EF8750D8E0CA28F) 

對比這張圖

以及宿主機節點上具體的規則(刪除了 docker0 相關)

*raw
:PREROUTING ACCEPT [312:33617]
:OUTPUT ACCEPT [335:24610]
-A PREROUTING -d 192.168.64.4/32 -p tcp -m tcp --dport 10000 -j TRACE
-A OUTPUT -d 172.19.0.0/16 -p tcp -m tcp --dport 80 -j TRACE
COMMIT*nat
:PREROUTING ACCEPT [4:903]
:INPUT ACCEPT [4:903]
:OUTPUT ACCEPT [222:16027]
:POSTROUTING ACCEPT [224:16155]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.19.0.0/16 ! -o br-00ea7870520a -j MASQUERADE
-A POSTROUTING -s 172.19.0.9/32 -d 172.19.0.9/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A DOCKER -i br-00ea7870520a -j RETURN
-A DOCKER ! -i br-00ea7870520a -p tcp -m tcp --dport 10000 -j DNAT --to-destination 172.19.0.9:80
COMMIT*filter
:INPUT ACCEPT [308:34040]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [351:26291]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-00ea7870520a -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-00ea7870520a -j DOCKER
-A FORWARD -i br-00ea7870520a ! -o br-00ea7870520a -j ACCEPT
-A FORWARD -i br-00ea7870520a -o br-00ea7870520a -j ACCEPT
-A DOCKER -d 172.19.0.9/32 ! -i br-00ea7870520a -o br-00ea7870520a -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-00ea7870520a ! -o br-00ea7870520a -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-00ea7870520a -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT

分析內容可以知:

  1. 兩個測試都是 TCP 三步握手的第一、三步的兩個包,從包的 SEQ 字段可以驗證,也可以用 iptables rule 的 pkts 字段的差異來進行驗證
iptables -v -t raw -L PREROUTING --line-number
Chain PREROUTING (policy ACCEPT 239 packets, 24919 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        8   445 TRACE      tcp  --  any    any     anywhere             fedora               tcp dpt:ndmp
  1. 對于 TCP 鏈接,只有第一個包才會經過 nat,后續包屬于?RELATED,ESTABLISHED,直接放過,不需要重新 nat
  2. 對于跨節點訪問,第一個包首先來到?PREROUTING?鏈, 命中了 docker 添加的?DNAT?規則:nat:DOCKERrule 3),效果就是第三行到第四行?DST?從?192.168.64.4?變成了?172.19.0.9
iptables -v  -t nat -L DOCKER --line-number
Chain DOCKER (2 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 RETURN     all  --  docker0 any     anywhere             anywhere            
2        0     0 RETURN     all  --  br-00ea7870520a any     anywhere             anywhere            
3        2   128 DNAT       tcp  --  !br-00ea7870520a any     anywhere             anywhere             tcp dpt:ndmp to:172.19.0.9:80

DNAT?后走到了?Forward?鏈,?DOCKER-USER?和?DOCKER-ISOLATION-STAGE-1?都?return?了。最后通過?filter:FORWARD:rule:8?來到?filter:DOCKER?上,accept?將包送到了?docker bridge: br-00ea7870520a?上,從而送進了容器 172.19.0.9。當然,第二個包依然屬于?RELATED,ESTABLISHED,所以在?filter:FORWARD:rule:7?上直接?ACCEPT,不需要再走?filter:DOCKER?了。

?資料直通車:Linux內核源碼技術學習路線+視頻教程內核源碼

學習直通車:Linux內核源碼內存調優文件系統進程管理設備驅動/網絡協議棧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42251.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ceph數據分布

ceph的存儲是無主結構,數據分布依賴client來計算,有兩個條主要路徑。 1、數據到PG 2、PG 到OSD 有兩個假設: 第一,pg的數量穩定,可以認為保持不變; 第二, OSD的數量可以增減,OSD的…

基于Java的深圳坂田附近閑置物品交易群管理系統

開發技術:java 開發框架:springmvc、spring、mybatis 數據庫:mysql 備注:方便大家將手中的二手閑置物品轉讓給需要的人,例如大家搬家的時候,有不要的(冰箱、洗衣機、桌子、椅子)等物…

RISC-V 整型通用寄存器介紹

簡介 RISC-V64位/32位提供了32個整型通用寄存器,編號是x0~x31,這些整型通用寄存器的寬度與架構位數一致。 浮點數寄存器與整形寄存器一樣也提供了32個:f0~f31,位數與架構位數一致。 通用寄存器介紹 零寄存器 x0/zero x0寄存…

力扣:65. 有效數字(Python3)

題目: 有效數字(按順序)可以分成以下幾個部分: 一個 小數 或者 整數(可選)一個 e 或 E ,后面跟著一個 整數 小數(按順序)可以分成以下幾個部分: (…

一、進入sql環境,以及sql的查詢、新建、刪除、使用

1、進入sql環境 》》》mysql -u root -p 》》》輸入密碼 2、sql語言的分類 3、注意事項: 4、基礎操作: (1)查詢所有數據庫: show databases; 運行結果: (2)創建一個新的數據庫&…

CSS練習

CSS練習 工具代碼運行結果 工具 HBuilder X 代碼 <!DOCTYPE html> <!-- 做一個表格&#xff0c;6行4列實現隔行換色&#xff08;背景色&#xff09;并且第3列文字紅色第一個單元格文字大小30px。最后一個單元格文字加粗--> <html><head><meta ch…

初階C語言-結構體

&#x1f31e; “少年有夢不至于心動&#xff0c;更要付諸行動。” 今天我們一起學習一下結構體的相關內容&#xff01; 結構體 &#x1f388;1.結構體的聲明1.1結構的基礎知識1.2結構的聲明1.3結構成員的類型1.4結構體變量的定義和初始化 &#x1f388;2.結構體成員的訪問2.1結…

自然語言處理從入門到應用——LangChain:記憶(Memory)-[自定義對話記憶與自定義記憶類]

分類目錄&#xff1a;《自然語言處理從入門到應用》總目錄 自定義對話記憶 本節介紹了幾種自定義對話記憶的方法&#xff1a; from langchain.llms import OpenAI from langchain.chains import ConversationChain from langchain.memory import ConversationBufferMemoryllm…

QT 使用第三方庫QtXlsx操作Excel表

1.簡介 一直以來&#xff0c;都想學習一下C/C如何操作excel表&#xff0c;在網上調研了一下&#xff0c;覺得使用C/C去操作很麻煩&#xff0c;遂轉向QT這邊&#xff1b;QT有一個自帶的類QAxObject&#xff0c;可以使用他去操作&#xff0c;但隨著了解的深入&#xff0c;覺得他…

c++游戲制作指南(四):c++實現數據的存儲和讀取(輸入流fstream)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;歡迎來到靜淵隱者的csdn博文&#xff0c;本文是c游戲制作指南的一部&#x1f35f; &#x1f355;更多文章請點擊下方鏈接&#x1f355; &#x1f368; c游戲制作指南&#x1f3…

最長重復子數組(力扣)動態規劃 JAVA

給兩個整數數組 nums1 和 nums2 &#xff0c;返回 兩個數組中 公共的 、長度最長的子數組的長度 。 示例 1&#xff1a; 輸入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 輸出&#xff1a;3 解釋&#xff1a;長度最長的公共子數組是 [3,2,1] 。 示例 2&#xff1a; 輸…

新寶馬M5諜照曝光,侵略感十足,將與奧迪、梅賽德斯-AMG正面競爭

報道稱&#xff0c;寶馬即將推出全新一代M5&#xff0c;該車的諜照最近再次曝光。早先&#xff0c;寶馬 M5 Touring 旅行汽車的賽道測試圖片已經在網絡上流傳開來&#xff0c;預計該車將與奧迪的RS6 Avant和梅賽德斯-AMG E63 Estate展開正面競爭。 從最新曝光的照片來看&#x…

【操作系統考點匯集】操作系統考點匯集

關于操作系統可能考察的知識點 操作系統基本原理 什么是操作系統&#xff1f; 操作系統是指控制和管理整個計算機系統的硬件和軟件資源&#xff0c;并合理地組織調度計算機的工作和資源的分配&#xff0c;以提供給用戶和它軟件方便的接口和環境&#xff0c;是計算機系統中最基…

Python土力學與基礎工程計算.PDF-鉆探泥漿制備

Python 求解代碼如下&#xff1a; 1. rho1 2.5 # 黏土密度&#xff0c;單位&#xff1a;t/m 2. rho2 1.0 # 泥漿密度&#xff0c;單位&#xff1a;t/m 3. rho3 1.0 # 水的密度&#xff0c;單位&#xff1a;t/m 4. V 1.0 # 泥漿容積&#xff0c;單位&#xff1a;…

神經網絡基礎-神經網絡補充概念-53-將batch norm擬合進神經網絡

代碼實現 import numpy as np import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, BatchNormalization, Activation from tensorflow.keras.optimizers import SGD# 生成隨機數據 np.random.seed(0) X np.…

【0基礎入門Python筆記】一、python 之基礎語法、基礎數據類型、復合數據類型及基本操作

一、python 之基礎語法、基礎數據類型、復合數據類型及基本操作 基礎語法規則基礎數據類型數字類型&#xff08;Numbers&#xff09;字符串類型&#xff08;String&#xff09;布爾類型&#xff08;Boolean&#xff09; 復合數據類型List&#xff08;列表&#xff09;Tuple&…

代碼隨想錄DAY62

這個移動0的問題還是比較重要的 因為涉及到一種思想&#xff1a;快慢指針&#xff01; class Solution { public: void moveZeroes(vector<int>& nums) { int slow0,fast0; for(;fast<nums.size();fast){ if(nums[fast]!0){ swap(nums[slow],nums[fast]); slow;…

Kafka 什么速度那么快

批量發送消息 Kafka 采用了批量發送消息的方式&#xff0c;通過將多條消息按照分區進行分組&#xff0c;然后每次發送一個消息集合&#xff0c;看似很平常的一個手段&#xff0c;其實它大大提升了 Kafka 的吞吐量。 消息壓縮 消息壓縮的目的是為了進一步減少網絡傳輸帶寬。而…

故障012:定時備份作業-6007懸案

故障012&#xff1a;定時備份作業-6007懸案 1. 問題描述2. 解決過程2.1 大膽推想2.2 找規律2.3 嘗試換掉AP2.4 檢查資源限制2.5 資源放寬SYSDBA 3. 精神感悟 DM技術交流QQ群&#xff1a;940124259 1. 問題描述 詭異的現象總是伴隨著隱藏的功能被打開&#xff0c;可能耽誤你很…

比ChatGPT更強的星火大模型V2版本發布!

初體驗 測試PPT生成 結果&#xff1a; 達到了我的預期&#xff0c;只需要微調就可以直接交付&#xff0c;這點比ChatGPT要強很多. 測試文檔問答 結果&#xff1a; 這點很新穎&#xff0c;現在類似這種文檔問答的AI平臺收費都貴的離譜&#xff0c;星火不但免費支持而且效果也…