馬哥教育網絡班22期+第八周課程練習

1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
    網橋:工作在OSI模型的數據鏈路層,將兩個局域網連起來,根據MAC地址來轉發幀,可以看作是一個“低層的路由器”(路由器工作在OSI模型的網絡層,根據網絡地址如IP地址進行轉發)。它可以有效地聯接兩個LAN,使本地通信限制在本網段內,并轉發相應的信號至另一網段,網橋通常用于聯接數量不多的、同一類型的網段。
    集線器:主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上,屬于OSI的第一層物理層設備,其工作方式采用“廣播”模式,因此很容易產生“廣播風暴”,大部份集線器已被交換機取代。適用于小型局域網主機互聯。
    二層交換機:工作于OSI模型的第二層,屬于數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中,能夠隔離沖突域和有效抑制“廣播風暴”的產生。適用于中、小型局域網設備互聯,或大型局域網接入層或匯聚層的設備接入。
    三層交換機:具有部分路由器功能的交換機,其目的是加快大型局域網內部的數據交換,能夠做到一次路由,多次轉發。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在OSI網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。適用于中、大型局域網匯聚層或局域網出口。
    路由器:其功能是決定最優路由和轉發數據包。路由表中寫入各種信息,由路由算法計算出到達目的地址的最佳路徑,然后由相對簡單直接的轉發機制發送數據包。接受數據的下一臺路由器依照相同的工作方式繼續轉發,依次類推,直到數據包到達目的路由器
。其工作模式與二層交換機相似,但路由器工作在OSI模型的第三層——網絡層,這個區別決定了路由和交換機在傳遞包時使用不同的控制信息,實現功能的方式就不同。適用于局域網間互聯,局域網與城域網互聯互通。

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

類別 IP地址范圍
子網掩碼 作用
A類 1.0.0.0-127.255.255.255 255.0.0.0(/8) 大型網絡
B類 128.0.0.0-191.255.255.255 255.255.0.0(/16) 中型網絡
C類 192.0.0.0-223.255.255.255 255.255.255.0(/24) 小型網絡
D類 224.0.0.0-239.255.255.255 組播
E類 240.0.0.0-255.255.255.255 科研

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

OSI模型 TCP/IP模型 功能 涉及協議或物理設備
應用層(Application Layer) 應用層 訪問網絡服務的接口 Telnet、FTP、HTTP、SNMP、DNS等
表示層(Presentation Layer) 提供數據格式轉換服務 URL加密、口令加密、圖片編解碼等
會話層(Session Layer) 建立端連接并提供訪問驗證和會話管理 服務器驗證用戶登錄、斷點續傳等
傳輸層(Transport Layer) 傳輸層 提供應用進程之間的邏輯通信 TCP、UDP、SPX、進程、端口等
網絡層(Network Layer) 網絡層 為數據在結點之間傳輸創建邏輯鏈路,并且組轉發數據 路由器、多層交換機、防火墻,IP、IPX、RIP、DSPF等
數據鏈路層(Data Link Layer) 網絡接口層 在通信的實體間建立數據鏈路連接 網卡、網橋、二層交換機等
物理層(Physical Layer) 為數據端設備提供原始比特流的傳輸的通路 中繼器、集線器、網線、HUB,RJ-45標準等

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

#編輯網卡配置文件,以下以CentOS 7為例:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
#修改配置為手動指定ip地址,并設置ip地址、子網掩碼、網關、DNS
BOOTPROTO="static"
IPADDR=192.168.0.86
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
#重啟網絡服務即可
[root@localhost ~]# systemctl restart network.service

5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
    (1)使用命令行配置,立即生效

#設置ip地址、子網掩碼、網關
1)ifcfg家族命令:
    ifconfig eth1 192.168.0.20 netmask 255.255.255.0 或 ifconfig eth1 192.168.0.20/24
    route add default gw 192.168.0.1
