馬哥教育網絡班21期+第8周課程練習

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

集線器(HUB)是在OSI模型的第一層——物理層——連接多臺主機、延長網絡的設備。其主要功能是將從一個端口接收到的數據包轉發給所有端口。中繼器(Repeater)是將由電纜傳過來的電信號或光信號調整波形和放大再傳給另一個電纜的設備,提供多端口服務的中繼器稱作集線器。二者的主要區別是HUB是在物理層轉發數據的,它并不關心電壓值的大小,也不會放大物理信號;而Repeater的作用就是放大物理信號。

網橋(Bridge)是在OSI模型的第二層——數據鏈路層——連接兩個網絡的設備。它能夠識別數據鏈路層中的數據幀,并將這些數據幀臨時存儲于內存,再重新生成信號作為一個全新的幀轉發給相連的另一個網段。網橋能識別數據包中的MAC地址信息,根據MAC信息實現對數據包有目的的轉發,并將相關MAC地址信息與對應的端口記錄在內部的地址表中。

路由器(Router)是在OSI模型的第三層——網絡層——連接兩個網絡、并對分組報文進行轉發的設備。網橋是根據MAC地址進行處理,而路由器則是根據IP地址進行處理的。路由器的主要作用就是為經過路由器的數據包選擇一條最佳傳輸途徑,并將數據包有效地送達目的地。

二層交換機與三層交換機的區別:二層交換器工作于數據鏈路層,用于小型的局域網絡;三層交換機工作于網絡層,加快大型局域網絡內部的數據轉發。

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

A類:
    0 000 0000 - 0 111 1111: 1-127
    網絡數:126, 127
    每個網絡中的主機數:2^24-2
    默認子網掩碼:255.0.0.0
    私網地址:10.0.0.0/8
B類:
    10 00 0000 - 10 11 1111:128-191
    網絡數:2^14
    每個網絡中的主機數:2^16-2
    默認子網掩碼:255.255.0.0
    私網地址:172.16.0.0/16-172.31.0.0/16
C類:
    110 0 0000 - 110 1 1111: 192-223
    網絡數:2^21
    每個網絡中的主機數:2^8-2
    默認子網掩碼:255.255.255.0
    私網地址:192.168.0.0/24-192.168.255.0/24
D類:主要用于組播
    1110 0000 - 1110 1111: 224-239
子網掩碼的表示形式:
    192.168.100.100/255.255.255.0 <--> 192.168.100.100/24
子網掩碼的作用:
    區分網絡上的主機是否處于同一子網絡中。

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

blob.png

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

編輯/etc/sysconfig/network-scripts/ifcfg-IFACE文件,指定IPADDR、NETMASK、GATEWAY和DNS;
編輯/etc/sysconfig/network-scripts/route-IFACE文件,指定網絡路由;

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

配置IP:編輯/etc/sysconfig/network-scripts/ifcfg-IFACE文件 
配置路由:編輯/etc/sysconfig/network-scripts/route-IFACE文件 
dns服務器指定:編輯/etc/resolv.conf文件

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

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

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

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

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

路由相關的配置文件:/etc/sysconfig/network-scripts/route-IFACE
配置當前主機的主機名:/etc/sysconfig/networkHOSTNAME=
網絡接口識別并命名相關的udev配置文件: /etc/udev/rules.d/70-persistent-net.rules

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

ifconfig:
    ifconfig IFACE_ALIAS IPADDR
ip:
    ip addr add ip_addr/mask dev IFACE label alias_label
配置文件:
    ifcfg-IFACE_ALIAS
        DEVICE=IFACE_ALIAS

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

