從Linux小白到大牛——與狼共舞的日子8

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

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


  • 網橋是第2層的設備,它設計用來創建兩個或多個LAN分段。其中,每一個分段都是一個獨立的沖突域。網橋設計用來產生更大可用寬帶。它的目的是過濾LAN的通信流,使得本地的通信流保留在本地,而讓那些定向到LAN其他部分(分段)的通信流轉發到那里去。每一臺網絡設備在NIC(網絡接口卡)中都有一個惟一的MAC(介質訪問控制)地址。網橋會記錄它每一邊的MAC地址,然后基于這張MAC地址表作出轉發決策。

  • 集線器是物理層的共享設備,不能識別MAC地址和IP地址,局域網內數據包在HUB上是以廣播的方式傳播的,由每一臺終端通過驗證數據報頭的MAC地址來確定是否接收。如果傳輸過程中發生碰撞,則需要重新發送數據!它的工作模式是半雙工的,同一時刻只能有兩個端口傳送數據,所有端口共享帶寬。

  • 交換機工作在數據鏈路層,交換機內部會形成一個端口和MAC地址的MAC表,通過數據報的MAC地址將數據發往指定的端口,因此交換機可用于劃分數據鏈路層的的沖突域。交換機的工作模式有全雙工,半雙工和全雙工/半雙工自適應的工作模式。

  • 二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。

  • 三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發。對于數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術。 傳統交換技術是在OSI網絡標準模型第二層–數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。

  • 路由器工作在網絡層,負責兩個局域網之間按幀傳輸數據,路由器通過比對路由表將每一幀傳到指定的目的地,路由器的工作模式是全雙工的。

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


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

E類:
   240-255

子網掩碼是一個32位地址,是與IP地址結合使用的一種技術。
它的表示形式有兩個:
  (1)通常的表示方式,如:255.255.255.0
  (2)類似192.168.100.0/24,表示子網掩碼是24位,子網掩碼為:255.255.255.0,
     用二進制表示為:11111111 11111111 11111111 00000000
它的主要作用有兩個:
  (1)用于屏蔽IP地址的一部分以區別網絡標識和主機標識,并說明該IP地址是在局域網上,還是在遠程網上。
  (2)用于將一個大的IP網絡劃分為若干小的子網絡。

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


從Linux小白到大?!c狼共舞的日子8 從Linux小白到大?!c狼共舞的日子8

  • 物理層

規定通信設備的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連接。在這一層,數據的單位稱為比特(bit)。

  • 數據鏈路層

在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,并進行各電路上的動作系列。數據鏈路層在不可靠的物理介質上提供可靠的傳輸。

  • 網絡層

在計算機網絡中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。網絡層的任務就是選擇合適的網間路由和交換結點,確保數據及時傳送。

  • 傳輸層

為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數據傳輸服務。所為透明的傳輸是指在通信過程中 傳輸層對上層屏蔽了通信傳輸系統的具體細節。

  • 會話層

在會話層及以上的高層次中,數據傳送的單位不再另外命名,而是統稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。

  • 表示層

主要解決擁護信息的語法表示問題。它將欲交換的數據從適合于某一用戶的抽象語法,轉換為適合于OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。

  • 應用層

為操作系統或網絡應用程序提供訪問網絡服務的接口。

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


1.用ifconifg命令查看網卡的名稱

[root@localhost ~]# ifconfig
eth0  Link encap:Ethernet  HWaddr 00:0C:29:4E:BB:E3  
  inet addr:192.168.82.56  Bcast:192.168.82.255  Mask:255.255.255.0
  inet6 addr: fe80::20c:29ff:fe4e:bbe3/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:51915 errors:0 dropped:0 overruns:0 frame:0
  TX packets:34677 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000 
  RX bytes:72165204 (68.8 MiB)  TX bytes:2462902 (2.3 MiB)

loLink encap:Local Loopback  
  inet addr:127.0.0.1  Mask:255.0.0.0
  inet6 addr: ::1/128 Scope:Host
  UP LOOPBACK RUNNING  MTU:16436  Metric:1
  RX packets:16 errors:0 dropped:0 overruns:0 frame:0
  TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0 
  RX bytes:960 (960.0 b)  TX bytes:960 (960.0 b)