2)iproute2家族命令:
    ip addr add 192.168.0.100/24 dev eth1
    ip route add default via 192.168.0.1
#配置DNS服務器
編輯配置文件:/etc/resolv.conf
nameserver 192.168.0.1

    (2)修改網卡配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
#修改配置為手動指定ip地址,并設置ip地址、子網掩碼、網關、DNS
BOOTPROTO="static"
IPADDR=192.168.0.86
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
#重啟網絡服務即可
[root@localhost ~]# systemctl restart network.service

    (3)使用圖形化工具配置
        CentOS 6:system-config-network(setup)
        CentOS 7:nmtui
        注意:修改完成后需要重啟網絡服務

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

#!/bin/bash
for i in {1..254}; do
    if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then
        echo -e "\033[32m 172.16.250.$i \033[0m"
    else
        echo -e "\033[31m 172.16.250.$i \033[0m"
    fi
done

7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值。
    ifcfg-IFACE配置文件參數:
        DEVICE:此配置文件對應的設備名稱
        ONBOOT:在系統引導過程中,是否激活此接口
        UUID:此設備的唯一標識
        IPV6INIT:是否初始化IPV6
        BOOTPROTO:激活此接口時使用什么協議來配置接口屬性,常用的有dhcp、bootp、static、none
        TYPE:接口類型,常見的有Ethernet,Bridge
        DNS1:第一DNS服務器指向
        DNS2:備用DNS服務器指向
        DOMAIN:DNS搜索域
        IPADDR:IP地址
        NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼
        GATEWAY:默認網關
        USERCTL:是否允許普通用戶控制此設備
        PEERDNS:如果BOOTPROTO的值為"dhcp",是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認為允許
        HWADDR:設備的MAC地址
        NM_CONTROLLED:是否使用NetworkManager服務來控制接口

8、如何給網絡接口配置多個地址,有哪些方式?
    (1)使用命令行配置,立即生效

~]# ip addr add 192.168.20.190/24 dev eno16777736 或
#為指定網卡添加別名
~]# ip addr add 192.168.20.191/24 dev eth1 label eth1:0 或
~]# ifconfig eth0:0 192.168.20.192/24

    (2)添加網卡別名配置文件,需要重啟網絡服務

~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736:0
DEVICE="eno16777736:0"
BOOTPROTO="static"
IPADDR=192.168.0.22
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1

