馬哥教育網絡班21期-第八周課程練習

第八周作業

1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。

  • 集線器:集線器工作在OSI七層模型的物理層;功能是將傳輸信號再生或放大,收到數據后將數據轉發至除接收接口外的所有接口(廣播)),但是由于集線器所有端口屬于共享帶寬,屬于同一個沖突域和屬于同一個廣播域,容易產生信號沖突導致幀碎片,現今大部分集線器已經被交換機所替代;

  • 網橋:網橋工作在OSI七層模型的物理層;其每個一個接口都是單獨的沖突域,網橋將多個網絡在數據鏈路層連接起來,網橋能夠識別數據鏈路層中的數據幀,可以CRC方式校驗數據幀的完整性,當網橋從一個網段收到一個數據幀,就會在數據庫中登記(或者更新)數據幀的源地址屬于這個網段,并檢查數據包的目的地址。如果目的地址在數據庫中屬于另外一個網段,則網橋向該網段轉發該數據幀;如果目的地址在數據庫中沒有記錄,則網橋向除了源地址所在之外的其他所有網段轉發(flood)該數據幀。網橋的所有端口屬于同一個廣播域,由于網橋的端口數量一般很少,而且現今交換機價格低廉化,網橋已經被交換機所取代;

  • 二層交換機:二層交換機工作在OSI七層中的數據鏈路層;可以把它看作是一個多端口的網橋,可以學習MAC地址并將其存儲在其自身的MAC地址表里面,每個端口都是獨立式帶寬,各屬于獨立的沖突域;當交換機收源端口發往目的端口的數據幀后,將先學習源端口的MAC地址并記錄到MAC地址表,然后查詢自己的MAC地址表是否存在目的MAC地址,沒有則進行除源端口外的所有端口數據泛洪,當收到目的MAC地址的回應后,將目的MAC地址學習進MAC地址表,下次數據轉發直接發送到目的端口;交換機默認屬于一個廣播域內,但是可以通過vlan技術將廣播域進行分離;二層交換機一般應用于網絡中的接入層,用于用戶PC或服務器的接入;

  • 三層交換機:三層交換機工作在OSI七層中的網絡層;可以處理第三層網絡層協議,用于連接不同網段(前提是同一類型的局域子網);支持部分路由功能,三層交換機可以像二層交換機那樣通過MAC地址標識數據包,也可以像傳統路由器那樣在兩個局域網子網之間進行功能較弱的路由轉發;一次路由,多次轉發,通過專用的ASIC芯片處理數據轉發;三層交換機一般用于園區網的匯聚層或者核心層,由于其不支持廣域網協議,故不能完全代替路由器的功能;

  • 路由器:路由器工作在OSI七層中的網絡層,在網絡層上連接不通網絡,基于其內部的路由表進行數據轉發,路由器可以連接不通類型的網絡,例如局域網和廣域網,專業處理復雜路由路徑和復雜的網絡連接;一般用于企業的外網出口或者少數用于企業不同地域機房的出口;

2、IP地址的分類有哪些?子網掩碼的表示形式及其作用

A、B、C類為單播地址,可配置在電腦或網絡設備上;D類為組播(多播)地址;E類為保留地址;

  • A類地址:1.0.0.0-126.255.255.255;默認子網掩碼:255.0.0.0;前8位二進制數為網絡位,每個網絡可用主機位:2^24-2;

  • B類地址:128.0.0.0-191.255.255.255;默認子網掩碼:255.255.0.0;前16位二進制數為網絡位,每個網絡可用主機位:2^16-2;

  • C類地址:192.0.0.0-223.255.255.255;默認子網掩碼:255.255.255.0;前24位二進制數為網絡位,每個網絡可用主機位:2^8-2;

  • D類地址:D類為多播(組播)地址,范圍為224.0.0.0-239.255.255.255;

  • E類地址:E類為保留地址,范圍為:240.0.0.0-255.255.255.254

特殊地址:

  • 0段位全0網段,默認不使用;

  • 127.0.0.0,環回地址網段;

  • 私有地址

    • 10.0.0.0/8

    • 172.16.0.0/16-172.31.255.255/16

    • 192.168.0.0/24-192.168.255.255./24

3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。

OSI參考模型:

