第八周:網絡基礎知識和shell腳本練習

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

網橋:是連接兩個局域網的基于MAC地址數據存儲轉發設備,工作于數據鏈路層
集線器:所有端口處于同一個廣播域和沖突域中,帶寬共享,工作于物理層
二層交換機:多端口網橋,一個端口一個沖突域,默認所有端口位于同一個廣播域中,可以劃分vlan,隔離廣播域,帶寬獨享
三層交換機:具有路由功能的二層交換機
路由器:連接不同網段的設備,負責不同網段之間數據通信
二層交換機一般用于接終端設備,三層交換機用于匯聚層,核心層,路由器用于不同網段之間數據通信

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

A類IP地址 地址范圍1.0.0.0到127.255.255.255,默認掩碼255.0.0.0

B類IP地址地址范圍128.0.0.0-191.255.255.255,默認掩碼255.255.0.0

C類IP地址范圍192.0.0.0-223.255.255.255,默認掩碼255.255.255.0

D類是組播地址,范圍從224.0.0.0到239.255.255.255,

E類作為多播和保留使用

以下列出留用的內部私有地址

A類 10.0.0.0–10.255.255.255

B類 172.16.0.0–172.31.255.255

C類 192.168.0.0–192.168.255.255

子網掩碼的表示形式:

1)通過與IP地址格式相同的點分十進制表示,如255.255.255.0

2)在IP地址后加上“/”符號以及1-32的數字,其中1-32的數字表示子網掩碼中網絡標識位的長度,如192.168.1.0/24

子網掩碼的作用:

1)用于屏蔽IP地址的一部分以區別網絡標識和主機標識

2)用于將一個大的IP網絡劃分為若干小的子網絡

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

OSI七層模型:

1)物理層:主要功能是完成相鄰結點之間原始比特流的傳輸,控制數據怎么被放置到通信介質上。

2)數據鏈路層:主要功能是如何在不可靠的物理線路上進行數據的可靠傳輸。完成的是網絡中相鄰結點之間可靠的數據通信。

3)網絡層:主要功能是完成網絡中主機間的報文傳輸。

4)傳輸層:是整個網絡的關鍵部分,實現兩個用戶進程間端到端的可靠通信,處理數據包錯誤、數據包次序,以及其他一些關鍵傳輸問題,

5)會話層:允許不同機器上的用戶之間建立會話關系。

6)表示層:處理用戶信息的表示問題,如編碼、數據格式轉換和加密等。

7)應用層:是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互聯系,實實現各種服務

TCP/IP4層模型

1)網絡訪問層:功能包括IP地址與物理硬件地址的映射,以及將IP分組封裝成幀。基于不同硬件類型的網絡接口,定義了和物理介質的連接。相當于OSI參考模型的物理層和數據鏈路層。

2)網際層:處理來自傳輸層的分組發送請求;處理輸入數據報;處理ICMP報文,即處理網絡的路由選擇、流量控制和擁塞控制等問題。在功能上類似于ISO/OSI參考模型中的網絡層。

3)傳輸層:主要功能是可靠而又準確地傳輸并控制源主機與目的主機之間的信息流,提供端到端的控制,通過滑動窗口機制提供流控制,通過序列號和確認機制來保證可靠性。

4)應用層:包括所有的高層協議,與OSI的應用層協議相差不大,包括HTTP、Telnet、FTP、SMTP、POP3、DNS等。

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

vim /etc/sysconfig/network-scripts/ifcfg-eth0    
DEVICE=eth0                                     #網卡號,和ifcfg-eth0對應就可以>
TYPE=Ethernet                                    #網絡類型
UUID=b04b477a-06f1-494b-85f8-83e070dc9010                            
ONBOOT=yes                                      #啟動時啟用連接
NM_CONTROLLED=yes                                #network manager參數
BOOTPROTO=none                                  #獲得IP地址方式,手動選擇none,自動選擇dhcp
IPADDR=192.168.1.61                             #設定IP地址
PREFIX=24                                       #掩碼位數
#NETMASK=255.255.255.0                          #也可以以這種發生些掩碼
GATEWAY=192.168.1.254                           #網關
DNS1=192.168.1.1                                #DNS
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
修改完成后重啟網絡
/etc/init.d/network restart

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