9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
    ifconfig命令:接口及地址查看和管理
        ifconfig -a:顯示所有接口,包括inactive(非激活)狀態的接口
        ifconfig IFACE IP/MASK [up|down] 設置IP地址
            ~]# ifconfig eth1 192.168.100.20/24
        ifconfig IFACE_LABEL IP/MASK  設置網卡別名地址
            ~]# ifconfig eth1:1 192.168.101.20/24

    route命令:路由查看及管理
        route -n:查看路由信息
        route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] 添加路由條目
            ~]# route add -net 10.0.0.1/8 gw 192.168.10.1 dev eth1
            ~]# route add default gw 192.168.10.1
        route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 刪除路由表
            ~]# route del -net 10.0.0.0/8 gw 192.168.10.1
            ~]# route del default

    netstat命令:Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
        顯示路由表:netstat -rn
                -r:routing,顯示內核路由表
                -n:數字格式
        顯示網絡連接:
            語法格式: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協議的相關連接,連接均有其狀態,此處僅顯示ESTABLISHED(已建立的)連接狀態;FSM(Finite State Machine)
                -u:UDP協議的相關連接
                -w:raw socket(裸套接字)相關的連接
                -l:處于監聽(LISTEN)狀態的連接
                -a:所有狀態的連接
                -n:以數字格式顯示IP和Port
                -e:擴展格式
                -p:顯示相關的進程及PID(只有root用戶才能顯示,普通用戶顯示為-)
        常用組合:
                    -tan,-uan,-tnl,-unl,-tunlp

    ifup/ifdown命令:
        語法格式:ifup/ifdown IFACE 啟用/禁用指定接口
            注意:此命令通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口并完成配置

    ip命令:show / manipulate routing, devices, policy routing and tunnels
        語法格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
                OBJECT := { link | addr | route | netns }
                   注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫
        ip OBJECT:
                ip link:network device configuration
                    ip link set – change device attributes
                        dev NAME (default):指明要管理的設備,dev關鍵字可省略
                        dev up/down:啟用/禁用指定網卡
                        multicast on/multicast off:啟用或禁用多播功能
                        name NAME:重命名接口
                        mtu NUMBER:設置MTU的大小,默認為1500
                        netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間
                            ~]# ip link set eth1 netns mynetns
                    ip link show – display device attributes
                    ip link help – 顯示簡要使用幫助
                ip netns – manage network namespaces
                    ip netns list:列出所有的netns
                    ip netns add NAME:創建指定名稱的netns
                    ip netns del NAME:刪除指定名稱的netns
                    ip netns exec NAME COMMAND:在指定的netns中運行命令
                        ~]# ip netns exec mynetns ip link show
                ip-address – protocol address management
                    ip address add – add new protocol address
                        ip addr add IPADDR dev IFACE
                            ~]# ip addr add 192.168.10.100/24 dev eth1
                                [label NAME] 為額外添加的地址指明接口別名
                                    ~]# ip addr add 192.168.0.32/24 dev eno16777736 label eno16777736:0
                                [broadcast ADDRESS] 廣播地址;會根據IP和NETMASK自動計算得到
                                [scope SCOPE_VALUE]
                                    global:全局可用
                                    link:接口可用
                                    host:僅本機可用
                    ip address delete – delete protocol address
                        ip addr del IPADDR dev IFACE
                    ip address show – look at protocol addresses
                        ip addr show/list [IFACE] 顯示指定接口的地址
                    ip address flush – flush protocol addresses 清空ip地址
                        ip addr flush dev IFACE
                ip route – routing table management
                ip route change – change route
                ip route replace – change or add new one
                    ip route add – add new route
                        ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
                            ~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
                            ~]# ip route add default via 192.168.0.1 添加默認路由
                    ip route delete – delete route
                        ip route del TYPE PREFIX
                            ~]# ip route delete 192.168.1.0/24
                    ip route show – list routes
                        ip route show TYPE PREFIX
                    ip route flush – flush routing tables 清空路由表
                        ip route flush TYPE PREFIX
                    ip route get – get a single route
                        ip route get TYPE PREFIX
                            ~]# ip route get 192.168.0.0/24

    ss命令:another utility to investigate sockets
            語法格式:ss [options] [ FILTER ]
                選項:
                    -t:tcp協議的相關連接
                    -u:udp協議的相關連接
                    -w:raw socket相關的連接
                    -l:監聽狀態的連接
                    -a:所有狀態的連接
                    -n:數字格式
                    -p:相關的程序及其PID
                    -e:擴展格式信息
                    -m:內存用量
                    -o:計時器信息
                FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
                TCP的常見狀態:
                    TCP FSM:
                        LISTEN:監聽
                        ESTABLISHED:已建立的連接
                        FIN_WAIT_1:
                        FIN_WAIT_2:
                        SYN_SENT:
                        SYN_RECV:
                        CLOSED:
                    ~]# ss state time-wait
                EXPRESSION:
                    dport(目標端口)=
                    sport(原端口)=
                        示例:'( dport = :ssh or sport = :ssh )'
                            ~]# ss -tan '( dport = :22 or sport = :22 )'
                            ~]# ss -tan state ESTABLISHED

    nmcli命令:command‐line tool for controlling NetworkManager
        語法格式:nmcli [ OPTIONS ] OBJECT { COMMAND | help }
            device – show and manage network interfaces
                COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
            connection – start, stop, and manage network connections
                COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
                modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
                如何修改IP地址等屬性:
                    nmcli conn modify IFACE [+|-]setting.property value
                        ipv4.address
                        ipv4.gateway
                        ipv4.dns1
                        ipv4.method
                                manual