2.編輯對應的網卡的配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=00:0c:29:4e:bb:e3
    TYPE=Ethernet
    UUID=90cb3cf8-0779-4ca4-9ef1-c4260e416318
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    IPADDR=192.168.82.56
    NETMASK=255.255.255.0
    GATEWAY=192.168.81.1
    DNS1=202.106.0.20

3.重啟網絡服務

[root@localhost ~]# service network restart

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


1.命令行中修改
[root@localhost ~]# ifconfig eth0 192.168.82.56 netmask 255.255.255.0
[root@localhost ~]# route add default gw 192.168.82.1

2.圖形化中修改
[root@localhost ~]# system-config-network-tui
[root@localhost ~]# setup

3.修改配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=00:0c:29:4e:bb:e3
    TYPE=Ethernet
    UUID=90cb3cf8-0779-4ca4-9ef1-c4260e416318
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    IPADDR=192.168.82.56
    NETMASK=255.255.255.0
    GATEWAY=192.168.81.1
    DNS1=202.106.0.20

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

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

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


[root@localhost ~]# cat ping1.sh 
#!/bin/bash
#
declare -i i=1
net=172.16.250
while [ $i -le 254 ];do
if ping -c 1 -w 1 $net.$i &> /dev/null;then
    echo -e "\E[1;32m$net.$i is up\E[0m"
else
    echo -e "\E[1;31m$net.$i is down\E[0m"
fi
let i++
done

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


DEVICE:此配置文件應用到的設備;
HWADDR:對應的設備的MAC地址;
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的簡寫;此網卡是否接受NM控制;CentOS6建議為“no”;
ONBOOT:在系統引導時是否激活此設備;
TYPE:接口類型;常見有的Ethernet, Bridge;
UUID:設備的惟一標識;

IPADDR:指明IP地址;
NETMASK:子網掩碼;
GATEWAY: 默認網關;
DNS1:第一個DNS服務器指向;
DNS2:第二個DNS服務器指向;

USERCTL:普通用戶是否可控制此設備;
PEERDNS:如果BOOTPROTO的值為“dhcp”,
        是否允許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中;

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


1)使用ifconfig命令臨時添加
[root@localhost ~]# ifconfig eth0:1 192.168.200.200 netmask 255.255.255.0

2)使用ifconfig命令臨時添加
[root@localhost ~]# ip addr add 192.168.100.100/24 dev eth0 label eth0:0

3)創建配置文件方法
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1

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


  • ifconfig命令

               ifconfig [interface]           查看網絡接口信息
               ifconfig IFACE [up|down]       打開或關閉網絡接口
               ifconfig IFACE IP/mask [up]    修改接口ip信息并啟用
    
               示例:   
               [root@localhost ~]# ifconfig -a
               [root@localhost ~]# ifconfig eth0 down
  • route命令

                route -n                  查看路由信息
                route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]
                                          添加路由信息
    
    
                示例:
                目標:192.168.200.200  網關:192.168.82.1
                [root@localhost ~]# route add -host 192.168.200.200 
                                    gw 192.168.82.1 dev eth0
    
                目標:192.168.200.0 網關:192.168.82.1
                [root@localhost ~]# route add -net 192.168.200.0 netmask 255.255.255.0 
                                    gw 192.168.82.1 dev eth0
                [root@localhost ~]# route add -net 192.168.200.0/24 
                                    gw 192.168.82.1 dev eth0
    
                默認路由,網關:192.168.82.1
                [root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.82.1
                [root@localhost ~]# route add default gw 192.168.82.1
    
                route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 
                                         刪除路由信息
    
    
                示例:   
                目標:192.168.200.200  網關:192.168.82.1
                [root@localhost ~]# route del -host 192.168.200.200
    
                目標:192.168.200.0 網關:192.168.82.1
                [root@localhost ~]# route del -net 192.168.200.0 netmask 255.255.255.0
  • netstat命令:

                顯示網絡連接:
                        -t: tcp協議相關
                        -u: udp協議相關
                        -w: raw socket相關
                        -l: 處于監聽狀態
                        -a: 所有狀態
                        -n: 以數字顯示IP和端口;
                        -e:擴展格式
                        -p: 顯示相關進程及PID
                顯示路由表:
                    netstat  {--route|-r} [--numeric|-n]
                        -r: 顯示內核路由表
                        -n: 數字格式
    
                顯示接口統計數據:
                    netstat  {--interfaces|-I|-i} [iface] [--all|-a] 
                             [--extend|-e] [--program|-p] [--numeric|-n] 
    
                示例:
                打印網絡接口信息
                [root@localhost ~]# netstat -i

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


rpm軟件包管理:

安裝:-ivh, –nodeps, –replacepkgs
卸載:-e, –nodeps
升級:-Uvh, -Fvh, –nodeps, –oldpackage
查詢:-q, -qa, -qf, -qi, -qd, -qc, -q –scripts, -q –changlog, -q –provides, -q –requires
校驗:-V
導入GPG密鑰:–import, -K, –nodigest, –nosignature
數據庫重建:–initdb, –rebuilddb


yum軟件包管理:

yum repolist [all|enabled|disabled]
顯示程序包:
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安裝程序包: 
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安裝)
升級程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降級)
檢查可用升級:
yum check-update
卸載程序包:
yum remove | erase package1 [package2] […]
查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地緩存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
yum makecache

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


