馬哥教育網絡21期+第八周練習博客 #
1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器:工作于ISO模型的物理層,防止由于距離遠,信號衰減; 網橋:用來連接不同網段,隔離沖突域; 二層交換機:二層交換機一般做為了三層交換機以下,利用設備mac地址進行通信,可以劃分vlan,隔離廣播域; 三層交換機:用于核心數據轉發,不僅可以劃分廣播域,也可以實現路由轉發功能; 路由器:實現路由轉發功能,并且可以對路由進行優化以及限制功能,通常部署在邊界或三層交換機之上; 2、IP地址的分類有哪些?子網掩碼的表示形式及其作用; IP地址分為5類:A類,B類,C類,D類,E類; 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 3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。 OSI七層模型:物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層; 物理層:網線,集線器 數據鏈路層:網卡,網橋 網絡層:路由器 傳輸層:四層交換機 應用層:計算機的各種數據 TCP/IP四層模型:物理層,網絡層,傳輸層,應用層; 4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式) 1,首先物理層需要將網線或ip地址與互聯網配置在同一個網段當中; 2,使用ifconfig命令配置ip地址,這里請注意ifconfig配置命令在系統重新啟動之后需要重新配置; 3,如上層沒有網絡轉發功能,需要使用route -n配置路由轉發; 5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。 Liunx網絡屬性配置的相關配置文件:/etc/sysconfig/network-scripts/文件下; DEVICE:此配置文件應用到的設備; HWADDR:對應的設備的MAC地址; BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp; NM_CONTROLLED:NM是NetworkManager的簡寫;此網卡是否接受NM控制; ONBOOT:在系統引導時是否激活此設備; TYPE:接口類型;常見有的Ethernet, Bridge; UUID:設備的惟一標識; 下面看一下具體的配置: [root@localhost network-scripts]# cat ifcfg-eth0 DEVICE=eth0-->設備名稱 TYPE=Ethernet-->設備名稱 UUID=840aafa6-9d45-43a1-ba88-dd3be9f3ff1e-->設備的唯一標識 ONBOOT=no-->系統引導時是否激活此設備 NM_CONTROLLED=yes-->此網卡是是否接受NM控制; BOOTPROTO=none-->激活此設備使用的ip地址配置協議; HWADDR=08:00:27:B5:54:45 IPADDR=192.168.1.5-->ip地址 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" 這里要注意配置完此配置文件需要使用service network restart重新激活此網絡功能! 這里的路由配置文件:/etc/sysconfig/network-scripts/route-IFACE 網絡接口識別并命名相關的udev配置文件:/etc/udev/rules.d/70-persistent-net.rules 6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; [root@wanghongkai bin]# cat ping.sh #!/bin/bash declare -i i=1 net="192.168.56" declare -i j=0 declare -i k=0 while [ $i -le 254 ];do ping -c 1 -w 1 $net.$i &> /dev/null if [ $? -eq 0 ]; then echo -e "\033[32m $net.$i is up. \033[0m" let j++ else echo -e "\033[31m $net.$i is down. \033[0m" let k++ fi let i++ done echo -e "\033[32m up is $j \033[0m" echo -e "\033[31m down is $i \033[0m" 7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值; Liunx網絡屬性配置的相關配置文件:/etc/sysconfig/network-scripts/文件下; DEVICE:此配置文件應用到的設備; HWADDR:對應的設備的MAC地址; BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp; NM_CONTROLLED:NM是NetworkManager的簡寫;此網卡是否接受NM控制; ONBOOT:在系統引導時是否激活此設備; TYPE:接口類型;常見有的Ethernet, Bridge; UUID:設備的惟一標識; 下面看一下具體的配置: [root@localhost network-scripts]# cat ifcfg-eth0 DEVICE=eth0-->設備名稱 TYPE=Ethernet-->設備名稱 UUID=840aafa6-9d45-43a1-ba88-dd3be9f3ff1e-->設備的唯一標識 ONBOOT=no-->系統引導時是否激活此設備 NM_CONTROLLED=yes-->此網卡是是否接受NM控制; BOOTPROTO=none-->激活此設備使用的ip地址配置協議; HWADDR=08:00:27:B5:54:45 IPADDR=192.168.1.5-->ip地址 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" 這里要注意配置完此配置文件需要使用service network restart重新激活此網絡功能! 8、如何給網絡接口配置多個地址,有哪些方式? 1) ifconfigetho IP/mask 2) ipaddr add ip device etho 3) Linux網絡屬性配置的tui(text user interface):system-config-network-tui 4) 使用setup找到; 9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。 netstat:-r顯示內核路由信息 -n數字格式 ss: -t: tcp協議相關 -u: udp協議相關 -w: 裸套接字相關 -x:unix sock相關 -l: listen狀態的連接 -a: 所有 -n: 數字格式 -p: 相關的程序及PID -e: 擴展的信息 -m:內存用量 -o:計時器信息 常用組合:-tan,-tanl,tanlp,-uan 10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。 rpm:-v:顯示詳細信息 -vv:顯示更多丑陋的調試信息 -h:以#顯示程序包管理執行進度,每個#表示2%的進度 -U:升級 --oldpackage:降級 --force:強行升級 -a:查詢當前系統已安裝的程序包 -f:查詢指定的文件由那個程序安裝生成 --changelog:查詢rpm包的changlog -c: 查詢程序的配置文件 -d: 查詢程序的文檔 -i: information -l: 查看指定的程序包安裝后生成的所有文件; --scripts:程序包自帶的腳本片斷 -R: 查詢指定的程序包所依賴的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY; 這里使用man rpm查看各個命令使用方式; yum:解決了程序包的依賴關系; 這里我已經安裝了新的操作系統,并將系統中的yum源更改為阿里云的yum源: [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-Media.repo epel.repo CentOS-Base.repo.bach CentOS-Vault.repo epel-testing.repo CentOS-Debuginfo.repo epel-release-latest-6.noarch.rpm 11、如何使用發行版光盤作為yum repository,請描述該過程。 這里先掛載新的光盤并創建目錄: 將光盤進行掛載:mount -r -t iso9660 /dev/cdrom /media/cdrom 創建yum源中的配置文件; 這里給yum源中的配置文件逐一解釋: name=新建yum名稱 baseurl:指定yum源的地址 enabled:是否啟用 gpgcheck:是否需要驗證 這里有必要說一下編譯安裝: 因為有的軟件是無法通過yum,rpm等方法進行安裝,這時候我們就需要進行源代碼的編譯安裝; 12、寫一個腳本,完成以下功能 (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干; (2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串; (3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串; (4) 分別統計S開頭和K開頭的文件各有多少; [root@localhost bin]# cat rc.sh #!/bin/bash # # cd $1 for i in $(ls K*);do echo "$i.stop" let t++ done for j in $(ls S*);do echo "$j.start" let u++ done echo "K is $t" echo "S is $u" 13、寫一個腳本,完成以下功能 (1) 腳本能接受用戶名作為參數; (2) 計算此些用戶的ID之和; [root@wanghongkai bin]# cat sum6.sh #!/bin/bash # read -p "input your user name " nameuser while [ ${nameuser} != "quit" ];do id ${nameuser} &> /dev/null && result=0 ||result=1 if [ ${result} -eq 1 ];then read -p "Please input your user name again,your user name is not exist: " nameuser continue fi userid=$(id -u ${nameuser}) let sumid+=$userid read -p "input your user name again:" nameuser done echo "the sum of these user's ID is ${sumid}." 14、寫一個腳本 (1) 傳遞一些目錄給此腳本; (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型; (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型; [root@localhost bin]# cat file2.sh #!/bin/bash # cd $@ for file in $(ls ); do if [ -f $file ]; then echo "Common file." let i++ elif [ -L $file ]; then echo "Symbolic file." let j++ elif [ -d $file ]; then echo "Directory." let y++ elif [ -S $file ];then echo "The socket file." let u++ elif [ -c $file ];then echo "Character device file." let o++ else echo "Other type." let p++ fi done # echo "Common file $i." echo "Symbolic file $j." echo "Directory $y." echo "The socket file $u." echo "Character device file $o." echo "Other type $p." 15、寫一個腳本 通過命令行傳遞一個參數給腳本,參數為用戶名 如果用戶的id號大于等于500,則顯示此用戶為普通用戶; [root@wanghongkai bin]# cat yonghu.sh #!/bin/bash # read -p "shu ru yong hu ming:" user function ID { i=`cat /etc/passwd | grep "^$user" | cut -d':' -f3` while true; do if [ $i -le 500 ];then echo "$user is adminhuser." else echo "$user is hellouser." fi break done } # while true; do ID break done 16、寫一個腳本 (1) 添加10用戶user1-user10;密碼同用戶名; (2) 用戶不存在時才添加;存在時則跳過; (3) 最后顯示本次共添加了多少用戶; 使用while方法: [root@wanghongkai bin]# cat user.sh #!/bin/bash declare i=1 while [ $i -le 10 ]; do if id user$i &> /dev/null; then echo "user$i cun zai." else useradd user$i &> /dev/null && echo "user$i" | passwd --stdin user$i &> /dev/null echo "user$i yi jing chuangjian." fi let i++ done 17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來; 使用while方法實現: [root@wanghongkai bin]# cat ping.sh #!/bin/bash declare -i i=1 net="192.168.56" declare -i j=0 declare -i k=0 while [ $i -le 20 ];do ping -c 1 -w 1 $net.$i &> /dev/null if [ $? -eq 0 ]; then echo "$net.$i is up." let j++ else let k++ fi let i++ done echo "up is $j" 18、打印九九乘法表; for方法實現: [root@wanghongkai bin]# cat for99.sh #!/bin/bash for i in {1..9};do for j in {1..9};do if [ $j -le $i ]; then echo -n -e "${i}X${j}=$[$i*$j]\t" fi done echo done [root@wanghongkai bin]# cat 1.sh #!/bin/bash # for ((i=1;i<=9;i++));do for ((j=1;j<=i;j++));do echo -n -e "${j}X${i}=$[$j*$i]\t" done echo done
原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/43091
完成的非常好,其中還用幾種方法實現,非常的棒