10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
    rpm命令:
        安裝:
            rpm {-i|–install} [install-options] PACKAGE_FILE …
                rpm -ivh PACKAGE_FILE …
                GENERAL OPTIONS 通用選項:
                    -v:verbose,詳細信息
                    -vv:更詳細的輸出
                [install-options]
                    -h:hash marks輸出進度條;每個#表示2%的進度
                    –test:測試安裝不會真正安裝,檢查并報告依賴關系及沖突消息等
                    –nodeps:忽略依賴關系(不建議使用)
                    –replacepkgs:重新安裝
                    –nosignature:不檢查包簽名信息
                    –nodigest:不檢查包完整性信息
        升級:
            rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
            rpm {-F|–freshen} [install-options] PACKAGE_FILE …
                -U:升級或安裝
                -F:升級(必須有老版本作為依賴)
                rpm -Uvh PACKAGE_FILE …
                rpm -Fvh PACKAGE_FILE …
                    –oldpackage:降級安裝
                    –force:強制升級
        卸載:
            rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts][–test] PACKAGE_NAME …
                –allmatches:卸載所有匹配指定名稱的程序包的各版本
                –nodeps:忽略依賴關系
                –test:測試卸載,dry run模式

    yum命令:
        安裝程序包:
            install package1 [package2] […]
            reinstall package1 [package2] […] 重新安裝
        升級程序包:
            update [package1] [package2] […]
            downgrade package1 [package2] […] 降級程序包
        卸載程序包:
            remove | erase package1 [package2] […]

11、如何使用發行版光盤作為yum repository,請描述該過程。
    (1)掛載光盤至本地某目錄
        ~]# mount -r /dev/cdrom /media
    (2)創建yum倉庫配置文件
        ~]# vim /etc/yum.repos.d/cdrom.repo
            [cdrom]
            name=centos7 cdrom
            baseurl=file:///media
            enabled=1
            gpgcheck=0

