一、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。node
網橋:網橋工做在七層參考模型中的數據鏈路層,用於鏈接兩個不一樣網段的網絡,根據mac地址轉發幀進行通訊,而且隔離不一樣網段間的通訊,提升安全性,可隔離衝突域。因爲網橋接口比較少,後被二層交換機代替;主要用於接入層數據庫
集線器:集線器工做在七層參考模型中的物理層,主要功能是對接收到的信號進行再生×××放大,以擴大網絡的傳輸距離,數據以廣播的方式發送,不具有交換機得學習轉發能力;因爲集線器採用共享式帶寬的工做方式,網絡中才生的數據量很大時,會出現擁塞,後被二層交換機代替;主要用於接入層vim
二層交換機:二層交換工做在七層參考模型的數據鏈路層,主要功能包括物理編址、網絡拓撲結構、錯誤校驗、幀序列,VLAN劃分;經過學習每一個端口鏈接的主機MAC地址來轉發數據包,採用獨享帶寬的工做方式;主要用於接入層,匯聚層。windows
三層交換機:三層交換機工做在七層參考模型的網絡,具有部分路由器的功能,加快大型局域網內部的數據交換,經過網絡層來實現數據的高速轉發,主要用於大型局域網的核心層centos
路由器:路由器工做在七層參考模型中的網絡,主要用來實現網絡互連,數據處理,網絡處理及路由尋址。路由器能隔離廣播包實現不一樣子網間的互聯;主要用於廣域網和局域網的核心層緩存
二、IP地址的分類有哪些?子網掩碼的表示形式及其做用安全
IP的主要分爲五類:bash
A:1.0.0.0-127.255.255.255 私有地址:10.0.0.0-10.255.255.255服務器
B:128.0.0.0-191.255.255.255 私有地址:172.16.0.0-172.31.255.255網絡
C:192.0.0.0-223.255.255.255 私有地址:192.168.0.0-192.168.255.255
D:224.0.0.0-239.255.255.255 通常用於組播
E:224.0.0.0-255.255.255.255 保留,255.255.255.255爲廣播地址
子網掩碼:
子網掩碼主要32二進制表示,用於IP地址哪些是主機位,哪些是網絡號,網絡號相同表示在同一子網內
A:255.0.0.0
B:255.255.0.0
C:255.255.255.0
D,E默認沒有子網掩碼
三、計算機網絡的分紅模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI七層參考模型:
應用層:數據 用戶接口,提供用戶程序的接口
表示層:數據 數據的表現形式,特定功能的實現,如,加密
會話層:數據 容許不一樣機器的用戶進程之間創建會話關係,如,windows Linux
傳輸層:段 實現網絡中不一樣主機上用戶之間的數據通訊。如,UDP,TCP
網絡層:包 提供邏輯地址(IP)、選路、數據從源段到目的端的傳輸,如,路由器
數據鏈路層:幀 將上層協議封裝成幀,用MAC地址訪問媒介,錯誤檢查與修正。如,交換機
物理層:比特流 設備之間比特流的傳輸,物理接口,電氣特性,如,雙絞線
TCP/IP模型
應用層:向用戶提供一組經常使用的應用程序,對應OSI模型中的前三層,好比(電子郵件,FTP,HTTP)
傳輸層:爲應用程序間提供端到端的通訊,其主要功能:格式化信息流,提供可靠的傳輸。好比(UDP,HTTP)
Internet層:對應OSI模型中的網絡層,其主要功能有:
1.處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報文,選擇去往信宿的路徑,而後將數據報發往適當的網絡接口
2.處理輸入數據報:首先檢查其合法性,而後進行尋徑,假如數據報已到信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報還沒有到達信宿,則轉發數據報
3.處理路徑、流控、擁塞等問題
網絡協議包括(IP,ICMP)
網絡接口層:對應OSI模型中的數據鏈路層和物理層。
四、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
[root@jun-shao ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=df0b60bc-b434-4f50-85b6-903a63b70fd3 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static HWADDR=00:0C:29:6F:B4:CA LAST_CONNECT=1474051305 IPADDR=192.168.0.223 NETMASK=255.255.255.0 GATEWAY=192.168.0.1
五、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。
(1)ifconfig命令 ifconfig eth0 192.168.0.222/24 (2)ip命令 [root@jun-shao ~]# ip addr add 192.168.0.221/24 dev eth0 (3)setup命令
六、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的全部主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash for ((i=1;i<255;i++));do ping -c 1 -w 1 "172.16.250.$i" > /dev/null if [ $? -eq 0 ];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 done
七、詳細描述每一個網絡接口的配置文件中各個參數的含義和其所對應的值;
DEVICE=eth0 //此配置文件應用到的設備 TYPE=Ethernet //接口類型,常見的有:Ethernet,Bridge UUID=df0b60bc-b434-4f50-85b6-903a63b70fd3 //設備的惟一標識 ONBOOT=yes //在系統引導時是否激活此設備 NM_CONTROLLED=yes //NM是NetworkMassager的簡寫,此網卡是否接受NM腳本控制,建議centos 6改成no BOOTPROTO=dhcp //引導協議,啓動此設備用到的協議,經常使用的dhcp,static,none,bootp HWADDR=00:0C:29:6F:B4:CA //對應設備的mac地址 DEFROUTE=yes PEERDNS=yes //若是bootproto的值爲「DHCP」,是否容許dhcp server分配的dns服務器指向直接覆蓋至/etc/rosolv.conf文件中 NAME="System eth0" LAST_CONNECT=1474051305 IPADDR=192.168.1.1 //指明ip地址 NETMASK=255.255.255.0 //指明子網掩碼 GATEWAY=192.168.1.254 //指明默認網關 DNS1= //第一個DNS服務器指向 DNS2= //第二個DNS服務器指向 USERCTL= //普通用戶是否可控制此設備
八、如何給網絡接口配置多個地址,有哪些方式?
給網卡配置多地址:
[root@jun-shao ~]# ifconfig eth0:0 192.168.1.1/24 [root@jun-shao ~]# ip addr add 192.168.0.221/24 dev eth0 [root@jun-shao ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 //編輯配置文件
注意:網卡別名不能使用dhcp協議引導
九、經常使用的網絡管理類工具備哪些,並用示例形式描述他們的使用方法。
(1)netstat命令: Print network connections, routing tables, interface statistics, masquerade
connections, and multicast memberships
顯示網絡鏈接
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l]
[--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v]
[--continuous|-c] [delay]
-t:tcp協議相關
-u:udp相關
-w:raw socket相關
-l:處於監聽狀態
-a:全部狀態
-n:以數字顯示ip和端口
-e:擴展格式
-p:顯示相關進程及pid
相關組合
-tan,-uan,-tnl,-unl
顯示路由表
netstat {--route|-r} [--numeric|-n]
-r:內核路由表
-n:數字格式
顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e][--pro-gram|-p] [--numeric|-n]
netstat -i :顯示全部接口的數據
netstat -Iiface:顯示指定接口的統計數據
[root@jun-shao ~]# netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:46325 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 192.168.0.223:22 192.168.0.100:17947 ESTABLISHED tcp 0 848 192.168.0.222:22 192.168.0.100:14977 ESTABLISHED tcp 0 0 192.168.0.223:22 192.168.0.100:16222 ESTABLISHED tcp 0 0 192.168.0.104:22 192.168.0.100:4707 ESTABLISHED tcp 0 0 :::111 :::* LISTEN tcp 0 0 :::42770 :::* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN
(2)ss命令:
格式:ss [option]... [filter]
選項:
-t :tcp協議相關
-u: udp相關
-w:裸套接字相關
-x:unix sock相關
-l:listen狀態連接
-a:全部狀態
-n:數字格式
-p:程序相關
-e:擴展的信息
-m:內存用量
-o:計時器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
[root@jun-shao ~]# ss -ta State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::sunrpc :::* LISTEN 0 128 *:sunrpc *:* LISTEN 0 128 :::42770 :::* LISTEN 0 128 *:46325 *:* LISTEN 0 128 :::ssh :::* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:ipp *:* LISTEN 0 128 ::1:ipp :::* LISTEN 0 100 ::1:smtp :::* LISTEN 0 100 127.0.0.1:smtp *:* ESTAB 0 0 192.168.0.223:ssh 192.168.0.100:17947 ESTAB 0 848 192.168.0.222:ssh 192.168.0.100:14977 ESTAB 0 0 192.168.0.223:ssh 192.168.0.100:16222 ESTAB 0 0 192.168.0.104:ssh
192.168.0.100:4707
(3)route命令:用於顯示或操做路由表
[root@jun-shao ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 1 0 0 eth0 default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
(4)ping命令:檢測網絡是否通暢
[root@jun-shao ~]# ping -c 1 192.168.1.1 //-c 指定次數 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=62 time=33.1 ms --- 192.168.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 33ms rtt min/avg/max/mdev = 33.173/33.173/33.173/0.000 ms
十、Linux系統軟件包管理方法(安裝、升級、卸載等操做)有哪些,以及如何管理的。
(1)RPM包管理
a.安裝RPM包
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i:安裝程序表
-v:顯示程序包安裝的詳細過程
-h:以#顯示程序包管理執行進度:每一個#表示2%的進度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test:測試安裝,但不真正執行安裝過程;dry run模式
--nodeps:忽略依賴關係
--replacepkgs:從新安裝
--nosignature :不檢查來源合法性
--nodigest:不檢查完整性
--noscripts:不執行程序包腳本片斷
%pre:安裝前腳本 --nopre
%post:安裝後腳本--nopost
%preun:卸載前腳本--nopreun
%postun:卸載後腳本--nopostun
b.升級程序包
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade:安裝有舊版程序包,則「升級」,若是不存在舊版本程序包,則」安裝「
freeshen:安裝有舊版本程序包,則「升級」,若是不存在舊版本程序包,則不執行升級操做
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage :降級
--force:強制升級
注意:
(1) 不要對內核進行升級操做,Linux支持多內核版本並存,所以,直接安裝新版本內核
(2) 若是原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)後保留
c.查詢
rpm {-q|--query} [select-options] [query-options]
select-options:挑選
-a:查詢全部已安裝的包
-f:查詢指定的文件由哪一個程序安裝完成
-g:查詢指定包組的程序包
-p /PATH/TO/PACKAGE_FILE:針對尚安裝的程序文件作查詢操做
--whatprovides:查詢程序包的某個功能是由那個程序包安裝的
--whatrequires:查詢指定的功能被那個包所依賴
query-options
--changelog:查詢rpm包的changelog
-c:查詢rpm包的配置文件、
-d:操做rpm包的文檔
-i:查詢rpm包的簡要信息,如發佈版,安裝的平臺
-l list:查看指定程序包安裝後生成的全部文件
--script:程序包自帶的腳本片斷
-R:查詢指定的程序包所依賴的capability
--provides:列出指定程序包所提供的 capbility
d.卸載
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
e.校驗
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs //大小的改變
M Mode differs (includes permissions and file type) //權限的改變
5 digest (formerly MD5 sum) differs //MD5改變
D Device major/minor number mismatch //設備改變
L readLink(2) path mismatch //鏈接改變
U User ownership differs //屬主改變
G Group ownership differs //屬組改變
T mTime differs //日期和時間改變
P caPabilities differ //功能的改變
導入所須要的公鑰:
rpm --improt /PATH/FROM/GPG-PUBKEY-FILE
f.數據庫重建
rpm {--initdb | --rebuilddb}
initdb:初始化
若是事先不存在數據庫,則新建之:不然不執行任何操做
rebuilddb:重建
不管當前存在與否,直接從新建立數據庫
(2)yum包管理
顯示倉庫列表:
* repolist [all|enabled|disabled]:顯示倉庫,all顯示全部,默認顯示啓用
顯示程序包:
list
yum list [all | glob_exp1] [glob_exp2] [...] //顯示程序包,默認顯示全部,也可使用通配符進行匹配
yum list [available | installed | updates] [glob_exp1] [...] //顯示全部[可用|已安裝|更新]的程序包
安裝程序包:
install package1 ...
* reinstall package1 [package2] [...] //從新安裝
升級程序包
* update [package1] [package2] [...]
* downgrade package1 [package2] [...] //降級
檢查升級包:
* check-update
卸載程序包
* remove | erase package1 [package2] [...]
查看程序包的information
info
查看指定的特性(能夠是某文件)是有那個程序包提供的 -qf:
provides | whatprovides feature1 [feature2] [...]
清理本地緩存:
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
生成緩存
* makecache
搜索:
* search string1 [string2] [...]
以指定關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities
* deplist package1 [package2] [...]
查看yum事務歷史
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-
back|new|sync|stats]
執行一次yum,就是一次事務
安裝從互聯網下載的rpm包,解決依賴關係
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
包組管理的相關命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
yum的命令行選項:
--nogpgcheck:禁止使用gpg check
-y:自動回答yes
-q:靜默模式
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啓用此處指定的repo
--noplugins:禁止全部插件
(3)源碼編譯程序包管理
./configure:
a.經過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile
b. 檢查依賴到的外部環境
make:
根據makefile文件,構建應用程序
make install
十一、如何使用發行版光盤做爲yum repository,請描述該過程。
[root@jun-shao ~]# mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only [base] name=This is a Local repo //指明倉庫的功能 baseurl=file:///mnt/cdrom/ //指明倉庫的url enable=1 //是否啓用倉庫 1 啓用,默認啓用 gpgcheck=0 gpgkey=url:指明密鑰文件檢查軟件包的合法性 username: password: cost=1000:開銷 默認爲1000
十二、寫一個腳本,完成如下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示全部以K開頭的文件的文件名,而且給其附加一個stop字符串;
(3) 顯示全部以S開頭的文件的文件名,而且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash declare -i s=0 declare -i k=0 for i in `ls /etc/rc.d/rc3.d/ | grep "^S"` ;do $istop let s++ done for i in `ls /etc/rc.d/rc3.d/ | grep "^K"` ;do $istart let k++ done echo "K開頭的文件總共有:$k,S開頭的文件總共有:$s"
1三、寫一個腳本,完成如下功能
(1) 腳本能接受用戶名做爲參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash
if [ -z $1 ];then #判斷輸入的參數爲空 echo "請輸入用戶名!" exit 1 fi if [ $# -lt 2 ];then echo "請輸入兩個或兩個以上的用戶名" exit 2 fi for i in $*;do id $i &> /dev/null if [ $? -eq 0 ];then let sum+=$(id -u $i) else echo 「$i,用戶不存在!」 exit 3 fi done echo "$sum"
1四、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每一個目錄的全部一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash if [ -z $1 ];then echo "請輸入目錄!" fi for i in $*;do if [ -d $i ];then let dir+=`ls -l $i | grep "^d" | wc -l` let file+=`ls -l $i | grep -v "^d" | wc -l` fi done echo "目錄有:$dir,文件類型有:$file"
1五、寫一個腳本
經過命令行傳遞一個參數給腳本,參數爲用戶名
若是用戶的id號大於等於500,則顯示此用戶爲普通用戶;
#!/bin/bash echo -n "請輸入一個用戶名" read username if [ -z $username ];then echo "用戶名不能爲空" fi id $username &> /dev/null if [ $? -eq 0 ];then let id=$(id -u $username) if [ $id -ge 500 ];then echo "用戶爲普通用戶" fi else echo "用戶名不存在!" fi
1六、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最後顯示本次共添加了多少用戶;
#!/bin/bash declare -i s=0 for i in {1..10};do id user$i &> /dev/null if [ $? -ne 0 ];then useradd user$i && echo "user$i" | passwd --stdin user$i let s++ fi done echo "總共添加$s個用戶"
1七、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100之內有哪些主機在線,將在線的顯示出來;
#!/bin/bash for i in {20..100};do ping -c 1 -w "172.16.250.$i" &> /dev/null if [ $? -eq 0 ];then echo "172.16.250.$i" fi done
1八、打印九九乘法表;
#!/bin/bash for i in {1..9};do for j in $(seq 1 $i);do let sum=$i*$j echo -n -e "${j}x${i}=$sum\t" done echo done