[root@localhost ~]# ifconfig eth0 192.168.16.108/24 up
[root@localhost ~]# ip addr add 192.168.16.108/24 dev eth0
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

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

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

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

#!/bin/bash
#
trap 'exit 1' INT
declare -i i=1
for i in $(seq 254 ); do
        if ping 172.16.250.$i -c 1 -W 1 &>/dev/null; then
                echo -e "\033[0;32;1m 172.16.250.$i is up! \033[0m"
        else
                echo -e "\033[0;31;1m 172.16.250.$i is down! \033[0m" 
        fi
        let i++
done

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

DEVICE=eth0                                     #網卡號,和ifcfg-eth0對應就可以>
TYPE=Ethernet                                    #網絡類型
UUID=b04b477a-06f1-494b-85f8-83e070dc9010                            
ONBOOT=yes                                      #啟動時啟用連接
NM_CONTROLLED=yes                                #network manager參數
BOOTPROTO=none                                  #獲得IP地址方式,手動選擇none,自動選擇dhcp
IPADDR=192.168.1.61                             #設定IP地址
PREFIX=24                                       #掩碼位數
#NETMASK=255.255.255.0                          #也可以以這種發生些掩碼
GATEWAY=192.168.1.254                           #網關
DNS1=192.168.1.1                                #DNS
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

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

[root@localhost ~]# ifconfig eth0:0 192.168.16.100/24
[root@localhost ~]# ip addr add 192.168.16.18/24 dev eth0:1
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

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

1)ifconfig
ifconfig -a:     查看所有網絡接口信息
ifconfig interface     查看指定網絡接口信息
ifconfig interface up|download     啟用或停用指定網絡接口
ifconfig interface ip/mask [up]     設定指定網絡接口IP地址和掩碼
2)route
route -n查看所有路由信息
route add添加路由
    route add [-net|-host] target [netmask Nm] [gw Gw][[dev] If]
    route add -net 192.168.0.0/24 gw 192.168.0.254 dev eth0
    route add -host192.168.1.5 gw 192.168.1.254 dev eth1
route del刪除路由
    route del [-net|-host] target [netmask ] [gw Gw][dev] 
    route del -net 192.168.0.0 255.255.255.0
    route del -host192.168.1.5
3)netstat
-t    tcp協議相關的連接
-u    udp協議相碰的連接
-w    raw socker相關的連接
-l    處于監聽狀態的連接
-a    所有的連接
-n    以數字顯示ip和端口
-e    擴展格式
-p    顯示相關進程及PID
常用組合
-tan
-uan
-tln
-uln
4)ip
ip link
    ip link set DEVICE IFACE up/down 激活或禁用指定接口
    ip link show up/dev 顯示所有激活狀態/指定接口信息
ipaddr
    ip addr { add | del } IFADDR dev STRING 增加或刪除IP地址
    ip addr show 顯示網絡接口信息
ip route
    ip route { add | del | show} 添加、刪除或顯示路由
5)ss
-t    tcp協議相關的連接
-u    udp協議相碰的連接
-w    raw socker相關的連接
-l    處于監聽狀態的連接
-a    所有的連接
-n    以數字顯示ip和端口
-e    擴展格式
-p    顯示相關進程及PID
-x    unix sock相關
-m    內存用量
-o    計時器信息

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

1)用rpm命令管理程序包
安裝    rpm -ivh     PACKAGE_FILE    安裝包
升級    rpm -Uvh    PACKAGE_FILE    升級包,無則安裝此包
          rpm -Fvh    PACKAGE_FILE    升級包,無則無變化
查詢    rpm -qa | grep FileName    查詢已安裝的某個軟件
          rpm -qf     FILE    查詢文件出處
          rpm -qc    PACKAGE_FILE    查詢包的配置文件
          rpm -ql    PACKAGE_FILE    查詢包的所有文件
          rpm -qd    PACKAGE_FILE    查詢包的信息
          rpm -qpi   PACKAGE_FILE    安裝之前查詢包信息
          rpm -qpl    PACKAGE_FILE    安裝之前查詢包的所有文件