netstat: 
1、查看網絡連接netstat –ltan 
2、查看路由netstat –r 
3、顯示網絡接口netstat–i
route:
查看路由route -n  
添加:routeadd:route add [-net|-host] target [netmask Nm] [gwGw] [[dev] If]
ip linkset  dev IFACE up /down 激活或禁用指定接口
ipaddr { add | del } IFADDR dev IFACE
ip route add  添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
ss命令:(相當于netstat ,但在非常繁忙狀態下,是netstat是幾倍速度)
      格式:ss [options] [ FILTER ]
        選項:
          -t:tcp協議相關
          -u:udp協議相關
          -w:裸套接字相關
          -x:unix sock相關
          -l:listen狀態的連接
          -a:所有
          -n:數字格式
          -p:相關的程序及PID
          -e擴展的信息
          -m:內存用量
          -o:計時器信息
 
          FILTER := [ state TCP-STATE ] [ EXPRESSION ]

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

rpm命令實現程序管理:
    安裝: -ivh,--nodeps,--replacepkgs
    卸載:-e,--nodeps
    升級:-Uvh,-Fvh,--nodeps,--oldepackage
    查詢: -q,qa,-qf,-qi,-qd,-qc,-q --scripts,-q --changlog,-q --provides,-q --requires
    校驗:-V
 
    導入GPG密鑰:--import,-K,--nodigest,--nosignature
    數據庫重:--initdb,--rebuilddb
 
YUM命令實現程序管理:
  顯示倉庫的列表:
    repolist [all|enable|disabled]
 
  顯示程序包:
    list
      # yum list [all | glob_exp] [glob_exp2][...]
      #yum list {available | installed | updates}[glob_exp][...]
 
  安裝程序包
    yum install package1 [package2] [...]
 
      reinstall package1 [package2] [...](重新安裝)
 
  升級程序包:
     update [package1] [package2] [...]
      升級軟件包的同時也升級軟件和系統內核 
 
     downgrade package1 [package2] [...](降級)
     upgrade [package1] [package2] [...]
      只升級軟件包,不升級軟件和系統內核
     
 
  檢查可用升級:
    check-update
 
  卸載程序包:
    remove | erase package1 [package2] [...]
 
  查看程序包infomation:
    info[...]
 
  查看指定的特性(可以查看某文件)是由哪個程序包所提供:
    provides | whatprovides feature1 [feature2] [...]
 
  清理本地緩存:
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
 
  構建緩存: 
    makecache
 
  搜索
     search string1 [string2] [...]
 
     以指定的關鍵字搜索程序包名及summary 信息
 
  查看指定包所依賴的Capabilities:
     deplist package1 [package2] [...]
 
  查看yum事務歷史:
     history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]
 
  安裝及升級本地程序包:
 
  *localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    *localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)
 
  包組管理的相關命令:
     * groupinstall group1 [group2] [...]
       * groupupdate group1 [group2] [...]
         * grouplist [hidden] [groupwildcard] [...]
         * groupremove group1 [group2] [...]          
         * groupinfo group1 [...]

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

[root@CentOS6 ~]# mount /dev/cdrom /media/CentOS_6.4_Final/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@CentOS6 ~]# cd !$
cd /media/CentOS_6.4_Final/
[root@CentOS6 CentOS_6.4_Final]# rpm --import RPM-GPG-KEY-CentOS-6
[root@CentOS6 CentOS_6.4_Final]# vi /etc/yum.repos.d/yum.repo 
[localyum]
name=localyum
baseurl=file:///media/CentOS_6.4_Final
gpgcheck=1
enabled=1

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

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

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

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

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

#!/bin/bash
#
declare -i stotal=0
declare -i ktotal=0
for i in `ls /etc/rc.d/rc3.d | grep "^S"`;do
  echo "$i start"
  let stotal++
done
for i in `ls /etc/rc.d/rc3.d | grep "^K"`;do
  echo "$i stop"
  let ktotal++
done
echo "K file is $ktotal"
echo "S file is $stotal"

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

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

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

