網絡模型與linux資源管理工具

osi七層網絡模型
TCP/iP五層網絡模型
htop
vmstat
dstat
ip命令
ss命令

  1. 簡述osi七層模型和TCP/IP五層模型
  2. 簡述iproute家族命令
  3. 詳細說明進行管理工具htop、vmstat等相關命令,并舉例
  4. 使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,若ping通則輸出”success!”,若ping不通則輸出”fail!”

1、簡述osi七層模型和TCP/IP五層模型

clipboard

OSI七層:

  • 物理層:把數據轉換為傳輸介質上的電子流或模擬脈沖,并監視數據的傳輸
  • 數據鏈路層:提供與網絡適配器相連的接口,維護子網的邏輯鏈接
  • 網絡層:支持邏輯尋址與路由選擇
  • 傳輸層:為網絡提供錯誤控制和數據流控制
  • 會話層:在計算機的通信應用程序之間建立會話
  • 表示層:吧數據轉換為標準格式,管理數據加密與壓縮
  • 應用層:為應用程序提供網絡接口,支持文件傳輸,通信等功能的網絡應用

tcp/ip四層模型:

  • 網絡訪問層:提供了與物理網絡連接的接口,針對傳輸介質設置數據的格式,根據硬件的地址實現數據的尋址,對數據在物理網絡中的傳遞提供錯誤控制
  • 網絡層:提供獨立于硬件的邏輯尋址,從而讓數據能夠在具有不同物理結構的子網之間傳遞,提供路由功能來降低流量,支持不同網絡中的數據傳遞
  • 傳輸層:為網絡層提供了流量控制,錯誤控制和確認服務,充當網絡應用程序的接口
  • 應用層:為網絡排錯,文件傳輸,遠程控制和internet操作提供了應用程序,還支持應用編程接口(API),從而使得針對特定操作系統編寫的程序能夠訪問網絡

tcp/ip模型不是一個很嚴格的分界的模型,所以有說5層也有說四層,tcp/ip模型的實現也沒有嚴格遵守上圖的模型。

2、簡述iproute家族命令 iproute家族有很多命令其中比較常用的有ss,ip

ip命令:

簡介:查看/操作路由,設備,策略路由和隧道,在ip命令中有很多子命令,功能非常強大

格式:

ip [ OPTIONS ] OBJECT { COMMAND | help }
        OBJECT := { link | addr | route | netns  }    

配置網絡設備:

ip link:網絡設備配置
ip  link  set - 需要改變的設備的屬性
    dev NAME (default):指明要管理的設備,dev關鍵字可省略;
    up和down:
    multicast on或multicast off:啟用或禁用多播功能;
    name NAME:重命名接口
    mtu NUMBER:設置MTU的大小,默認為1500;
    netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間;                        
ip  link  show  - display device attributes                    
ip  link  help -  顯示簡要使用幫助;

舉例:

啟用/關閉網絡設備

clipboard

查看網絡設備信息

ip link show 或者 ip link list

clipboard

管理網絡命名空間:

ip netns:  -管理網絡命名空間
    ip  netns  list:列出所有的netns
    ip  netns  add  NAME:創建指定的netns
    ip  netns  del  NAME:刪除指定的netns
    ip  netns   exec  NAME  COMMAND:在指定的netns中運行命令

舉例:

1.添加一個netns名為Hal_netns

ip netns add Hal_netns

2.查看所有netns

clipboard

3.將ens37這個接口移動到Hal_netns這個網絡命名空間中

clipboard

4.刪除網絡命名空間Hal_netns

ip net del Hal_netns

clipboard

IP地址管理

ip address - IP地址管理
    ip address add - 添加新的ip地址
        ip  addr  add  IFADDR  dev  IFACE
        [label NAME]:為額外添加的地址指明接口別名;
        [broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;
        [scope SCOPE_VALUE]:
        global:全局可用;
        link:接口可用;
        host:僅本機可用;                                                                        
    ip address delete - 刪除ip地址
        ip addr  delete  IFADDR  dev  IFACE                         
    ip address show - 查看ip地址
        ip  addr   list  [IFACE]:顯示接口的地址;
    ip address flush -   清空ip地址
        ip  addr  flush  dev  IFACE

舉例:

1.為ens37新增一個別名ens37:0 ip為10.0.1.25/8

ip ad add 10.0.1.25/8 dev ens37 label ens37:0

clipboard

2.查看接口ip地址

ip ad li 或者 id ad show

clipboard

3.down掉ens37接口的10.0.1.25/8這個ip地址

ip addr delete 10.0.1.25/8 dev ens37

clipboard

管理路由表

ip route -管理路由表
    ip route add - 增加一個新的路由條目
          ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]
    ip route change - 更改路由條目
    ip route replace - 更改或新增路由條目
    ip route delete - 刪除路由條目
          ip  route  del  TYPE PRIFIX 
    ip route show -查看路由表
    ip route flush - 清空路由表            
    ip route get - 獲取單個路由條目
          ip  route  get  TYPE PRIFIX

舉例:

1.添加路由表

去往192.168.251.0網段的 下一跳是192.168.251.1 通過設備ens37 src地址設置為 192.168.253.159

ip route add 192.168.251.0 via 192.168.251.1 dev ens37 src 192.168.253.159

clipboard

2.查看路由表

ip route list 或者 ip route show

clipboard

3.清空ens37相關路由表

ip route flush dev ens37

4.獲取目標網絡為192.168.253.0/24的路由條目

clipboard

5.刪除目標網絡為192.168.251.0路由條目

clipboard

6.設置默認網關 ip route add default via 192.168.253.158

clipboard

7.刪除默認網關 ip route del default via 192.168.253.158

clipboard

ss命令:

格式:ss [options] [ FILTER ]

常用選項:

  • -t:TCP協議的相關連接
  • -u:UDP相關的連接
  • -w:raw socket相關的連接
  • -l:監聽狀態的連接
  • -a:所有狀態的連接
  • -n:數字格式
  • -p:相關的程序及其PID
  • -e:擴展格式信息
  • -m:內存用量
  • -o:計時器信息
  • FILTER := [ state TCP-STATE ] [ EXPRESSION ]

常見用法:

ss -tan 數字格式顯示tcp所有狀態的連接

ss -uan 數字格式顯示udp所有狀態的連接

ss -tnl 數字格式顯示tcp 監聽狀態的連接

ss -unl, 數字格式顯示udp連接中監聽狀態的連接

ss -tunlp 數字格式顯示udp與tcp狀態的連接以及相關程序

ss -tan ‘( dport = :22 or sport = :22 )’ 數字格式顯示源端口或目的端口為22的所有tcp連接

ss -tan state ESTABLISHED 數字格式顯示tcp狀態為established的連接

3、詳細說明進行管理工具htop、vmstat等相關命令,并舉例

htop

簡介:交互式查看進程,被認為top的升級版,可以支持鼠標點擊操作,這個命令要自己安裝官方鏡像源沒有這個源碼包

源碼包安裝:

  1. 下載相關的依賴
     yum install ncurses-devel gcc gcc-devel -y
  2. 解壓tar包,下載地址http://hisham.hm/htop/releases/2.0.0/
     cd /usr/local/src
     wget http://hisham.hm/htop/releases/2.0.0/htop-2.0.0.tar.gz
     tar -zxf htop-2.0.0.tar.gz
     cd htop-2.0.0
  3. 下載安裝htop
     ./configure  --prefix=/usr/local/htop
      make&& make install 
  4. 設置環境變量
     echo 'PATH=/usr/local/htop/bin:$PATH' > /etc/profile.d/htop.sh
     . /etc/profile
  5. 測試,命令行輸入htop命令

表示成功

常用選項:

  • -d #:指定延遲時間間隔;
  • -u UserName:僅顯示指定用戶的進程;
  • -s COLUME:以指定字段進行排序;

交互命令:

clipboard

  • F1:查看幫助
  • F2:自定義htop頁面
  • F3或/:搜索
  • F4或\:過濾
  • F5或t:以層級關系顯示各進程狀態;
  • F6:排序的方式
  • F7:nice值-1
  • F8:nice值+1
  • F9:發送信號(1-15)
  • F10:退出
  • u:顯示指定用戶進程
  • P、M、T:按照cpu,mem,Time排序
  • l:顯示選定的進程打開的文件列表;
  • s:跟蹤選定的進程的系統調用;
  • a:將選定的進程綁定至某指定的CPU核心;
  • I(大寫i):反向排序
  • e:顯示環境變量

htop面板解釋:

clipboard

系統概況:

  • CPU:cpu信息
  • Mem:內存信息
  • Swp:交換分區信息
  • Load average:1分鐘,5分鐘,10分鐘內的平均負載
  • Uptime:開機了多久
  • Time:當前時間

進程詳細信息

  • PID:進程PID
  • USER:進程所屬的用戶
  • PRI:優先級
  • NI:nice值
  • VIRT:虛擬內存集,申請的內存總量,假設申請了100m,但是實際只用了10m則這里還是顯示100m ,當10m不夠需要更多內存的時候,內核才會真正再繼續分配內存給他。
  • RES:常駐內存集,使用的物理內存的總和
  • SHR:與其他進程共享的內存
  • S:程序狀態一般有如下幾種
    • R:running 運行狀態
    • S:interruptable sleeping 可中斷睡眠
    • D:uninterruptable sleeping 不可中斷睡眠
    • T:Stopped 停止狀態
    • Z:zombie 僵尸進程
  • CPU%:cpu占比
  • MEM%:內存占比
  • TIME+:累計運行時間
  • Command:命令

vmstat命令

簡介:報告虛擬內存統計信息

格式:vmstat [options] [delay [count]]

輸出的信息:

clipboard

  • 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 用戶占CPU占比
    • sy:system 系統占比
    • id:idle 空閑占比
    • wa:wait 等待io時間
    • st: stolen 被偷走的時間,虛擬化之類的

