1. 請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋:工作在OSI模型的數據鏈路層,將兩個局域網連起來,根據MAC地址來轉發幀。它可以有效地連接兩個LAN,使本地通信限制在本網段內,并轉發相應的信號至另一網段,網橋通常用于連接數量不多的、同一類型的網段,它可以擴展網絡的距離或范圍,而且可提高網絡的性能、可靠性和安全性。集線器:主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上,它工作于OSI模型中的“物理層”,因為采用“廣播”模式,所以很容易產生“廣播風暴”,大部份集線器已被交換機取代。
二層交換機: 工作于OSI模型的第2層(數據鏈路層),故而稱為二層交換機。二層交換技術的發展已經比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中,能夠隔離沖突域和有效抑制“廣播風暴”的產生。
三層交換機:具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發。對于數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在OSI網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。
路由器:其功能是決定最優路由和轉發數據包。路由表中寫入各種信息,由路由算法計算出到達目的地址的最佳路徑,然后由相對簡單直接的轉發機制發送數據包。接受數據的下一臺路由器依照相同的工作方式繼續轉發,依次類推,直到數據包到達目的路由器。其工作模式與二層交換機相似,但路由器工作在OSI模型的第三層——網絡層,這個區別決定了路由和交換機在傳遞包時使用不同的控制信息,實現功能的方式就不同。適用于局域網間互聯,局域網與城域網互聯互通。
2. IP地址的分類有哪些?子網掩碼的表示形式及其作用
3.計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
4. 如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
1.編輯/etc/sysconfig/network-scripts/ifcfg-eno16777728,此為centos7系統,名稱可能有所不同,centos6系統為ifcfg-eth0
~]# cat ifcfg-eno16777728
TYPE=Ethernet #指明接口類型,常見的有Ethernet,Bridge,可忽略不寫;
BOOTPROTO=static #激活此接口時使用什么協議來配置接口屬性,這里為靜態
IPV6INIT=yes #是否初始化IPV6
NAME=eno16777728
DEVICE=eno16777728
ONBOOT=yes #在系統的引導過程中,是否激活此接口
IPADDR=192.168.137.70 #IP地址
NETMASK=255.255.255.0 #掩碼
GATEWAY=192.168.137.1 #網關
DNS1=210.21.196.6 #主DNS
DNS2=119.233.255.229 #備DNS
2.重啟網絡
~]# systemctl restart network.service
5.為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
1.臨時修改,只在此shell中和子shell中運行,下次登錄失效
]# ifconfig eno16777728 192.168.137.71/24
2.編輯配置文件
~]# cat ifcfg-eno16777728
DEVICE=eno16777728
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.70
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=210.21.196.6
DNS2=119.233.255.229
6. 寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash
#
IP=172.16.250
for i in {1..254};do
if ping -c 1 -w 1 $IP.$i &>/dev/null;then
echo -e "\033[32m $IP.$i is online. \033[0m"
else
echo -e "\033[31m $IP.$i is off. \033[0m"
fi
done
7. 詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
ifcfg-接口名配置文件
DEVICE
:此配置文件對應的設備的名稱;ONBOOT
:在系統的引導過程中,是否激活此接口;UUID
:此設備的唯一標識;IPV6INIT
:是否初始化IPV6BOOTPROTO
:激活此接口時使用什么協議來配置接口屬性,常用的有dhcp、bootp、static、none;TYPE
:指明接口類型,常見的有Ethernet,Bridge;DNS1
:第一dns服務器指向;DNS2
:備用dns服務器指向;DOMAIN
:DNS搜索域;IPADDR
:配置ip地址;NETMASK
:子網掩碼;centos7支持使用PREFIX以長度方式指明子網掩碼;GATEWAY
:默認網關;USERCTL
:是否允許普通用戶控制此設備;PEERDNS
:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的dns服務器指向;默認為允許:yesNM_CONTROLLED
:是否使用NetworkManager服務來控制接口;HWADDR
:設備的mac地址;
8. 如何給網絡接口配置多個地址,有哪些方式?
1.臨時生效
# ifconfig eno16777728:0 192.168.137.71/24 up
2.修改配置文件生效
~]# cat ifcfg-eno16777728:0
DEVICE=eno16777728:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.71
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=210.21.196.6
DNS2=119.233.255.229
9. 常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令
:接口及地址查看和管理ifconfig [INTERFACE]
ifconfig interface [aftype] options |address
ifconfig IFACE IP/MASK [up]
ifconfig IFACE IP netmask NETMASK
route命令
:路由查看及管理
查看路由:route -n
添加:route -add [-net|-host] target [netmask NM] [gw GW] [[dev]if]
刪除:
route del [-net|-host] target [gw GW] [netmask Nm] [[dev]if]
netstat命令:
顯示路由:netstat -rn
-r
:顯示內核路由表-n
:數字格式顯示網絡連接:
netstat [--tcp|-t] [--udp|-u] [--listening|-l] [--raw|-w] [--all|-a] [--numeric|-n] [--extend|-e] [--program|-p]
-t
:TCP協議的相關連接,連接均有其狀態;FSM(finate state macheine);-u
:udp相關的連接-w
:raw socket相關的連接-l
:處于監聽狀態的連接-a
:所有狀態-n
:以數字格式顯示IP和port-e
:擴展格式-p
:顯示相關的進程及PID常用組合:
-tan -uan -tnl ,unl,tunlp
顯示接口的統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
所有接口:
netstat -i
指定接口:netstat -I<iface>
ifup/ifdown命令:
注意:通過配置文件來識別接口并完成配置;
iproute2家族:
ip命令:
show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT={link|addr|route|netns}
ip OBJECT:
ip link
:network device configurationip link set
– change device attributesdev NAME (default)
:指明要管理的設備,dev關鍵字可省略;up and down
multicast on
或multicast off
啟用或關閉多播功能;ip link show - display device attributes
ip link help
顯示簡要使用幫助
ip netns list
列出所有的netnsip netns add NAME
創建指定的netnsip netns del NAME
刪除指定的netnsip netns exec NAME COMMAND
在指定的netns中運行命令ip address add -add new protocol address
ip addr add IFADDR dev IFACE
[label NAME]
:為額外的地址指明接口別名
ip address delete
刪除指定接口地址;ip address flush
清空地址別名;
ip route { add | del | change | append | replace |monitor } ROUTE
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ss命令:
ss [options] [ FILTER ] [EXPRESSION]
選項:-t
:tcp協議的相關連接-u
:UDP相關的連接;-w
:raw socket相關連接-l
:監聽狀態的連接-a
:所有狀態連接;-n
:數字格式-p
:相關的程序及PID-e
:擴展格式信息;-m
:內存用量-o
:計時器信息
10. Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
rpm安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -ivh package_file
GENERAL OPTIONS:
-v
:詳細信息-vv
:更加詳細信息
[install-options]
:-h
:hash marks
輸出進度條,每個#
表示2%
的進度;--test
:測試安裝,檢查并報告依賴關系及沖突消息等;--nodeps
:忽略依賴關系;不建議;--replacepkgs
:重新安裝注意:rpm可以自帶腳本
四類:--noscripts
preinstall
:安裝過程開始之前運行的腳本,%pre,--nopre
postinstal
l:安裝過程完成之后運行的腳本,%post,--nopost
preuninstall
:卸載過程真正開始執行之前運行的腳本,%postun,--nopreun
postuninstall
:卸載過程完成之后運行的腳本,%postun,--nopostun
--nosignature
:不檢查包簽名信息,不檢查來源合法性;--nodigest
:不檢查包完整性信息;
rpm升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升級或安裝
-F:升級
rpm -Uvh package_file...
rpm -Fvh package_file...
--oldpackage
:降級;--force
:強制升級或降級;注意:
不要對內核做升級操作;Linux支持多內核并存,因此,直接安裝新版內核;
如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名
(filename.rpmnew)
后提供;
rpm卸載
rpm {-e|--erase} [--allmatches] [--nodeps][--noscripts][--test] PACKAGE_NAME ...
--allmatches
:卸載所有匹配指定名稱的程序包的各版本;--nodeps
:忽略依賴關系;
–-test
:測試卸載,dry run 模式
rpm查詢
rpm {-q|--query} [select-options] [query-options]
[select-options]
:PACKAGE_NAME
:查詢指定的程序包是否已經安裝,及其版本;-a,--all
:查詢所有已經安裝過的包;-f,FILE
:查詢指定的文件由哪個程序包安裝生成;-p,--package PACKAGE_FILE
:用于實現對未安裝的程序包執行查詢操作;--whatprovides CAPABILITY
:查詢指定的CAPABILITY
由哪個程序包提供;--whatrequires CAPABILITY
:查詢指定的CAPABILITY
被哪個包所依賴;
[query-options]
:--changelog
:查詢rpm
包的changelog
;-l,--list
:程序包安裝生成的所有列表;-i,--info
:程序包相關的信息,版本號、大小、所屬的包組,等;-c,--configfiles
:查詢指定的程序提供的配置文件;-d,--docfiles
:查詢指定的程序提供的文檔;--provides
:列出指定的程序包提供的所有的CAPABILITY;-E,--requires
:查詢指定的程序包的依賴關系;--scripts
:查看程序包自帶的腳本片段;用法:
-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE,-qpi PACKAGE_FILE,-qpl PACKAGE_FILE,-qpc PACKAGE_FILE...
rpm校驗
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
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包來源合法性驗證和完整性驗證:
來源合法性驗證:
完整性驗證:獲取并導入信任的包制作者密鑰:
對于centos發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-xxx
驗證:
1. 安裝此組織簽名的程序時,會自動執行驗證;
2. 手動驗證:rpm -K package_file
數據庫重建
rpm管理器數據庫路徑:
/var/lib/rpm/
查詢操作:通過此處的數據庫進行;獲取幫助:
centos:man rpm
centos:man rpmdb
rpm {--initdb|--rebuilddb}
--initdb
:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作;--rebuilddb
:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;
yum
命令的用法:
yum [options] [command] [package ...]
顯示倉庫列表
repolist [all|enabled|disabled]
顯示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|insitalled|updates} [glob_exp1] [...]
安裝程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...]
重新安裝升級程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...]
降級檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2] [...]
查看程序包
information
info [...]
查看指定的特性(可以是某文件哪個程序包所提供)是由:
rpm -qf
provides | whatprovides feature1 [feature2] [...]
清理本地緩存:
clean [ packages | metadata | expire-cache | rpmdb| plugins | all ]
構建緩存:
makecache
搜索:
search string1 [string2] [...]
以指定的關鍵字搜索程序包名已summary
(摘要)信息;查看指定包所依賴的
capabilities
:deplist package1 [package2] [...]
安裝及升級本地程序包:
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
centos6以后可忽略localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
yum
命令行選項:--nogpgcheck
:禁止運行gpg check
;-y
:自動回答為“yes
”;-q
:靜默模式;--disablerepo=repoidglob
:臨時禁用此處指定的repo;--enablerepo=repoidglob
:臨時啟用此處指定的repo;--noplugins
:禁用所有的插件;
yum
的repo
配置文件中可用的變量:$releasever
:當前OS的發行版的主版本號;$arch
:平臺類型;$basearch
:基礎平臺;$YUM0-YUM9
例如:http://mirrors.magedu.com/centos/$releaserver/$basearch/os
創建YUM倉庫:
createrepo [options] <directory>
11. 如何使用發行版光盤作為yum repository,請描述該過程。
1.掛載光盤
mount -r /dev/cdrom /mnt/
2.創建本地yum倉庫
~]# cat isodata.repo
[isodata]
name=isodata
baseurl=file:///mnt/
enable=1
gpgcheck=0
12. 寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash
#
declare -i k_file=0
declare -i s_file=0
for i in $(ls /etc/rc.d/rc3.d/ |grep ^K);do
echo "$i stop"
let k_file++
done
for i in $(ls /etc/rc.d/rc3.d/ |grep ^S);do
echo "$i start"
let s_file++
done
echo "There are $k_file at the beginning of K"
echo "There are $s_file at the beginning of S"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數
(2) 計算此些用戶的ID之和
#!/bin/bash
#
declare -i sum=0
if [ $# -lt 1 ];then
echo "Usage:$basename $0 username1 username2 ..."
exit 3
fi
for i in $*;do
if id $i &> /dev/null;then
let sum=$sum+$(id -u $i)
else
echo "user $i is not existed!"
exit 5
fi
done
echo "The sum of the uid for these users is $sum"
14. 寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash
#
declare -i sum=0
for i in $*;do
echo $i
for file in $i/*;do
[ -f $file ] && echo "$file is a common file."
[ -d $file ] && echo "$file is a directory." && let sum++
[ -c $file ] && echo "$file is a Character device file."
[ -L $file ] && echo "$file is a symbolic link file"
done
done
echo "The $* directory have $sum."
15. 寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash
#
if [ $# -ge 2 -o $# -lt 1 ];then
echo "Usage:basename $0 USER"
exit 3
fi
if id $1 &>/dev/null;then
if [[ $(id -u $1) -ge 500 ]];then
echo "$1 is common user"
fi
else
echo "$1 user is not exists"
fi
16. 寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash
#
declare -i sum=0
for i in user{1..10};do
if id $i &>/dev/null;then
echo "$i is exists."
else
useradd $i &>/dev/null
echo "$i" |passwd --stdin $i &>/dev/null
let sum++
fi
done
echo "Add user $sum."
17. 寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash
#
IP=172.16.250
for ((i=20;i<=100;i++));do
if ping -c 1 -w 1 $IP.$i &>/dev/null;then
echo "The $IP.$i is online."
fi
done
18. 打印九九乘法表;
#!/bin/bash
#
for ((i=1;i<=9;i++));do
for ((j=1;j<=$i;j++));do
let sum=$i*$j
echo -en ""$i"X"$j"=$sum "
done
echo ""
done
原創文章,作者:N22-白蟻,如若轉載,請注明出處:http://www.www58058.com/64115
贊,寫的不錯~IP地址分類可以補充一下私有地址段。