數據單元 功能
應用層 數據 網絡進程到應用程序。針對特定應用規定各層協議、時序、表示等,進行封裝 。在端系統中用軟件來實現,如HTTP等;
表示層 數據 數據表示形式,加密和解密;
會話層 數據 主機間通訊,管理應用程序之間的會話。規定通信時序 ;數據交換的定界、同步,創建檢查點等;
傳輸層 數據段 在網絡的各個節點之間可靠地分發數據包;
網絡層 網絡分組/數據包(路由器) 路由和(不一定可靠的)分發報文。路由( IP尋址),擁塞控制;
數據鏈路層 數據幀(交換機) 一個可靠的點對點數據直鏈。檢錯與糾錯(CRC碼);多路訪問;尋址;
物理層 比特(集線器) 點對點數據直鏈,確保原始的數據可在各種物理媒體上傳輸,定義機械特性,電氣特性等;

TCP/IP協議,這是一個真正廣泛使用的協議簇;

對應OIS哪一層 涉及協議
應用層 應用層、表示層、會話層 Http,Telnet,DNS等
傳輸層 傳輸層 TCP、UDP等
網絡互連層 網絡層 IP、IPS等
網絡接口層 數據鏈路層、物理層 Ethernet 802.3、PPP、X.23等

4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)

  • 動態獲?。―HCP)

  • 手動指定

    • 配置主機的IP地址和掩碼;

    • 配置默認網關,必要時需要指定精確路由;

    • 配置DNS服務器;

5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。

臨時生效實例:
1、配置IP和掩碼:
(1)ifconfig interface 192.168.1.1 netmmask 255.255.255.0
或 
(2)ip addr replace 192.168.1.1/24 dev eth0
2、配置默認網關
ip route add efault via 192.168.1.254 或
route add default ge 192.168.1.254

永久生效(配置文件)
1. 編輯/etc/sysconfig/networ-script/下的的接口配置文件,如ifcfg-eth0,該配置文件可以配置IP、掩碼、網關、DNS等信息
2. 路由相關的配置文件:/etc/sysconfig/network-scripts-route-IFACE
3. DNS服務器指定文件:/etc/resolv.conf 4. setup圖形界面選擇網絡配置

6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;

  • 在線的主機使用綠色顯示;

  • 不在線的主使用紅色顯示;

    #!/bin/bash
    #
    
    net=172.16.250.
    
    for i in {1..10}; do
        ping $net$i -c 2 -w 2  &> /dev/null 
        if [ $? -eq 0 ];then
        echo -e "\e[32m $net$i is up \e[0m"
        else
        echo -e "\e[31m $net$i is down \e[0m"
        fi
    done

7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;

[root@qq htdocs]# cat /etc/sysconfig/network-scripts/ifcfg-eth0                 #文件名
DEVICE=eth0                 #接口名字
HWADDR=00:0C:29:5D:1B:80    #MAC地址
TYPE=Ethernet               #接口類型,以太網;
UUID=528d943c-4ffa-4974-a107-c5a1deabafb5   #唯一標示符
ONBOOT=yes                  #開機是否啟動,no為開機不啟動;
NM_CONTROLLED=yes           #是否啟用NetworkManager圖形界面配置工具
BOOTPROTO="static"          #獲取IP的方式,還可以用“dhcp”動態獲取
IPADDR=10.201.106.129       #IP地址
NETMASK=255.255.255.0       #子網掩碼
GATEWAY=10.201.106.2        #網關
DNS1=10.201.106.2           #DNS地址,最多可以設置3個;

8、如何給網絡接口配置多個地址,有哪些方式?

通過別名的方式增加第二地址:

  • ifcfg:ifconfig eth0:1 192.168.0.2/24 up

  • ip addr:ip addr add 192.168.0.2/24 dev eth0 label 'eth0:1'

9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。

常用的網絡管理類工具有:ping、traceroute、ss、netstat、ip、ifconfig等;

示例1:使用ping檢查目標連通性;
[root@qq yum.repos.d]# ping 10.201.106.2
PING 10.201.106.2 (10.201.106.2) 56(84) bytes of data.
64 bytes from 10.201.106.2: icmp_seq=1 ttl=128 time=0.575 ms