卸載    rpm -e    PACKAGE_FILE    卸載包
驗證    rpm -V    PACKAGE_FIL    E驗證包
          rpm –import     PUBKEY    導入公鑰
維護    rpm initdb新建數據庫
           rpm rebuilddb重建數據庫
2)用yum倉庫來管理程序包
查看
    yum info PACKAGE_FILE            查看包信息
    yum historylist                        查看yum事務歷史
    yum deplistpackage1                查看包依賴
顯示
    yum repolist all    顯示yum倉庫列表
    yum list installed    顯示已安裝列表
    yum list available    顯示可用包
    yum list updates    顯示可升級的包
    yum list anaconda    顯示系統安裝的包
安裝 
    yum install PACKAGE_FILE    安裝包
    yum localinstall rpmfile1    安裝本地包
升級
    yum update PACKAGE_FILE    升級包
    yum downgrade PACKAGE_FILE    降級包
    yum check-update    檢查更新
卸載
     yum remove PACKAGE_FILE    卸載包
    yum providesfeature1    查看指定的特性
    yum clean    清理本地緩存
    yum search string1    搜索字符串
    yum info PACKAGE_FILE    查看包信息
包組管理
    yum groupinstall group1 [group2] […]    安裝包組
    yum groupupdate group1 [group2] […]    升級包組
    yum grouplist [hidden] [groupwildcard][…]    顯示包組
    yum groupremove group1 [group2] […]    卸載包組
    yum groupinfo group1 […]     查看包組信息

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

(1)掛載光盤至某目錄
mount -r /dev/sr0 /mnt/
(2)創建配置文件
vim /etc/yum.repos.d/CentOS-DVD.repo
[CentOS6.6]
name=CentOS cdrom    #倉庫的名字
baseurl=file:///mnt    #repodata目錄的倉庫訪問路徑
gpgchecked=0    #使用前是否檢驗包
enabled=1    #是否啟用此倉庫

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|grep "^K"); do
        echo "$i—-Stop"
        let k++
done
for i in $(ls /etc/rc.d/rc3.d|grep "^S"); do
        echo "$i—-Start"
        let s++
done
echo -e  "K file:$k\nS file:$s"

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

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

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

此腳步需要與用戶交互:

#!
#
declare -i sum=0
read -p "請輸入用戶,輸入完畢請按q鍵:" user
until [ $user == q ]; do
        if id $user &>/dev/null; then
                let sum+=$(id -u $user)
                echo "現在用戶的UID之和是: $sum"
        else
                echo "你輸入的用戶不存在,請重新輸入!退出請按q鍵。"
        fi
        read -p "請輸入用戶,輸入完畢請按q鍵:" user
done

echo "所有的用戶UID和是: $sum"

不需要交互的方式:

