馬哥教育網絡班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模型),每一層的功能及涉及到的物理設備有哪些。
-
物理層
規定通信設備的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連接。在這一層,數據的單位稱為比特(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
寫的很好,希望你這從Linux小白到大牛——與狼共舞的日子可以繼續下去,期待你后面的作業