1.創建掛載的文件夾
[root@localhost ~]# mkdir /mnt/cdrom
2.掛載光盤到需要掛載到的文件夾
[root@localhost ~]# mount /dev/cdrom  /mnt/cdrom/
3.創建yum倉庫的配置文件
[root@localhost ~]# vim /etc/yum.repos.d/iso.repo
    [cdrom]
    name=cdrom
    baseurl=file:///mnt/cdrom
    enabled=1
    gpgcheck=0
4.清理yum緩存
[root@localhost ~]# yum clean all
5.重建yum緩存
[root@localhost ~]# yum makecache

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

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

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

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

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


[root@localhost ~]# cat KandS.sh 
#!/bin/bash
#
declare -i Kcount=0
declare -i Scount=0
for i in `ls /etc/rc.d/rc3.d/ | grep ^K `;do
    echo $i stop
    let Kcount++
done
for i in `ls /etc/rc.d/rc3.d/ | grep ^S `;do
    echo $i start
    let Scount++
done
echo K:$Kcount
echo S:$Scount

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

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

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


[root@localhost ~]# cat countID.sh 
#!/bin/bash
#
declare -i idcount=1
if [ $# -le 0 ];then
    echo "Usage:$0:User1 User2 ...."
    exit 1
fi
for i in $*;do
    id $i &>/dev/null && let idcount+=$[`id -u $i`] || echo "No user:$i"
done
echo idcount:$[$idcount-1]


注:這題中root的id為0,let idcount+=$[`id -u $i`]后直接執行echo "No user:$i",
    所以只好讓idcount先為1,最后算出id的和之后再減去1。

14、寫一個腳本

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

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

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


[root@localhost ~]# cat filetype.sh 
#!/bin/bash
#
declare -i dcount=0
declare -i tycount=0
declare -i a=0
declare -i b=0
declare -i c=0
declare -i d=0
declare -i e=0
declare -i f=0
declare -i g=0
declare -i h=0
if [ $# -le 0 ];then
    echo "Usage:$0 dir1 dir2 ..."
    exit 1
fi
for i in $*;do
    [[ ! -d $i ]] && echo "$i not DIR,Usage:$0 dir1 dir2 ..." && continue
    for j in `ls $i`;do
        filetype=`ls -ld $i/$j | cut -c1`
        case $filetype in
        d) echo $i/$j is dir;let dcount++;let a=1 ;;
        l) echo $i/$j is link;  let b=1 ;;
        s) echo $i/$j is socket;let c=1 ;;
        b) echo $i/$j is banary;let d=1 ;;
        c) echo $i/$j is char;  let e=1 ;;
        p) echo $i/$j is pipe;  let f=1 ;;
        -) echo $i/$j is file;  let g=1 ;;
        *) echo $i/$j is other; let h=1 ;;          
        esac        
    done