#!/bin/bash
declare -i sum
if [ $# -lt 1 ];then
echo "At least one username"
exit 1
else
for name in $*
do
if id $name &> /dev/null;then
let sum+=$(grep "^\<$name\>" /etc/passwd | cut -d: -f3)
fi
done
echo "id sum is $sum"
fi

14、寫一個腳本

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

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

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

#!/bin/bash
#
declare -i d=0
declare -i s=0
declare -a file
file=( $* )
echo ${file[*]}
for ((i=0;i<$#;i++)); do
        echo 
        echo "${file[$i]}"
        for a in ${file[$i]}/*; do
                if [ -b $a ]; then
                        echo "$a type is block."
                        echo "b" >> ./type.txt
                elif [ -c $a ]; then
                        echo "$a type is char."
                        echo "c" >> ./type.txt
                elif [ -d $a ]; then
                        echo "$a type is directory."
                        echo "d" >> ./type.txt
                        let d++
                elif [ -S $a ]; then
                        echo "$a type is socket."
                        echo "S" >> ./type.txt
                elif [ -L $a ]; then
                        echo "$a type is ln."
                        echo "L" >> ./type.txt
                elif [ -p $a ]; then
                        echo "$a type is p."
                        echo "p" >> ./type.txt
                elif [ -f $a ]; then
                        echo "$a type is file."
                        echo "f" >> ./type.txt
                fi
        done
done
echo "have $d directory."
echo "All Type :$(grep -o "[bcdSLpf]" ./type.txt | sort -u | wc -l)"
\mv  ./type.txt /tmp

15、寫一個腳本

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

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

#!/bin/bash
if id $1 &> /dev/null;then
    if [ `id -u $1` -ge 500 ];then
        echo "user is a domestic consumer" 
    else
        echo "user is a system or root consumer"
    fi
else
    echo "user is not exsits"

16、寫一個腳本

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

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

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

  #!/bin/bash
if [ $# -lt 1 ];then
echo "At least one username"
exit 1
fi
if id $1 &> /dev/null;then
uid=$(grep "^\<$1\>" /etc/passwd | cut -d: -f3)
if [ $uid -ge 500 ];then
echo "$1 is regular user"
else
echo "$1 is system user"
fi
else
echo "$1 is not exists"
fi

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

#!/bin/bash
#
trap 'exit 1' INT    # 用于捕捉中斷信號
declare -i i=1
for i in $(seq 20 100 ); do
        if ping 10.88.159.$i -c 1 -W 1 &>/dev/null; then
                echo -e "\033[0;32;1m 10.88.159.$i is up! \033[0m"
        fi
        let i++
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

 

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

(0)
dawningdawning
上一篇 2016-11-21
下一篇 2016-11-21

相關推薦

  • grep與正則表達式

    文本處理中比較強悍的三個工具是:grep、sed、awk。 其中grep主要作用是對于用戶給出“模式”對文本逐行進行匹配檢查,然后進行打印。   模式:由正則表達式字符及文本字符編寫的過濾條件 格式:grep [選項] [正則表達式字符]  文件  常用的選項:     -v:反向查找,顯示沒有被匹配的的行 …

    Linux干貨 2016-08-08
  • linux命令格式和常用命令

    Linxu命令使用格式 ~]#COMMAND OPTIONS ARGUMENTS CMMMAND:發起一命令:請求內核將某個二進制程序運行為一個進程; OPTIONS:指定命令的運行特性; 短選項:-C, 例如-l, -d 注意:有些命令的選項沒有-; 如果同一命令同時使用多個短選項,多數可合并:-l -d = -ld 長選項:–word, 例如…

    Linux干貨 2018-03-04
  • 程序包管理:rpm、yum以及(make)源代碼編譯安裝

    程序包管理:rpm、yum以及(make)源代碼編譯安裝 在Linux上安裝程序一般都有三種方法:源代碼編譯安裝,rpm包安裝和rpm包的前端安裝yum, (rpm,和yum程序包管理器是針對CentOS6平臺的) 程序包管理方式都大同小異:  源代碼–>目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)–&gt…

    Linux干貨 2017-01-10
  • DNS域名系統

    【本文導航】DNS域名系統DNS域名系統DNS解析類型DNS查詢類型DNS服務器類型資源記錄   SOA記錄   NS記錄   MX記錄   A記錄與泛域名   PTR記錄   CNAME記錄   AAAA記錄子域區域傳…

    Linux干貨 2016-12-26
  • 網絡模型知識點概括

       網絡模型分層 應用層 網絡進程訪問表示層 數據表示會話層 主機間通信傳輸層 端到端連接網絡層 數據傳輸   數據鏈路層 訪問介質物理層 物理線纜二進制封包與解封從下至上封包加包頭通過上層協議傳給對方機器,對方機器接受后需要從上至下拆解包頭,這個過程叫解封三種通訊模式單播廣播組播局域網:由服務器-》交換機-》pc …

    Linux干貨 2017-05-02
  • bash腳本基礎認知

    編程基礎:程序:指令+數據                過程式:以指令為中心,數據服務于指令              &nbs…

    Linux干貨 2017-03-02
欧美性久久久久