第六周博客作業

一、簡述osi七層模型和TCP/IP五層模型
二、簡述iproute家族命令
三、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
四、使用until和while


    • 一、簡述osi七層模型和TCP/IP五層模型
      • 1、OSI七層模型
        • (1)什么是OSI七層模型
        • (2)OSI七層模型的劃分
        • (4)OSI七層模型各層定義
      • 2、TCP/IP五層模型
        • (1)什么是TCP/IP協議
        • (2)TCP/IP五層各層定義
    • 二、簡述iproute家族命令
      • 1、ip命令
        • (1)ip link: 網絡設備配置
        • ( 2) ip addr :IP地址管理
        • ( 3) ip route :路由管理
      • 2、ss命令:
      • 3、 netstat顯示網絡連接:
    • 三、詳細說明進行管理工具htop、vmstat等相關命令,并舉例
      • 1、htop:
        • htop的安裝
        • htop的交互界面
        • htop的使用
    • 2、vmstat命令:
    • 四、使用until和while分別實現192.168.0.0/24** 網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”
      • 1、用while實現:
      • 2、用until實現:

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

1、OSI七層模型

(1)什么是OSI七層模型

開放系統互連參考模型 (Open System Interconnect 簡稱OSI)是國際標準化組織(ISO)和國際電報電話咨詢委員會(CCITT)聯合制定的開放系統互連參考模型,為開放式互連信息系統提供了一種功能結構的框架。它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。

ois七層

(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 DHCPip

二、簡述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回車
  • htop

htop1界面內容分別為,cpu、內存、交換分區的使用情況,右邊部分為:Tasks為進程總數,當前運行的進程數、Load average為系統1分鐘,5分鐘,10分鐘的平均負載情況、Uptime為系統運行的時間。

htop2以上各項分別為:

PID:進行的標識號
USER:運行此進程的用戶
PRI:進程的優先級
NI:進程的優先級別值,默認的為0,可以進行調整
VIRT:進程占用的虛擬內存值
RES:進程占用的物理內存值
SHR:進程占用的共享內存值
S:進程的運行狀況,R表示正在運行、S表示休眠,等待喚醒、Z表示僵死狀態
%CPU:該進程占用的CPU使用率
%MEM:該進程占用的物理內存和總內存的百分比
TIME+:該進程啟動后占用的總的CPU時間
COMMAND:進程啟動的啟動命令名稱F2 Htop設定

htop6

最下面一行是:
F1 幫助信息
F2 進入htop 設定的頁面,
F3 搜索進程
F4:過濾器
F5:以樹形方式顯示
F6:排序方式
F7,F8:調整進程nice值
F9:殺死進程
F10:退出htop

htop的使用

使用命令:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;

htop4
-s COLUME:以指定字段進行排序;
子命令:
l:顯示選定的進程打開的文件列表;

htopl
s:跟蹤選定的進程的系統調用;

htopt
t:以層級關系顯示各進程狀態;

htops
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

(0)
任總任總
上一篇 2018-04-20
下一篇 2018-04-20

相關推薦

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-04-26 19:27

    寫的很好,并且很細,不錯。

欧美性久久久久