done
echo Dir count:$dcount
echo Filetype:$[$a+$b+$c+$d+$e+$f+$g+$h]

15、寫一個腳本

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

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


[root@localhost ~]# cat user500.sh 
#!/bin/bash
#
[[ $# -le 0 ]] && echo "Usage:$0 Username1" && exit 1
id $1&>/dev/null && [ $[`id -u $1`] -ge 500 ] 
[ $? -eq 0 ] && echo $1 is common user. || echo $1 is sysuser or no user.

16、寫一個腳本

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

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

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


[root@localhost ~]# cat useradd1.sh 
#!/bin/bash
#
declare -i usercount=0
for i in {1..10};do
    ! id user$i &>/dev/null && useradd user$i && echo user$i | passwd --stdin user$i &>/dev/null 
    [ $? -eq 0 ]&& let usercount=$usercount+1 && echo "user$i add." || echo "user$i exists."
done
echo Add user count:$usercount

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


[root@localhost ~]# cat ping2.sh 
#!/bin/bash
#
declare -i i=20
net=172.16.250
while [ $i -le 100 ];do
    if ping -c 1 -w 1 $net.$i &> /dev/null;then
        echo "$net.$i is up"
    fi
    let i++
done

18、打印九九乘法表;


[root@localhost ~]# cat 991.sh 
#!/bin/bash
for i in {1..9};do
    for j in $(seq 1 $i);do
        echo -n -e "$j*$i=$[$i*$j]\t "
    done
    echo
done

原創文章,作者:N21_孤狼,如若轉載,請注明出處:http://www.www58058.com/57266

(0)
N21_孤狼N21_孤狼
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • DNS原理詳解

    1、DNS概述   domain name service  區域名稱服務或者domain named system 區域名稱系統,是互聯網最基礎的服務,分為正向域名解析(將域名解析為IP地址)和反向域名解析(將IP地址解析為域名)兩部分。 2、bind   bind(Berkeley Internet Name Domain)…

    Linux干貨 2016-08-26
  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; ~]# grep  “^[[:space:]]\{1,\}” /boot/grup/grup.conf                     &…

    2017-03-01
  • gawk基礎及進階

    GUN awk: 文本處理三工具:grep,sed,awd grep,egrep,fgrep:文本過濾工具:pattern sed:行編輯器 模式空間、保持空間 awk:報告生成器,格式化文本輸出; AWK:Aho,Weinberger,Kernighan –> New AWK,NAWK GNU awk,gawk gawk – …

    Linux干貨 2017-05-22
  • 文本處理工具

    文本處理工具 文件查看命令:cat  cat [OPTION]… [FILE]…  -E: 顯示行結束符$  -n: 對顯示出的每一行進行編號  -A:顯示所有控制符  -b:非空行編號  -s:壓縮連續的空行成一行 [root@centous1 soft]#&nb…

    Linux干貨 2016-08-08
  • Linux系統性能工具

    linux中幾款常用的系統性能分析工具: 1.vmstat命令 解釋: 虛擬內存信息 用法: vmstat [options] [delay [count]] vmstat 2 5 //每2秒刷新一次,一共刷新5次 輸出屬性: procs: r:可運行(正運行或等待運行)進程的個數,和核心數有關 b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度) mem…

    Linux干貨 2017-12-19
  • iptables/netfilter進階

      在上一章當中我們介紹了iptables的介紹以及它的基本使用,下面我們開始介紹iptables的命令用法以及iptables是如何工作的。 1、回顧 2、iptables相關命令 1、回顧   我們回顧一下上一章節的內容,在上一章節中我們講述的是iptables的基本概念以及命令格式,同時講述規則鏈與表的概念,那么…

    Linux干貨 2017-02-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-16 15:44

    寫的很好,希望你這從Linux小白到大牛——與狼共舞的日子可以繼續下去,期待你后面的作業

欧美性久久久久