12、寫一個腳本,完成以下功能
   (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
   (2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
   (3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
   (4) 分別統計S開頭和K開頭的文件各有多少;

#!/bin/bash
declare -i K_files=0
declare -i S_files=0
for i in $(ls /etc/rc.d/rc3.d | grep "^K");do
    echo "$i"stop
    let K_files++
done
for j in $(ls /etc/rc.d/rc3.d | grep "^S");do
    echo "$j"start
    let S_files++
done
echo "K開頭的文件有$K_files個"
echo "S開頭的文件有$S_files個"

13、寫一個腳本,完成以下功能
   (1) 腳本能接受用戶名作為參數;
   (2) 計算此些用戶的ID之和;

#!/bin/bash
declare -i id_sum=0
for i in $*;do
    if id $i &> /dev/null;then
        id_sum=$[$id_sum+$(id -u $i)]
    else
        echo "user $i is not existed!"
        exit 1
    fi
done
echo "這些用戶ID之和為:$id_sum"

14、寫一個腳本
   (1) 傳遞一些目錄給此腳本;
   (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
   (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

#!/bin/bash
declare -i dir_counts=0
declare -i file_counts=0
for i in $*;do
    echo "$i: "
    for filename in $i/*; do
        if [ -f $filename ];then
            echo "$filename common file"
        elif [ -d $filename ];then
            echo "$filename directory file"
            dir_counts+=1
            continue
        elif [ -b $filename ];then
            echo "$filename block device file"
        elif [ -c $filename ];then
            echo "$filename character device file"
        elif [ -L $filename ];then
            echo "$filename symbolic link file"
        elif [ -p $filename ];then
            echo "$filename pipe file"
        elif [ -S $filename ];then
            echo "$filename socket file"
        else
            echo "$filename unknow"
        fi
        file_counts+=1
    done
done
echo "一共有$dir_counts個目錄"
echo "一共有$file_counts個文件"

15、寫一個腳本
  通過命令行傳遞一個參數給腳本,參數為用戶名;
  如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

#!/bin/bash
if id $1 &> /dev/null;then
    if [ $(id -u $1) -gt 500 ];then
        echo "$1 is common user!"
    fi
else
    echo "user $1 is not existed!"
fi

16、寫一個腳本
   (1) 添加10用戶user1-user10;密碼同用戶名;
   (2) 用戶不存在時才添加;存在時則跳過;
   (3) 最后顯示本次共添加了多少用戶;

#!/bin/bash
declare -i addsum=0
for i in $(seq 1 10);do
    if id user$i &> /dev/null;then
        echo "user$i is existed!"
    else
        adduser user$i
        echo "user$i" | passwd --stdin $i &> /dev/null
        addsum+=1
    fi
done
echo "本次共添加了$addsum個用戶"

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

#!/bin/bash
for i in $(seq 20 100); do
    if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then
        echo 172.16.250.$i
    fi
done

18、打印九九乘法表。

#!/bin/bash
echo "-------------for-------------"
for i in `seq 1 9`;do
    for j in `seq 1 $i`;do
        list_01=$[ $i * $j ]
        echo -n "$i*$j=$list_01 "
    done
    echo " "
done

echo "-------------while-------------"
declare -i m=1
while [ $m -ge 1 -a $m -le 9 ];do
    declare -i n=1
    while [ $n -ge 1 -a $n -le $m ];do
        list_02=$[ $m * $n ]
        echo -n "$m*$n=$list_02 "
        let n++
    done
    let m++
    echo  " "
done

echo "-------------until-------------"
declare -i x=1
until [ $x -lt 1 -o $x -gt 9 ];do
    declare -i y=1
    until [ $y -lt 1 -o $y -gt $x ];do
        list_03=$[ $x * $y ]
        echo -n "$x*$y=$list_03 "
        let y++
    done
    let x++
    echo  " "
done

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

(0)
蘿卜蘿卜
上一篇 2016-11-17
下一篇 2016-11-18

相關推薦

  • grep及正則表達式應用

    grep:文本過濾(模式:pattern)工具 grep家族介紹: grep:標準grep命令,支持標準的正則表達式  BRE  egrep:擴展的grep命令,支持擴展的正則表達式  ERE fgrep:快速的grep命令,不支持正則表達式 grep作用: 文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹…

    Linux干貨 2016-07-10
  • LAMP搭建wordpress博客站點

    使用WordPress可以搭建功能強大的網絡信息發布平臺,但更多的是應用于個性化的博客。針對博客的應用,WordPress能讓您省卻對后臺技術的擔心,集中精力做好網站的內容。本文將教您如何通過LAMP搭建自己的wordpress博客站點。 LAMP聽起來很高大上,其實是集中技術合起來的稱呼: L:linux A:apache httpd M:mysql、ma…

    2017-06-01
  • 網絡班N22期第四周博客作業

    一、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@bogon ~]# cp -r /etc/skel /home/tuser1 && chmod -R 60…

    Linux干貨 2016-09-05
  • 初來乍到

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

    Linux干貨 2018-03-26
  • shell腳本編程基礎練習

    這周,我們學習了shell腳本基礎,那么什么是shell腳本呢? shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正則表達式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。Shell腳本可以幫助我們系統、自動化的去管理和處理一些東西 下面是摘抄出的幾個練習: 首先,…

    2017-08-05

評論列表(1條)

  • luoweiro
    luoweiro 2016-11-29 22:15

    整體非常棒,尤其是后面腳本部分,另外對于網絡方面,希望能對tcp/ip和osi有對比總結,并借助抓包工具做一分析,這部分在lvs內容中還是需要掌握的。

欧美性久久久久