#!/bin/bash
#
declare -i idsum=0
if [ $# -le 0 ];then
  echo "Userage:bash.sh user1 user2 ..."
  exit 1
fi
for i in $*;do
  if id $i &> /dev/null;then
    idnum=`grep "$i" /etc/passwd | cut -d: -f3`
    idsum+=$idnum
  else
    echo "No exist $i "
  fi
done
echo "IDtotal is $idsum"

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 "\033[31m"$i is file.
          let file++
        elif [ -d $i ];then
          echo -e "\033[32m"$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"

15、寫一個腳本

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

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

#!/bin/bash
[ $# -ne 1 ] && echo "Please enter one user!!!" && exit
! id $1 &> /dev/null && echo "No this user." && exit
let a=`id -u $1`
if [ $a -ge 500 ]; then
    echo "$1 is common user."
else
    echo "$1 is system user."
fi

16、寫一個腳本

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

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

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

#!/bin/bash
for i in {1..10}; do
    if id user$i &> /dev/null ;then
        echo "user$i exists."
        continue 3
    else
        useradd user$i
        if [ $? -eq 0 ]; then
            echo "user$i" | passwd --stdin user$i &> /dev/null
            echo "Add user$i finished."
        let j++
        fi
    fi
done
echo "Add $j users."

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

#!/bin/bash
#
ip='172.16.250'
for i in {1..254};do
  ping -c 5 -w 5 $ip.$i &> /dev/null
  result=$?
  if [ $result -eq 0 ];then 
    echo "$ip.$i"
  fi
done

18、打印九九乘法表;

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

原創文章,作者:Bazinga,如若轉載,請注明出處:http://www.www58058.com/43100

(0)
BazingaBazinga
上一篇 2016-09-05
下一篇 2016-09-05

相關推薦

  • 學習宣言

    我的人生宣言:做人要學到老,活到老,最重要的玩到老啊。人的一生真的太短了,要做我們喜歡的事情,趁自己年輕的時候吧!行動吧!加油??!

    Linux干貨 2016-12-26
  • 永遠不要讓自己停下

    曾幾何時,我還是剛出象牙塔的小男孩。想想現在,經過4年的洗禮,我不再是小男孩了。可是,我卻發現自己變得越來越懶,守著那丁點的知識。 我早已坐吃山空而不自知,早已落后于時代的趨勢而不自知。時代需要一個勤奮而專注的我,需要一個不懈怠的我。 如果,我不繼續前進,等待我的只有墮落。逆水行舟不進則退,不逼自己一把,永遠不知道自己的潛力有多大。 我希望說,再見,懈怠而懶…

    Linux干貨 2016-10-07
  • 13-高級文件系統管理-Quota,RAID,LVM

    配置配額系統     綜述         在內核中執行         以文件系統(磁盤分區)為單位啟用         對不同組或者用戶的策略不同         根據塊或者節…

    2017-03-16
  • 初來乍到

    坐上了去往北方的火車,我不知道自己為什么會顫抖,也許是耳朵里那首汪峰的《北京,北京》震撼到了我,接著滿腦子便是燈紅酒綠的大街道和浮華的高樓大廈,我幻想著有一天能在這樣的大城市中闖出一片天。夢醒了 ! 30個小時的路程確實是讓我滿腦子都是未來的自己。 對于我這個從來沒有見過世面的人來說,第一次來到北京這座一線大城市,內心充滿著無比的欣喜和激動,但更多的還是那份…

    Linux干貨 2018-03-26
  • grub.config文件加密

    作用 在開機啟動臨時進入1模式的時候,系統先調用/etc/grub.conf。 /etc/grub.conf其實是/boot/grub/grub.conf的軟連接。 加密改文件就有效的防止其他用戶直接繞過口令登陸1模式,從而進入到root中做一些破壞。 我們可以看一下如何進入1模式。   我們可以看一下臨時進入init1模式的窗口 這里的內容與gr…

    2017-07-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-07 16:35

    完成的非常的不錯,1題的排版在進行調整一下哈,6題中的腳本在顏色顯示結果后應加\033[0m,7題在完善一下更完美,如ifcfg-eth0文件中的DEVICE、TYPE的含義和對應的值。

欧美性久久久久