示例2:使用traceroute命令查看到底目的地經過多少跳路由
[root@qq yum.repos.d]# traceroute 8.8.8.8

示例3:使用netstat查看所有網絡連接
         t:tcp協議相關
         -u:udp協議相關
         -w:raw socket相關
         -l:處于監聽狀態
         -a:所有狀態
         -n:以數字顯示IP和端口;
         -e:擴展格式信息
         -p:顯示相關進程及PID
[root@qq yum.repos.d]# netstat -tuan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 192.168.1.1:53              0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:53           0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:35240               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:8080         0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:22           10.201.106.1:62830          ESTABLISHED 
tcp        0      0 10.201.106.129:22           10.201.106.1:49387          ESTABLISHED 
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 :::23                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
tcp        0      0 :::43521                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
udp        0      0 192.168.1.1:53              0.0.0.0:*                               
udp        0      0 10.201.106.129:53           0.0.0.0:*                               
udp        0      0 127.0.0.1:53                0.0.0.0:*                               
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               
udp        0      0 0.0.0.0:771                 0.0.0.0:*                               
udp        0      0 0.0.0.0:59781               0.0.0.0:*                               
udp        0      0 127.0.0.1:792               0.0.0.0:*                               
udp        0      0 :::111                      :::*                                    
udp        0      0 :::57080                    :::*                                    
udp        0      0 :::771                      :::*  

示例4:使用ss查看所有網絡連接
# ss -tuan

示例5:使用ss顯示已連接狀態的TCP連接
ss -tan state ESTABLISHED

10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。