常用選項:

  • -s:顯示內存統計數據;
  • DELAY [COUNT]:延遲多久刷新一次,刷新多少次退出

舉例:

1.顯示內存統計數

vmstat -s

clipboard

2.動態顯示統計數據,2s刷新一次

vmstat 2

clipboard

3.動態顯示統計數據,3s刷新一次,一共輸出4次

clipboard

dstat命令:

簡介:用于生成系統資源統計數據的通用工具

格式:dstat [-afv] [options..] [delay [count]]

常用選項:默認 -cdngy

  • -c, –cpu:顯示cpu相關信息;
  • -C #,#,…,total:查看某個cpu
  • -d, –disk:顯示磁盤的相關信息
  • -D sda,sdb,…,tobal:查看某個磁盤
  • -g:顯示內存頁page相關的速率數據;
  • -m:Memory的相關統計數據
  • -n:Interface的相關統計數據;
  • -N:指定網絡接口
  • -p:顯示process的相關統計數據;
  • -r:顯示io請求的相關的統計數據;
  • -s:顯示swapped的相關統計數據;
  • -l(小寫L): 查看1m,5m,10m負載
  • -t:顯示當前時間
  • -y:系統信息
  • –tcp :tcp套接字狀態
  • –udp:udp套接字狀態
  • –raw :裸套接字狀態
  • –socket :套接字狀態 (total, tcp, udp, raw, ip-fragments)
  • –ipc:ipc狀態(message queue, semaphores, shared memory)
  • –top-cpu:顯示最占用CPU的進程;
  • –top-io:最占用io的進程;
  • –top-mem:最占用內存的進程;
  • –top-lantency:延遲最大的進程;

例子:

1.顯示ens33網卡接口信息

dstat -Nens33 -n

clipboard

2.顯示tcp套接字狀態信息

dstat –tcp

clipboard

3.顯示cpu,磁盤,網絡,內存頁,系統信息(默認)

dstat -cdngy

clipboard

4.查看內存狀態信息

clipboard

4、使用until和while分別實現192.168.0.0/24 網段內,地址是否能夠ping通,若ping通則輸出”success!”,若ping不通則輸出”fail!”

while方法
[root@localhost ~]# cat shell/ping_while.sh 
#!/bin/bash
#
i=0
while [[ $i -le 255  ]]
do
    ping -c 2 192.168.150.${i} &> /dev/null
    if [[ $? -eq 0 ]]
    then
        echo -e  "192.168.150.${i}\t success!\n" 
    else
        echo -e  "192.168.150.${i}\t fail!\n" 
    fi 
    i=$((i+1)) 
done

until方法
[root@localhost ~]# cat shell/ping_until.sh 
#!/bin/bash
#
i=0
until [[ $i -gt 255  ]]
do
   ping -c 3 192.168.150.${i} &> /dev/null
   if [[ $? -eq 0 ]]
   then
        echo -e  "192.168.150.${i}\t success!\n" 
    else
        echo -e  "192.168.150.${i}\t fail!\n" 
    fi 
    i=$((i+1)) 
done

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103880

(0)
halhal
上一篇 2018-07-24 00:54
下一篇 2018-07-24 20:47

相關推薦

  • 認證基礎及DNS服務基礎

    認證基礎及DNS服務基礎

    Linux筆記 2018-04-27
  • AWK

    ### awk awk分為nawk,gawk 我們shell中常用的awk 其版本是gawk “`AWK會把file中的每一行(記錄/可以指定分隔符),讀入空間中并默認以空白(TAB\space\\n)等分割成幾個字段,每個字段用$#表示$0表示整行本身“` awk [Option] ‘program’ file option -F:…

    Linux筆記 2018-05-20
  • linux基礎3

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u root 2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# last -1 | id uid=0(root…

    Linux筆記 2018-07-08
  • 如何在現有的 Linux 系統上添加新的磁盤

    作為一個系統管理員,我們會有這樣的一些需求:作為升級服務器容量的一部分,或者有時出現磁盤故障時更換磁盤,我們需要將新的硬盤配置到現有服務器。

    Linux筆記 2018-04-24
  • Linux下history的用法

    Linux下history的用法 如果你經常使用Linux命令,那么使用history命令無疑會提升你的工作效率。history命令主要用于顯示歷史指令記錄內容, 通過快捷鍵快速下達歷史紀錄中的指令, -c: 清空命令歷史 清空內存中的歷史記錄 -d offset: 刪除歷史中指定的第offset個命令 例如 history -d 153 刪除第153條記錄…

    2018-04-01
  • 路由

    地址分類有類的 固定的網絡ID 是多少位就是多少位A 前8位是網絡ID0-127.x.x.x其中0.x.x.x是未知地址,不能用127.x.x.x是回環地址,不能用所以有1-126個網段可用公式:網絡(網段)數量=2^可變網絡ID位數一個網絡的主機數量=2^主機ID位數-2所以一個A類網絡主機數有1600萬netmask:255.0.0.0 B類128-19…

    Linux筆記 2018-05-06
欧美性久久久久