-
- 一、簡述osi七層模型和TCP/IP五層模型
- 1、OSI七層模型
- (1)什么是OSI七層模型
- (2)OSI七層模型的劃分
- (4)OSI七層模型各層定義
- 2、TCP/IP五層模型
- (1)什么是TCP/IP協議
- (2)TCP/IP五層各層定義
- 1、OSI七層模型
- 二、簡述iproute家族命令
- 1、ip命令
- (1)ip link: 網絡設備配置
- ( 2) ip addr :IP地址管理
- ( 3) ip route :路由管理
- 2、ss命令:
- 3、 netstat顯示網絡連接:
- 1、ip命令
- 三、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
- 1、htop:
- htop的安裝
- htop的交互界面
- htop的使用
- 1、htop:
- 2、vmstat命令:
- 四、使用until和while分別實現192.168.0.0/24** 網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”
- 1、用while實現:
- 2、用until實現:
- 一、簡述osi七層模型和TCP/IP五層模型
一、簡述osi七層模型和TCP/IP五層模型
1、OSI七層模型
(1)什么是OSI七層模型
開放系統互連參考模型 (Open System Interconnect 簡稱OSI)是國際標準化組織(ISO)和國際電報電話咨詢委員會(CCITT)聯合制定的開放系統互連參考模型,為開放式互連信息系統提供了一種功能結構的框架。它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
(2)OSI七層模型的劃分
OSI定義了網絡互連的七層框架(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層),即ISO開放互連系統參考模型。每一層實現各自的功能和協議,并完成與相鄰層的接口通信。OSI的服務定義詳細說明了各層所提供的服務。某一層的服務就是該層及其下各層的一種能力,它通過接口提供給更高一層。各層所提供的服務與這些服務是怎么實現的無關。
(4)OSI七層模型各層定義
- 1) 物理層 :提供為建立、維護和拆除物理鏈路所需要的機械的、電氣的、功能的和規程的特性;有關的物理鏈路上傳輸非結構的位流以及故障檢測指示。
- 2) 數據鏈路層:在網絡層實體間提供數據發送和接收的功能和過程;提供數據鏈路的流控。
- 3) 網絡層:控制分組傳送系統的操作、路由選擇、擁護控制、網絡互連等功能,它的作用是將具體的物理傳送對高層透明。
- 4) 傳輸層:提供建立、維護和拆除傳送連接的功能;選擇網絡層提供最合適的服務;在系統之間提供可靠的透明的數據傳送,提供端到端的錯誤恢復和流量控制。
- 5) 會話層:提供兩進程之間建立、維護和結束會話連接的功能;提供交互會話的管理功能,如三種數據流方向的控制,即一路交互、兩路交替和兩路同時會話模式 。
- 6) 表示層:代表應用進程協商數據表示;完成數據轉換、格式化和文本壓縮。
- 7)應用層:提供OSI用戶服務,例如事務處理程序、文件傳送協議和網絡管理等。
2、TCP/IP五層模型
(1)什么是TCP/IP協議
TCP/IP是Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網絡通訊協議,是Internet最基本的協議、Internet國際互聯網絡的基礎,由網絡層的IP協議和傳輸層的TCP協議組成。TCP/IP 定義了電子設備如何連入因特網,以及數據如何在它們之間傳輸的標準。協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的協議來完成自己的需求。通俗而言:TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。而IP是給因特網的每一臺聯網設備規定一個地址。
(2)TCP/IP五層各層定義
- 1)物理層:主要是基于電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0
- 2)數據鏈路層:建立邏輯連接、進行硬件地址尋址、差錯校驗等功能(由底層網絡定義協議)。并且將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
- ?<1>以廣播的方式通訊
- <2>以太網協議:早期的時候各個公司都有自己的分組方式,后來形成了統一的標準,即以太網協議ethernet
- <3>mac地址:head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編號,后六位是流水線號)
- 3)網絡層:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址,進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
- <1>協議有:IP(IPV4 IPV6) ARP RARP ICMP IGMP
- <2>IP協議:規定網絡地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,它規定網絡地址由32位2進制表示范圍0.0.0.0-255.255.255.255
一個ip地址通常寫成四段十進制數,例:192.168.10.1
- <3>IP協議的作用主要有兩個,一個是為每一臺計算機分配IP地址,另一個是確定哪些地址在同一個子網絡(配合子網掩碼)。
- 4)傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗。<1>協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層<2>封裝的數據格式
- 5)應用層:規定應用程序的數據格式,網絡服務與最終用戶的一個接口。<1>協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
二、簡述iproute家族命令
iproute家族:
1、ip命令
ip命令是顯示/操作路由、設備、策略路由和隧道的命令。
- ip命令的格式 ip [ OPTIONS ] OBJECT { COMMAND | help }
- OBJECT := { link | addr | route | netns }
- 注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;
(1)ip link: 網絡設備配置
- 1)ip link set [DEVICE] 設置接口屬性
dev NAME (default):指明要管理的設備,dev關鍵字可省略;
up和down:打開或關閉接口
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重命名接口
NUMBER:設置MTU的大小,默認為1500;
netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間;
? ? ? ? 示例:[root@bogon ~]# ip link set up eth0 #開啟et0網卡接口
- 2) ip link show [DEVICE] 顯示網卡硬件信息
示例:[root@bogon ~]# ip link show eth0 #查詢eth0網卡狀態和信息2: eth0: ? ? ? ? ? ? ? ? ? <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bb:fd:8e brd ff:ff:ff:ff:ff:ff
- 3) ip link help 顯示簡要使用幫助;
? ? ? ? 示例:[root@bogon ~]# ip link help
? ? ? ? ? ? ? ? ? ? Usage: ip link add link DEV [ name ] NAME
( 2) ip addr :IP地址管理
- 1) ip addr add IFADDR dev IFACE 添加地址
示例:[root@bogon ~]# ip addr add 172.16.30.30/16 dev eth0 #添加ip地址到eth0
? ? ? ? ? ?[root@bogon ~]# ip addr show eth0 #查詢eth0的ip地址
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
? ? ? ? ? ?link/ether 00:0c:29:bb:fd:8e brd ff:ff:ff:ff:ff:ff
? ? ? ? ? ?inet 172.16.15.12/16 brd 172.16.255.255 scope global eth0
? ? ? ? ? ?inet 172.16.30.30/16 scope global secondary eth0 #添加新ip成功
- 2) ip addr dele IFADDR dev IFACE 刪除地址:
示例: [root@bogon ~]# ip addr del 172.16.30.30/16 dev eth0 #eth0刪除ip地址
? ? ? ? ? ? ?[root@bogon ~]# ip addr show eth0 #查詢eth0的ip地址
? ? ? ? ? ?2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen ? ? ? ?1000
? ? ? ? ? ?link/ether 00:0c:29:bb:fd:8e brd ff:ff:ff:ff:ff:ff
? ? ? ? ? ?inet 172.16.15.12/16 brd 172.16.255.255 scope global eth0
? ? ? ? ? ?inet6 fe80::20c:29ff:febb:fd8e/64 scope link
- 3) ip addr list [IFACE] 顯示接口的地址
- 4) ip addr flush dev IFACE 清除協議地址
( 3) ip route :路由管理
- 1) ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP] 添加新路由
示例:
[root@bogon ~]# ip route add 192.168.1.0/24 via 172.16.0.254 dev eth0 src 172.16.15.12 #添加192.168.1.0路由到當前ip
[root@bogon ~]# ip route add default via 172.16.0.254 #設置默認網關
[root@bogon ~]# ip route list #查詢顯示路由
192.168.1.0/24 via 172.16.0.254 dev eth0 src 172.16.15.12 #已添加192.168.1.0新路由
172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.15.12 metric 1
default via 172.16.0.254 dev eth0 proto static
- 2) ip route del TYPE PRIFIX 刪除路由
示例:
[root@bogon ~]# ip route del 192.168.1.0/24 #刪除192.168.1.0路由
[root@bogon ~]# ip route show #查詢顯示路由
172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.15.12 metric 1 #已刪除192.168.1.0路由
default via 172.16.0.254 dev eth0 proto static
- 3) ip route flush TYPE PRIFIX 清除路由
示例:[root@bogon ~]# ip route flush 192.168.1.0/24
- 4) ip route get TYPE PRIFIX 設置單臂路由
2、ss命令:
- ss 命令可以用來獲取socket 統計信息,它可以顯示和netstat 類似的內容。但 ss 的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。
- 格式:ss [options] [ FILTER ]
選項:
-t:TCP協議的相關連接
-u:UDP相關的連接
-w:raw socket相關的連接
-l:監聽狀態的連接
-a:所有狀態的連接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
常用組合:-tnl -unl -tan -tunl -tnlp
示例: [root@bogon ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:44068 *:*
3、 netstat顯示網絡連接:
- netstat 命令用于顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
- 格式:netstat [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t:TCP協議的相關連接,連接均有其狀態;FSM(Finate State Machine);
-u:UDP相關的連接
-w:raw socket相關的連接
-l:處于監聽狀態的連接
-a:所有狀態
-n:以數字格式顯示IP和Port;
-e:擴展格式
-p:顯示相關的進程及PID;
常用組合:
-tan, -uan, -tnl, -unl, -tunlp
示例:
[root@bogon ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:44068 0.0.0.0:* LISTEN 1647/rpc.statd
三、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
1、htop:
htop是一款監控軟件,功能和界面強于top
htop的安裝
- 由于htop是epel的軟件,所以要 首先配置epel網絡yum源。
[root@bogon yum.repos.d]# vim epel.repo #創建epel倉庫文件
[epel] #編輯epel倉庫文件
name=EPEL-REPo
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=1
gpgcheck=0
~
[root@bogon yum.repos.d]# yum -y install htop #安裝htop軟件
htop的交互界面
- 輸入htop回車
界面內容分別為,cpu、內存、交換分區的使用情況,右邊部分為:Tasks為進程總數,當前運行的進程數、Load average為系統1分鐘,5分鐘,10分鐘的平均負載情況、Uptime為系統運行的時間。
以上各項分別為:
PID:進行的標識號
USER:運行此進程的用戶
PRI:進程的優先級
NI:進程的優先級別值,默認的為0,可以進行調整
VIRT:進程占用的虛擬內存值
RES:進程占用的物理內存值
SHR:進程占用的共享內存值
S:進程的運行狀況,R表示正在運行、S表示休眠,等待喚醒、Z表示僵死狀態
%CPU:該進程占用的CPU使用率
%MEM:該進程占用的物理內存和總內存的百分比
TIME+:該進程啟動后占用的總的CPU時間
COMMAND:進程啟動的啟動命令名稱F2 Htop設定
最下面一行是:
F1 幫助信息
F2 進入htop 設定的頁面,
F3 搜索進程
F4:過濾器
F5:以樹形方式顯示
F6:排序方式
F7,F8:調整進程nice值
F9:殺死進程
F10:退出htop
htop的使用
使用命令:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;
-s COLUME:以指定字段進行排序;
子命令:
l:顯示選定的進程打開的文件列表;
s:跟蹤選定的進程的系統調用;
t:以層級關系顯示各進程狀態;
a:將選定的進程綁定至某指定的CPU核心;
2、vmstat命令:
- vmstat命令的功能是虛擬內存統計報告
- 格式:vmstat [options] [delay [count]]
procs:
r:等待運行的進程的個數;CPU上等待運行的任務的隊列長度;
b:處于不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度;
memory:
swpd:交換內存使用總量;
free:空閑的物理內存總量;
buffer:用于buffer的內存總量;
cache:用于cache的內存總量;
swap
si:數據進入swap中的數據速率(kb/s)
so:數據離開swap的速率(kb/s)
io
bi:從塊設備讀入數據到系統的速度(kb/s)
bo:保存數據至塊設備的速率(kb/s)
system
in:interrupts,中斷速率;
cs:context switch, 上下文 切換的速率;
cpu
us: user space
sy:system
id:idle
wa:wait
st: stolen選項:
-s:顯示內存統計數據;示例:
[root@bogon yum.repos.d]# vmstat -s
999696 K total memory
309512 K used memory
388092 K active memory
234724 K inactive memory
147552 K free memory
172 K buffer memory
542460 K swap cache
2097148 K total swap
8 K used swap
2097140 K free swap
四、使用until和while分別實現192.168.0.0/24** 網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”
1、用while實現:
#!/bin/bash
#pingtest of while
declare -i i=1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#聲明一個數值 賦值為1
while [ $i -le 255 ] ; do ? ? ? ? ? ? ? ? #如果數值小于255為真,進入循環,為假退出循環
? ? ? ? ?ping -c 1 -w 1 192.168.0.$i &>/dev/null ? ? ? ? ? ? ? ? ? ? ? ? ?#每1秒 ping一次 并把返回值丟棄
? ? ? ? ? ? ? ? ? ? if [ $? -eq 0 ]; then ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #如果命令執行成功
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?echo “ping 192.168.0.$i sucess!” ? ? ? ? ? ? ? ? ? ? ? ?#則輸出ping’成功‘
? ? ? ? ? ? ? ? ? ? ?else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#否則
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?echo “ping 192.168.0.$i fail!” ? ? ? ? ? ? ? ? ? ? ? ? ? ?#則輸出ping’失敗‘
? ? ? ? ? ? ? ? ? ? fi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#判斷結束
let i++ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#i自加1循環
done
執行bash
[root@bogon bash]# bash pingtest.sh
ping 192.168.0.1 fail!
ping 192.168.0.2 fail!
ping 192.168.0.3 fail!
ping 192.168.0.4 fail!
ping 192.168.0.5 fail!
ping 192.168.0.6 fail!
ping 192.168.0.7 sucess!
ping 192.168.0.8 fail!
2、用until實現:
#!/bin/bash
#pingtest of while
declare -i i=1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#聲明一個數值 賦值為1
while [ $i -le 255 ] ; do ? ? ? ? ? ? ? ? ? ?# #如果數值大于255為假,進入循環,為真退出循環
? ? ? ? ping -c 1 -w 1 192.168.0.$i &>/dev/null ? ? ? ? ? ? ? ? #每1秒 ping一次 并把返回值丟棄
? ? ? ? ? ? ? ? ? ? if [ $? -eq 0 ]; then ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #如果命令執行成功
? ? ? ? ? ? ? ? ? ? ? ? ? ? echo “ping 192.168.0.$i sucess!” ? ? ? ? ? #則輸出ping’成功‘
? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#否則
? ? ? ? ? ? ? ? ? ? ? ? ? ? echo “ping 192.168.0.$i fail!” ? ? ? ? ? ? ? ?#則輸出ping’失敗‘
? ? ? ? ? ? ? ? ? ?fi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #判斷結束
let i++ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#i自加1循環
done
執行bash
[root@bogon bash]# bash pingtest.sh
ping 192.168.0.1 fail!
ping 192.168.0.2 fail!
ping 192.168.0.3 fail!
ping 192.168.0.4 fail!
ping 192.168.0.5 fail!
ping 192.168.0.6 fail!
ping 192.168.0.7 sucess!
ping 192.168.0.8 fail!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96622
寫的很好,并且很細,不錯。