第六週--簡述osi七層模型和TCP/IP五層模型
目錄
三、詳細說明進行管理工具htop、vmstat等相關命令,並舉例
四、使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,弱ping通則輸出"success!",若ping不通則輸出"fail!"
一、簡述osi七層模型和TCP/IP五層模型
OSI 七層模型:
7、應用層:OSI 參考模型中最靠近使用者的一層,為計算機使用者提供應用介面,也為使用者直接提供各種網路服務。我們常見應用層的網路服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。
6、表示層:提供各種用於應用層資料的編碼和轉換功能,確保一個主機的應用層傳送的資料能被另一個主機的應用層識別。如果有必要,該層可以提供一種標準的表示形式,用於將計算機內部的多種資料格式轉換成通訊中採用的標準表示形式。
5、會話層:負責建立、管理和終止表示層實體之間的通訊會話。
4、傳輸層:建立了主機之間的端到端的連線。傳輸層的作用,是為上層協議提供端到端的可靠的透明的資料傳輸服務,包括差錯控制和流量控制等問題。我們通常說的TCP、UDP就是在這一層。埠號即是這裡的“ 端 ”。TCP 協議。UDP 協議。
3、網路層:網路層通過 IP 定址來建立兩個網路節點之間的連線,為源主機的傳輸層送來的分組,選擇合適的路由和交換節點,正確無誤的按照 IP 地址傳送給目的主機的傳輸層。就是通常說的 IP 層,使用 IP協議和路由器的路由選擇資訊。資料傳輸單位是分組。IP 地址。路由器。IP 協議。
2、資料鏈路層:將位元組合成位元組,再將位元組組合成幀,使用資料鏈路層地址 (乙太網使用的是 MAC 地址)來訪問介質,並進行差錯檢測。在物理層提供的服務基礎之上,負責在通訊的實體之間建立資料鏈路。傳輸以幀為單位的資料包。
1、物理層:實際的最終訊號的傳輸是通過物理層實現的。通過物理介質傳輸0-1 位元流。常用的裝置有(各種物理裝置)集線器、中繼器、調變解調器、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。 傳輸的單位是位元。
TCP/IP五層模型
二、簡述iproute家族命令
使用檢視命令:
]# rpm -qi iproute:檢視iproute程式包; ]# uname -r:檢視核心版本;
其結果是iproute與核心版本一致,因為iproute配置的大多數功能都是直接放置在核心中生效的,必須同核心做密切配合;
1、ip命令:
show / manipulate routing, devices, policy routing and tunnels(操作路由、裝置、策略路由和隧道)
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
link:網路裝置配置;
ip link set:改變裝置屬性;
dev
NAME(default):指明要管理的裝置,dev關鍵字可省略;
up和down:啟用和禁用介面;
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重新命名介面(先down掉介面,才能改名);
mtu NUMBER:設定mtu大小;預設1500位元組;
txqlen|txqueuelen NUMBER:設定傳送佇列長度;
netns PID:ns為namespace,核心支援名稱空間,用於將介面移動到指定的網路名稱空間;
例如:
]# ip link set eth1 down:禁用eth1介面;
]# ip link set dev eth1 up:啟用eth1介面;
]# ip link set eth1 multicast on:啟用eth1介面多播;
]# ip link set eth1 name eno666:把eth1介面重新命名為eno666;
ip link show:顯示裝置屬性(檢視二層裝置的屬性,與IP地址無關);
ip link list
例如:
]# ip link show:類似ifconfig命令;
qdisc:佇列;
pfifo_fast:佇列型別先進先出;
qlen:佇列長度;
link/ether:MAC地址;
brd:MAC的廣播地址;
]# ip link show:檢視二層裝置的屬性;
]# ip link list:同show功能;
]# ip li l:命令簡寫;
]# ip li sh:命令簡寫;
注意:命令可簡寫,只要是唯一識別的命令; ip link help:顯示簡要使用幫助;
2、 netns:網路名稱空間;
ip netns add NETNAMESPACE_NAME:設定網路名稱空間名稱;
ip link set IFACE netns NETNAMESPACE_NAME:把指定介面移動到指定網路名稱空間中;
ip netns exec NETNAMESPACE_NAME COMMAND:在網路名稱空間中執行命令;
ip netns :manage network namespaces
ip netns add NAME:建立指定的netns;
ip netns del NAME:刪除指定的netns;
ip netns list:列出所有的netns;
ip netns exec NAME COMMAND:在指定的netns中執行命令;
例如:
]# ip netns add mynet:設定網路名稱空間為mynet;
]# ip link set eno33554984 netns mynet:把介面移動到網路名稱空間為mynet中;
]# ip link show:此時就看不到eno33554984介面了;
]# ip netns exec mynet ip link show:使用exec才能檢視網路名稱空間為mynet中的介面;
3、addr:協議地址管理
ip address add:新增新的協議地址;
ip addr add IFADDR dev IFACE ,可在一個介面加多個IP地址;同網段IP地址顯示為secondary;
[label NAME]:為額外新增的地址指明介面別名,使用ifconfig就能顯示了;
[broadcast ADDRESS]:廣播地址,會根據IP和NETMASK自動計算得到;
[scope SCOPE_VALUE]:
SCOPE_VALUE:
global:全域性可用:
site:
link:介面可用,僅自己ping自己可以,不用於和其它主機通訊;
host:僅本機可用;
例如:
]# ip ad show:檢視介面地址;
]# ifconfig eth1 0:刪除eth1的地址;
]# ip addr add 192.168.10.101/24 dev eth1:新增eth1介面地址為192.168.10.101;
]# ip addr show eth1:檢視eth1介面地址;
]# ifconfig eth1:檢視eth1介面地址;
]# ip addr add 10.0.10.100/8 dev eth1:新增eth1介面第二個IP地址;
]# ifconfig:只能顯示介面的第一IP地址;檢視多地址可使用ip addr show;
如果想讓ifconfig顯示一個介面的多個地址,要在設定多地址時,新增標籤後,才能顯示;
]# ip addr add 10.1.1.10/8 dev eth1 label eth1:0:給eth1第二地址配置label名稱為eth:0;
ip address del:刪除協議地址;
ip addr del IFADDR dev IFACE
例如:
]# ip addr del 10.1.1.10/8 dev eth1:刪除eth1介面的地址;
ip address show:檢視協議地址;
ip addr list [IFACE]:顯示指定介面的地址;
ip address flush:清空所有協議地址(linux可以在一個介面上新增多個地址);
ip addr flush dev IFACE:清空指定介面上所有地址;
例如:
]# ip addr flush dev eth1:刪除eth1上的所有地址;
說明:flush和show可以使用模式,查詢或刪除以什麼開頭的ip地址的功能;
4、ip route命令:
routing table management
ip route add:新增路由;
dev NAME:設定由哪個接口出去;
via ADDRESS:下一跳地址(gw);
src ADDRESS:配置一個介面有多個地址時,要指明源地址;
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ip route add default via GW:新增預設路由;
例如:
]# ip addr add 10.0.10.100/8 dev eth1:新增eth1介面ip地址;
]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1
到達192.168.0.0網路通過eth1介面到達下一跳地址為10.0.0.1出去,注意確保主機在10.0.0.0網路上;
]# ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
通過eth1介面下的10.0.20.100地址,經下一跳10.0.0.1達到192.168.1.0網路,注意確保主機在10.0.0.0網路上;
]# ip route list:檢視路由表;
]# ip route add default via 172.18.0.1 dev eth0
新增預設路由,通過eth0介面,經下一跳172.18.0.1地址出去,注意確保主機在172.18.0.0網路上;
ip route change:更改路由;使用格式同ip route add;
ip route replace:替換路由;使用格式同ip route add;
ip route delete:刪除路由條目;
ip reoute del TYPE PREFIX
例如:
]# ip route del 192.168.1.0/24:刪除192.168.1.0這條路由;
ip route show:檢視路由表;
ip route show TYPE PREFIX
例如:
~]# ip route show src 172.18.252.23:顯示原地址172.18.252.23能到達的路由;
ip route flush:清空路由表;同show用法;
ip route flush TYPE PREFIX
例如:
]# ip route flush 10/8:清空10網段的路由;
注意:刪除IP地址是大範圍時,因為大範圍包括小範圍有時刪不掉
ip route get:獲取指定路由條目;
ip route get TYPE PREFIX
前提是路由表內要有路由條目,否則查詢不到;
例如:
]# ip route get 10.0.0.0/8:檢視到達10.0.0.0的路由從本地哪個端口出去的;
5、ss命令:
another utility to investigate sockets
ss [options] [ FILTER ]
選項:
-t:檢視tcp協議相關的連結;
-u:檢視udp相關的連結;
-w:檢視raw socket相關的連結;
-l:檢視監聽狀態的連結;
-a:檢視所有狀態的連結;
-n:以數字格式顯示;
-p:檢視相關的程序及其PID;
-e:檢視擴充套件格式資訊;
-m:檢視記憶體用量;
-o:檢視計時器資訊;
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP狀態過濾功能,講完後的的內容才會理解此處命令;
TCP的常見狀態:
LISTEN:監聽;
ESTABLISHED:建立的連線;
FIN_WAIT_1:傳送斷開後等待斷開確認;
FIN_WAIT_2:收到斷開後確認斷開;
SYN_SENT:確認收到斷開訊號;
SYN_RECV:確認
CLOSED:
EXPRESSION:
dport:目標埠;
sport:源埠;
例如:'(dport=:22 or sport=:22'
]# ss -tan state ESTABLISHED:檢視tcp連線狀態為ESTABLISHED的資訊;
]# ss -tan '( dport = :22 or sport = :22 )':檢視tcp連線中源埠為22或目標埠為22的資訊;
]# ss -tan state ESTABLISHED:僅檢視tcp連線中ESTABLISHED狀態的資訊;
三、詳細說明進行管理工具htop、vmstat等相關命令,並舉例
- htop命令:
選項:
-d #:指定延遲時間間隔
-u UserName:僅顯示指定使用者的程序
-s COLUME:以指定欄位進行排序 - htop -u root -d 10
-
- PID:程序ID
- USER:使用者名稱
- PRI:優先順序
- NI:nice值
- VIRT:Size in memory of the total program size
- RES:所使用的實體記憶體
- SHR:共享記憶體
- S:程序狀態
- CPU%:cpu使用率
- MEM%:記憶體使用率
- TIME+:消耗的cpu時間
- COMMADN:有哪些命令執行
子命令:
l:顯示選定的程序開啟的檔案列表
s:跟蹤選定的程序的系統呼叫
t:以層級關係顯示各程序狀態
a:將選定的程序繫結至某指定的cpu核心 - vmstat命令:
Report virtual memory statistics -
vmstat [options] [delay] [count]
- procs
- r:等待執行的程序的個數;cpu上等待執行的人物的佇列長度;
b:處於不可中斷睡眠態的程序個數;被阻塞的人物佇列的長度;
memory
swpd:交換記憶體使用總量
free:空閒的實體記憶體總量
buffer:用於buffer的記憶體總量
cache:用於cache的記憶體總量
swap
si:資料進入swap中的資料速率(kb/s)
so:資料離開swap中的資料速率(kb/s)
lo
bi:從塊裝置讀入資料到系統的速度(kb/s)
bo:儲存資料至塊裝置的速率(kb/s)
system
in:interrupts,中斷產生的速率;
cs:context switch上下文切換的速率;程序被核心調來調去的速率
us:user space
sy:system
id:idle空閒的
wa:wait等待io完成
st:stolen被虛擬化偷走的 - 選項:
-s:顯示記憶體統計資料
pmap命令:
-report memory map of a process - pmap [options] pid […]
- -x:顯示詳細格式的資訊;
另一種檢視方式:cat /proc/PID/maps - glance命令:
-A cross-platform curses-based monitoring tool - 內建命令:
- 選項:
-b:以byte為單位顯示網上資料速率;
-d:關閉磁碟i/o模組
-m:關閉mount模組
-n:關閉network
-t #:重新整理時間間隔
-1:每個cpu的相關資料單獨顯示
-o:{HTML|CSY}:輸出格式;
-f:/path/to/somedir:設定輸出檔案的位置 - C/S模式下執行glances命令:
服務模式:
glances -s -B IPADDR 本機的某地址,用於監聽.
客戶端:
glance -c IPADDR
IPADDR:是遠端伺服器地址; - dstat命令:
-verstile tool for generating system resource statistics
dstat [-afv] [options..] [delay] [count] - 常用選項:
-c,–cpu:顯示cpu相關資訊
-d,–disk:顯示磁碟相關資訊
-g:顯示page相關的速率資料
-m:memory的相關統計資料
-n:interface的相關統計資料
-p:顯示process的相關統計資料
-r:顯示io請求的相關的統計資料
-s:顯示swapped的相關統計資料 - –tcp
–udp
–raw
–socket
–ipc
–top-cpu:顯示最佔用cpu的程序
–top-io:顯示最佔用io的程序
–top-mem:顯示最佔用記憶體的程序
–top-lantency:延遲最大的程序 - kill命令:
-terminate a process
用於向程序傳送訊號,以實現對程序的管理; - 顯示當前系統可用訊號:
kill -l [signal] - 每個訊號的標識方式由三種
1.訊號的數字標識
2.訊號的完整名稱
3.訊號的簡寫名稱
向程序發訊號:
kill [-s signal | -SIGNAL] pid… - 常用訊號:
1.SIGHUP:無須關閉程序而讓其重讀配置檔案
2.SIGINT:終止正在執行的程序,相當於ctrl+c
9.SIGKILL:殺死執行中的程序
15.SIGTERM:終止執行中的程序
18.SIGCONT:
19.SIGSTOP
killall命令:
-kill processes by name
killall [-SIGNAL] program
四、使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,弱ping通則輸出"success!",若ping不通則輸出"fail!"
while
#!/bin/bash
#
declare -i i=1
while [ $i -le 254 ];do
if ping -W 1 -c 1 192.168.0.$1 &> /dev/null;then
echo "host 192.168.0.$i is alive."
else
echo "host 192.168.0.$i is down."
fi
let i++
done
until
#!/bin/bash
#
declare -i i=1
until [ $i -gt 254 ];do
if ping -W 1 -c 1 192.168.0.$1 &> /dev/null;then
echo "host 192.168.0.$i is alive."
else
echo "host 192.168.0.$i is down."
fi
let i++
done