1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別
網橋:一種網絡設備,負責網絡橋接(network bridging)之用。橋接器將網絡的多個網段在數據鏈路層(OSI模型第2層)連接起來(即橋接)。
集線器(Hub):是指將多條以太網雙絞線或光纖集合連接在同一段物理介質下的設備。集線器是運作在OSI模型中的物理層。
二層交換機:工作于OSI參考模型的第二層,即數據鏈路層。交換機內部的CPU會在每個端口成功連接時,通過將MAC地址和端口對應,形成一張MAC表。在今后的通訊中,發往該MAC地址的數據包將僅送往其對應的端口,而不是所有的端口。因此,交換機可用于劃分數據鏈路層廣播,即沖突域;但它不能劃分網絡層廣播,即廣播域。
三層交換機:則可以處理第三層網絡層協議,用于連接不同網段,通過對缺省網關的查詢學習來創建兩個網段之間的直接連接。
路由器(英語:Router,又稱路徑器):是一種電訊網絡設備,提供路由與轉送兩種重要機制,可以決定數據包從來源端到目的端所經過的路由路徑(host到host之間的傳輸路徑),這個過程稱為路由;將路由器輸入端的數據包移送至適當的路由器輸出端(在路由器內部進行),這稱為轉送。路由工作在OSI模型的第三層——即網絡層,例如網際協議(IP)。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址分類:
-
A類:
第一段為網絡號,后三段為主機號
網絡號:
0 000 0000 – 0 111 1111:1-127
網絡數量:126,127
每個網絡中的主機數量:2^24-2(全0,全1) 全0網絡本身,全1表示全網
默認子網掩碼:255.0.0.0,/8 -
B類:
前兩段為網絡號,后兩段為主機號
網絡號:
10 00 0000 – 10 11 1111:128-191
網絡數:2^14
每個網絡中的主機數量:2^16-2
默認子網掩碼:255.255.0.0,/16
私網地址:172.16.0.0-172.31.0.0 -
C類:
前三段為網絡號,最后一段為主機號
網絡號:
110 0 0000 – 110 1 1111:192-223
網絡數:2^21
每個網絡中的主機數量:2^8-2
默認子網掩碼:255.255.255.0, /24 -
D類:組播
1110 0000 – 1110 1111:224-239 -
E類:科研
240-255
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型
TCP/IP模型
對應的物理設備:
物理層:HUB集線器,網卡,網橋、中繼器、調制解調器
鏈路層:2層交換機
網絡層:3層交換機,路由器
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
虛擬機演示環境為CentOS7.2,采用橋接模式
先查看下目前本機的/etc/sysconfig/network-scripts/ifcfg-eno16777736 中的配置,為dhcp的協議.用ifconfig查看IP地址為192.168.1.101
修改網卡配置文件:
我的物理機目前的ip是192.168.1.100,網關為192.168.1.2
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE="Ethernet" BOOTPROTO="static" #協議改為static DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="eno16777736" UUID="711a64d3-1c88-4a86-9bb3-70c946122b22" DEVICE="eno16777736" ONBOOT="yes" PEERDNS="yes" PEERROUTES="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_PRIVACY="no" IPADDR=192.168.1.107 #指定IP地址為192.168.1.107 NETMASK=255.255.255.0 #子網掩碼為255.255.255.0或者使用PREFIX=24 GATEWAY=192.168.1.2 #網關為192.168.1.2和物理機一樣 DNS1=192.168.1.2 #DNS1 DNS1=8.8.8.8 #DNS2
修改DNS配置文件(不修改也是可以的,重啟服務后會自己生成):
[root@localhost ~]# vim /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.1.2 #增加一條DNS記錄 nameserver 8.8.8.8 nameserver 114.114.114.114
重啟網絡服務.
[root@localhost ~]# systemctl restart network.service
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程
-
IP設置
1.命令,ifconfig命令,ip命令,TUI工具(centos6:setup->Network Configuartions centos7:nmtui)
2.修改配置文件:/etc/sysconfig/network-scripts/ifcfg-接口 -
路由設置
1.命令:route
2.修改配置文件:/etc/sysconfig/network-scripts/route-接口 -
DNS設置
1.修改配置文件:/etc/resolv.conf
2.在網卡配置文件/etc/sysconfig/network-scripts/ifcfg-接口 中指定DNS -
主機名配置
1.命令:hostname 立即生效,重新登錄終端即可看到
2.修改內核參數:/proc/sys/kernel/hostname 立即生效,重新登錄終端即可看到
3.修改配置文件:/etc/sysconfig/network和/etc/hosts ,需要重啟系統生效
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
為了能在本地測試,將ip段改為192.168.1.1-192.168.254
#!/bin/bash for((i=1;i<255;i++));do ping -c 1 -w 1 "192.168.1.$i" >/dev/null if [ $? -eq 0 ];then echo -e "\033[0;32;1m 192.168.1.$i is up! \033[0m" else echo -e "\033[0;31;1m 192.168.1.$i is down! \033[0m" fi done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
/etc/sysconfig/network-scripts/ifcfg-IFACE: DEVICE:此配置文件應用到的設備,其值應該為ifcfg-IFACE中的IFACE HWADDR:對應的設備的MAC地址 BOOTPROTO:激活此設備時使用的地址配置協議,常用的有static(手動配置),none(手動配置),dchp或bootp(動態配置) NM_CONTROLLED:NM是NetworkManager的簡寫;此網卡是否接受NM控制;建議為“no” ONBOOT:是否隨OS啟動激活此設備, TYPE:接口類型;常見的有Ethernet,Bridge UUID:設備的惟一標識 IPADDR:IP地址 NETMASK:子網掩碼 GATEWAY:默認網關 DNS1:主DNS服務器 DNS2:第二個DNS服務器 DNS3:第三備用DNS IPV6INIT:是否初始化ipv6協議地址 USERCTL:普通用戶是否可控制此設備 PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中
8、如何給網絡接口配置多個地址,有哪些方式?
1.ifconfig:
ifconfig interface [aftype] options | address …
# ifconfig IFACE IP/MASK [up|down]
# ifconfig IFACE IP netmask NETMASK
2.ip address
ip address add – add new protocol address
-
ip addr add IFADDR dev IFACE 基本用法
3.修改配置文件
/etc/sysconfig/network-scripts/ifcfg-接口
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令:接口及地址查看和管理
可以使用ifconfig命令配置網卡屬性,設置后立即生效,重啟后失效。
顯示活動接口信息 ifconfig eth0
顯示所有接口信息 ifconfig -a
啟用或禁用給定接口 ifconfig eth0 up/down
設置IP地址及掩碼 ifconfig eth0 172.168.1.100/24
route命令:路由查看及管理
添加主機路由 route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
添加網絡路由 route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
添加默認路由 route add default gw 172.16.0.1
刪除主機路由 route del -host 192.168.1.3
刪除網絡路由 route del -net 192.168.0.0 netmask 255.255.255.0
netstat命令:打印網絡連接,路由表,接口統計信息
以數字形式顯示TCP協議相關所有狀態 netstat -tan
以數字形式顯示UDP協議相關所有狀態 netstat -uan
以數字形式顯示TCP協議相關的監聽狀態 netstat -tnl
以數字形式顯示UDP協議相關的監聽狀態 netstat -unl
顯示內核路由表 netstat -r
顯示所有接口統計數據 netstat -i
顯示指定接口信息 netstat -Ieth0
dig命令:解析DNS地址工具
正解DNS 域名至IP地址 dig -t A www.magedu.com
反解DNS IP地址至域名 dig -x 127.0.0.1
ip命令:顯示/操縱路由,設備,策略路由和隧道
禁用接口 ip link set dev eth0 down
啟用接口 ip link set dev eth0 up
顯示接口信息 ip link show dev eth0
顯示主地址 ip addr show dev eth0 primary
顯示次地址 ip addr show dev eth0 secondary
添加IP地址 ip addr add 172.16.100.13/16 dev eth0
添加網卡別名 ip addr add 172.16.100.13/16 dev eth0 label 'eth:0'
刪除別名 ip addr flush dev eth0 label 'eth0:0'
添加主路由 ip route add 192.168.1.3 via 172.16.0.1 dev eth0
添加網絡路由 ip route add 192.168.0.0/16 via 172.16.0.1 dev eth0
添加默認路由 ip route add default via 127.16.0.1
刪除路由 ip route del 192.168.1.3
查看路由 ip route show
清空路由 ip route flush dev eth0
ss命令:顯示網絡連接工具
參數用法同netstat
指定顯示某種狀態ss -t state established '( dport = :ssh or sport = :ssh )'
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的
rpm
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE …
-v: verbose
-vv:
-h: 以#顯示程序包管理執行進度;每個#表示2%的進度
rpm -ivh PACKAGE_FILE …
升級:
upgrage:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”;
freeshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作;
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
查詢:
rpm {-q|–query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪個程序包安裝生成
卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts]
yum
顯示倉庫列表:
yum repolist [all|enabled|disabled]
顯示程序包:
list
# 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 […]
11、如何使用發行版光盤作為yum repository,請描述該過程。
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 創建配置文件
eg:centos7掛載iso鏡像光盤做本地yum倉庫
[root@localhost ~]# mount -r /dev/cdrom /media/cdrom [root@localhost cdrom]# ls CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# vim cdrom-local.repo #建一個本地倉庫,編輯內容如下 1 [base] 2 name=centos 7.2.1511 3 baseurl=file:///media/cdrom 4 enabled=1 5 gpgcheck=0 [root@localhost yum.repos.d]# yum repolist #此時本地的倉庫就可以正常加載了 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base centos 7.2.1511 9,007 repolist: 9,007
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 dir=/etc/rc.d/rc3.d for i in $( ls $dir);do echo $i"stop" if [ $( echo $i | grep "^[s|S]") ];then let s++ elif [ $(echo $i | grep "^[k|K]") ];then let k++ fi done echo "k開頭的文件有$k個" echo "s開頭的文件有$s個"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash if [ $# -lt 1 ];then echo "用戶名至少一個" && exit 1 fi declare -i uid=0 for i in $* ;do if [ $(id -u $i) ];then let uid+=$(id -u $i) fi done echo "用戶id之和為$uid"
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash declare -i sub_dir=0 declare -i block_file=0 declare -i normal_file=0 declare -i char_file=0 declare -i link_file=0 declare -i unknow_file=0 if [ $# -lt 1 ];then echo "至少一個目錄" && exit 1 fi for i in $*;do if [ ! -d $i ];then echo "$i不是目錄" continue fi for file in $i/*;do if [ -d $file ];then echo -e "\t$(basename $file) is sub_dir" && let sub_dir++ elif [ -b $file ];then echo -e "\t$(basename $file) is block_file" && let block_file++ elif [ -c $file ];then echo -e "\t$(basename $file) is char_file" && let char_file++ elif [ -h $file ];then echo -e "\t$(basename $file) is link_file" && let link++ elif [ -f $file ];then echo -e "\t$(basename $file) is normal_file" && let normal_file++ else echo -e "\t$(basename $file) is Unknow type file" && unknow_file++ fi done echo "$i目錄下:普通文件:$normal_file,子目錄:$sub_dir,塊文件:$block_file,字符文件:$char_file,鏈接文件:$link_file,未知文件:$unknow_file" done
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash if [ $# -lt 1 ];then echo "至少一個用戶名" && exit 1 fi for i in $*;do if [ $(id -u $i) -ge 500 ];then echo "$i:普通用戶" else echo "$i:非普通用戶" fi done
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash declare -i sum=0 for i in {1..10};do if ! id user$i &> /dev/null;then useradd user$i echo user$i | passwd --stdin user$i let sum++ fi done echo "共創建$sum個用戶.$[10-$sum]個用戶已存在"
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來
未配合本地測試,將ip改成自己所在網段 192.168.1.90-172.192.168.110
#!/bin/bash for i in {90..110};do ping -c 1 -w 1 "192.168.1.$i" >/dev/null if [ $? -eq 0 ];then echo -e "\033[0;32;1m 192.168.1.$i is online! \033[0m" fi done
18、打印九九乘法表
#!/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
原創文章,作者:luoluo,如若轉載,請注明出處:http://www.www58058.com/59165
寫的很好,看的出來很用心,可以當成案例了,唯一不足的就是圖掛了