RPM
  1、安裝:
     rpm {-i|--install} [install-options] PACKAGE_FILE ...
            v:verbose
            -vv:更多的詳細信息,安裝過程
            -h:以#顯示程序包管理執行進度:每個#表示2%的進度

     rpm -ivh PACKGE_FILE ...:程序包安裝,并顯示過程;

         [install-options]
             --test:測試安裝,但不真正執行安裝過程;dry run模式;
             --nodeps:忽略依賴關系;遇到循環關系可強制安裝,比如要裝A和B,但是A依賴于B,B也依賴于A;
             --replacepkgs:重新安裝,可能會導致新生成的配置文件不生效,或者覆蓋掉舊的配置文件;
             --ignoreos:忽略操作系統;
             --nodigest:不檢查包完整性;
             --nosignature:不檢查來源信息合法性,簽名
             --noscripts:安裝不執行程序包腳本片段,默認四樣都不執行
                 %pre:安裝前腳本; --nopre
                 %post:安裝后腳本;--nopost
                 %preun:卸載前腳本;--nopreun
                 %postun:卸載后腳本;--nopostun

  2、升級:
      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
      rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

          upgrage:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”;
          freeshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作;

          rpm -Uvh PACKGE_FILE ...
          RPM -Fvh PACKGE_FILE...
             --oldpacage:降級;舊版的程序包替換新版的程序包;
             --force:強行升級;

          注意:(1)不要對內核做升級操作,Linux支持多內核版本并存,因此直接安裝新版本內核;
                (2)如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME_rpmnew)后保留;

    3、查詢:
        rpm {-q|--query} [select-options] [query-options]
            select:哪一種程序包;
            query:使用什么方式查詢;

              [select-options]
                -a:所有包
                -f:查詢指定的文件由哪個程序安裝生成
                -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包做查詢
                --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包提供;
                --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

              [query-options]
                -changelog:查詢rpm包的changelog;
                -c:查詢程序的配置文件
                --confilcts:
                d:查詢程序包的幫助文檔;
                -i:包的相關信息
                -L:單獨列出包的許可證;
                -l:查看指定的程序包安裝后生成的所有文件;
                --script:程序包自帶的腳本片段
                -R:查詢指定的程序包所依賴的CAPABILITY;
                --provides:列出指定程序包所提供的CAPABILITY;

                常用查詢組合:
                    -qi PACKAGE,-qf FILE,-qc  PACKAGE,-ql PACKAGE,-qd PACKAGE
                    qpi PAKAGE_FILE,-qpl PACKAGE_FILE
                    -qa:所有已安裝的包    

    4、卸載
       rpm {-e | --erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME....  

    5、校驗:
       rpm    {-V|--verify}   [select-options]   [verify- options]
        意思:校驗一個程序包,就是去比較一個以安裝的程序包文件,與我們此前在安裝時存儲在RPM數據庫留存的信息進行比較,這樣有什么用,通過數據庫里面的校驗碼查看用戶對否對文件進行了修改;安裝完修改過什么,都能查詢得到;

YUM:

    1、顯示倉庫列表:
     repolist [all|enabled|disabled]

    2、顯示程序包
            list
                  #  yum list [all | glob_expl] [glob_exp2] [...]
                  # yum list {available|installed|available} [glob_exp1] [...]

    3、安裝程序包
            install package1 [package2] [...]

            reinstall package1 [package2] [...]    (重新安裝)

    4、升級程序包:
            update [package1] [package2] [...]

            downgrade package1 [package2] [...]   (降級)

    5、檢查可用升級:
            check-update

    6、卸載程序包:
           remove | erase package1 [package2] [...]

    7、查看程序包information
            info [...]

    8、查看指定的特性(命令、文件)是由哪個程序包所提供:
            provides  |  whatprovides  feature1  [feature2]  [...]

    9、清理本地緩存:
            clean  [ packages | metadata | expire-cache |  rpmdb | plugins | all ]

    10、構建緩存:
            makecache

    11、搜索:
            search string1 [string2] [...]
            以指定的關鍵字搜過程序包及summary信息;

    12、查看指定包所依賴的capabilities:
    deplist package1 [package2] [...]

    13、查看yum事務歷史:
            history  [info|list|packages-list|packages-  info|summary|addon-info|redo|undo|roll-

    14、安裝及升級本地程序包(可以直接使用install和update)
    localinstall rpmfile1 [rpmfile2] [...]
       (maintained for  legacy  reasons  only  -  use
   install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained  for  legacy  reasons  only  - use
   update)

    15、包組管理的相關命令:
    * groupinstall group1 [group2] [...]  :安裝指定包組
    * groupupdate group1 [group2] [...] :升級包組
    * grouplist [hidden] [groupwildcard] [...]        :顯示指定包組
    * groupremove group1 [group2] [...]               :移除指定包組
    * groupinfo group1 [...]                           :查看包組信息

    16、創建yum倉庫:
        createrepo [options] <directory>

11、如何使用發行版光盤作為yum repository,請描述該過程。

1、建立要掛載光盤的目錄  
\# mkdir /mnt/media  
2、掛載光盤至該目錄
\# mount /dev/cdrom /mnt/media
3、編輯/etc/yum.repos.d/CentOS-Media.repo配置文件指定yum倉庫路徑
[c6-CD]
name=CentOS-$releasever - CD
baseurl=file:///media/media/
gpgcheck=0
enabled=1
4、重新生成yum倉庫
[root@qq yum.repos.d]# yum repolist

12、寫一個腳本,完成以下功能

  • (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;

  • (2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;

  • (3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;

  • (4) 分別統計S開頭和K開頭的文件各有多少;

    #!/bin/bash
    #
    declare -i k=0
    declare -i s=0
    
    for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do
        echo "$i stop"
        let k++
    done
    
    for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do
        echo "$i start"
        let s++
    done
    
    echo "K_beginfile:$k."
    echo "S_beginfile:$s."

13、寫一個腳本,完成以下功能

  • (1) 腳本能接受用戶名作為參數;

  • (2) 計算此些用戶的ID之和;

    #!binbash
    #
    declare -i number=0
    declare -i sum=0    
    
    for i in $@; do
        if id $i &> /dev/null; then
        number=`id -u $i`
        let sum+=$number
        else
        echo "$i is not exist"
        fi
    done
    
    echo "The user_id_sum is:$sum"

14、寫一個腳本

  • (1) 傳遞一些目錄給此腳本;

  • (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;

  • (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

    #!/bin/bash
    #
    declare -i foder=0
    declare -i file=0
    declare -i cfile=0
    declare -i lfile=0
    declare -i bfile=0
    
    if [ $# -lt 1 ];then
      echo "Useage:bash.sh file1 file2 ..."
      exit 1 
    else
    for j in $@;do
      if [ -f $j ];then
        echo "This file is file"
        exit 1
      else
        for i in `ls $j`;do
            cd $j
            if [ -f $i ];then
              echo -e "$i is file".
              let file++
            elif [ -d $i ];then
              echo -e "$i is foder".
              let foder++
            elif [ -c $i ];then
              echo "$i is string file."
              let cfile++
            elif [ -L $i ];then
              echo "$i is link file."
              let lfile++
            elif [ -b $i ];then
              echo "$i is block file."
              let bfile++
            else
              echo "Unknow file."
              exit 2
            fi
        done
    
      fi
    done
    fi
    echo "file total:$file"
    echo "link file total:$lfile"
    echo "String file total:$cfile"
    echo "block file total:$bfile"
    echo "foder file total:$foder"

抄自N21-Lion獅子同學。。。I'm Sorry!

15、寫一個腳本

  • 通過命令行傳遞一個參數給腳本,參數為用戶名

  • 如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

    #!/bin/bash
    
    for i in $@; do
        if ! id $i > /dev/null; then
        echo "$i user is nof found"
        else
        userid=`id -u $i`
        if [ $userid -ge 500 ];then
            echo "user $i is common user"
        else
            echo "user $i is system user"
        fi
        fi
    done

16、寫一個腳本

  • (1) 添加10用戶user1-user10;密碼同用戶名;

  • (2) 用戶不存在時才添加;存在時則跳過;

  • (3) 最后顯示本次共添加了多少用戶;

    #!/bin/bash
    #
    
    declare -i sum=0
    
    for ((i=1;i<=10;i++)); do
        if (id user$i &> /dev/null);then 
        echo "user$i is exist"
        else
        useradd user$i
        echo "user$i" | paswd --stdin user$i &> /dev/null
        let sum++
        fi
    done
    
    echo "added user number:$sum"

17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;

    #!/bin/bash
    #

    net=172.16.250.

    for i in {20..100}; do
        ping $net$i -c 2 -w 2  &> /dev/null 
        if [ $? -eq 0 ];then
        echo  "$net$i is up "
        fi
    done

18、打印九九乘法表;

#!/bin/bash
for ((i=1;i<=9;i++)); do
    for ((j=1;j<=i;j++)); do
    echo -e -n "$j*$i=$(($i*$j))\t"
    done
    echo
done

原創文章,作者:Net21_仲樂,如若轉載,請注明出處:http://www.www58058.com/38103

(0)
Net21_仲樂Net21_仲樂
上一篇 2016-09-01 08:53
下一篇 2016-09-01 09:01

相關推薦

  • sed命令初識

    ? ? ? ?sed是一種流編輯器,它是文本處理中非常常用的工具,能夠配合正則表達式使用。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自…

    Linux干貨 2017-12-03
  • Linux基礎之shell腳本編程(一)

    本文主要是shell腳本編程練習 1、寫一個腳本    (1)、獲取并列出當前系統上的所有磁盤設備;    (2)、顯示每個磁盤設備上每個分區相關的空間使用信息;   1 #!/bin/bash   2 #author:BaoZhang  &nbsp…

    Linux干貨 2016-11-11
  • free命令的介紹及參數的詳細分析

           通過對free命令的深入學習,我覺得有必要整理一個文檔,供自己和小伙伴們今后的復習使用。   free 命令的詳細剖析      參數有:-b/k/m/g    分別以bytes/kilobytes/megabyte…

    2017-07-17
  • 文本編輯工具Sed

                    Stream EDitor, 行編輯器         sed是一種流編輯器,它一次處理一行內容。處理時,一次性的先把文件讀入內存中,并且開辟一塊內存空間,該內存空間稱為“模式空間”(pa…

    Linux干貨 2016-08-10
  • memcached簡析

    一. memcached簡介      memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in    &nbs…

    2016-10-29
  • N26-第十五周

    溫故知新1、總結sed和awk的詳細用法;sed stream EDitor 流編輯器,行級sed  [option] …’script’ [input-file]script 地址定界編輯命令常用選項-n 靜默模式 ,不輸出模式空間中的內容至屏幕-e script –expression …

    Linux干貨 2017-08-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-07 23:00

    作業完成的非常不錯,知識點總結非常到位,腳本寫得非常的漂亮,思路清晰,抄的別人腳本,你一定要默默的把此腳本寫5遍。加油!

欧美性久久久久