1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋(network bridge)
網橋工作于物理層與數據鏈路層,在終端設備較多的局域網中可以用網橋設備將局域網分離為不同的沖突域(collision domain),減少網絡沖突,提升網絡傳輸效率
集線器(network hub)
集線器具有多個I/O端口,一個端口的輸入信號會廣播到其他所有端口,其工作在OSI模型的物理層,目前這種設備已經很少使用,而被網絡交換機所取代
二層交換機(network switch)
采用包交換技術接收、處理、轉發數據到目標設備,與集線器不同,交換機只轉發數據到一個或多個需要接收數據在端口,工作于數據鏈路層,已是目前組網常用設備
三層交換機
合并路由功能的交換機,使用IP地址實現包轉發,工作于數據鏈路層和網絡層
路由
用于連接不同網絡并根據路由表和路由策略提供路由轉發功能工作于網絡層
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址主要分為ABC三類網絡
A類網絡,網絡位8位,主機位24位,起始地址0.0.0.0 結束地址 127.255.255.255
B類網絡,網絡位16位,主機位16位,起始地址128.0.0.0 結束地址 191.255.255.255
C類網絡,網絡位24位,主機位8位,起始地址192.0.0.0 結束地址 223.255.255.255
私網地址
A類網絡,包含1個私網地址 起始地址10.0.0.0 結束地址10.255.255.255
B類網絡,包含16個私網地址 起始地址172.16.0.0 結束地址17.31.255.255
C類網絡,包含256個私網地址 起始地址192.168.0.0 結束地址192.168.255.255
子網掩碼
用于與IP地址進行計算得到網絡地址,以確定通信目標主機與源主機是否位于同一網絡
其表示形式有點分十進制和網絡位長形式
示例:C類網絡主機地址192.168.0.10,其子網掩碼可以表示為255.255.255.0或192.168.0.0/24
3、計算機網絡的分層模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
TCP/IP模型分為四層
-
應用層(Application layer)
-
傳輸層(Transport layer)
-
因特網層(Internet layer)
-
鏈路層(Link layer)
OSI模型分為七層
-
應用層(Application layer)
-
表示層(Prsentation layer)
-
會話層(Session layer)
-
傳輸層(Transport layer)
-
網絡層(Network layer)
-
數據鏈路層(Data link layer)
-
物理層(Physical layer)
物理層
定義數據連接的物理與電氣規范,定義設備與物理傳輸介質(銅線、光纖、無線電)之間的關系,包括針腳、電壓、阻抗、線纜規范、信號持續時間等特性,負責傳輸無結構在數據,傳輸模式有半雙工和全雙工,定義網絡拓撲,這個層次不會涉及協議,網卡,中繼器,集線器,調制解調器,光電轉換器是這一層的常見設備
數據鏈路層
負責直連設備節點之間的數據傳輸及傳輸過程中物理層錯誤檢查與流控,以數據幀為傳輸單元,根據MAC地址確定目標設備,這一層常見設備主要是交換機
網絡層
根據路由表和路由協議選擇傳輸路徑,傳輸過程可能需要將數據分片,這一層的設備主要有路由器,三層交換機
傳輸層
在發送端負責切分應用層數據并創建數據包,接收端重組數據包,通過流控,錯誤控制,盡量保證數據可靠性,有些傳輸層協議面向連接,可以提供錯包重傳與傳輸成功確認機制。
會話層
負責建立、管理、結束本機與遠程主機之間的連接
表示層
完成數據的格式化與加密等功能
應用層
負責標識通信伙伴,決定資源可用性,與同步通訊
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
通過設定網卡的IP地址、子網掩碼、網關、DNS服務器可以將Linux主機接入網絡
(1)新加的網卡,沒有配置文件,從dhcp獲取IP
dhclient eth1
(2)新加網卡,沒有配置文件,命令設置IP、子網掩碼、網關
# 設置ip
ifconfig eth1 192.168.35.130 netmask 255.255.255.0
# 設置網關
route add default gw 192.168.35.2
(3)新加網卡,沒有配置文件,命令設置IP、子網掩碼、網關
# 設置ip
ip address add 192.168.35.130/24 dev eth1
# 設置網關
ip route add default via 192.168.35.2
(4)配置文件 (靜態地址)
# DEVICE=eth1
IPADDR=192.168.35.130
NETMASK=255.255.255.0
GATEWAY=293.168.35.2
ONBOOT=yes
(5)配置文件(動態獲取IP)
DEVICE=eth1
BOOTPROTO=dhcp
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
1、編輯配置文件并重啟網絡服務(重啟系統有效)
2、命令設置(重啟后無效,需要重新配置)
配置文件路徑
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
NAME=eth1 友好名稱
BOOTPROTO=none|bootp|dhcp (none指定靜態ip,bootp、dhcp指定動態獲取ip)
ONBOOT=yes|no 系統引導時是否啟用網卡
IPADDR=192.168.35.140 ip地址
GATEWAY=192.168.35.2 網關
PREFIX=24 網絡位長度
有三組命令可以配置網絡
(1) ifconfig 設置 IP
route 設置路由
(2) ip address 設置 IP
ip route 設置路由
(3) nmcli 命令
同時設置ip和路由
~]# nmcli c modify eth1 ipv4.address 192.168.35.140/24 ipv4.gateway 192.168.35.2
設置動態獲取ip
~]# nmcli c modify eth1 ipv4.method auto
設置靜態ip
~]# nmcli c modify eth1 ipv4.method manual
(4) 通過界面設置
nmtui
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash
ip="192.168.0."
for i in {100..105};do
ping -c 1 -n -W 1 "$ip$i">/dev/null
if [ $? -eq 0 ]; then
echo -e "\033[32m $ip$i is online \033[0m"
else
echo -e "\033[31m $ip$i is offline \033[0m"
fi
done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
NAME=網卡友好名稱
IPADDR=IPV4地址
GATEWAY=網關
BOOTPROTO=none|dhcp|bootp
PREFIX=網絡位長度
NETMASK=子網掩碼
DEVICE=物理設備名
ONBOOT=yes|no 系統引導時是否啟用網卡
MTU=最大傳輸單元
PEERDNS=yes|no 是否允許修改DNS文件 /etc/resolv.conf
DNS1=DNS1的ip地址
DNS2=DNS2的ip地址
HWADDR=MAC地址
MACADDR=指定MAC地址
IPV4_FAILURE_FATAL=yes|no 當設置yes時,如果dhclient失敗,ifup立即結束
8、如何給網絡接口配置多個地址,有哪些方式?
~]# nmcli c modify eth1 +ipv4.address 192.168.35.132/24 網卡從啟后生效
~]# nmcli c up eth1
~]# nmcli d show eno33554984
~]# nmcli c modify eth1 -ipv4.address 3 刪除ip地址 索引從0開始
(2) 使用ifconfig命令
設置或修改ip
~]# ifconfig eth1 192.168.35.138/24
添加多個ip
~]# ifconfig eno33554984:2 192.168.35.143 netmask 255.255.255.0
刪除ip
~]# ifconfig eno33554984:2 down
(3) 使用ip命令
添加ip時指定label 以便ifconfig 命令可以識別
~]# ip addr add 192.168.35.142 broadcast 192.168.35.255 label eno33554984:0 dev eno33554984
刪除ip
~]# ip addr del 192.168.35.150/32 dev eth1
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
- ifconfig route netstat
- ip ss
- nmcli
- nutui
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
使用rpm命令和yum命令
yum
查看yum源
yum repolist
安裝程序包
yum -y install httpd
刪除程序包
yum remove httpd-tools
查看程序包
yum info httpd
檢查是否有升級程序包
yum check-update httpd-tools
升級程序包
yum update httpd-tools
列舉程序包組
yum grouplist
yum group list hidden
查看包組信息
groupinfo "Basic Web Server"
安裝包組
yum groupinstall "web-server"
刪除包組
yum group remove web-server
rpm
查看程序包版本
rpm -q httpd
卸載程序包
rpm -e keepalived
安裝程序包
rpm -ivh keepalived-1.2.13-8.el7.x86_64.rpm
查看程序包安裝過程生成的文件
rpm -ql keepalived
查看指定文件屬于哪個程序包
rpm -qf /usr/sbin/keepalived
查看未安裝包的配置文件
rpm -qpc keepalived-1.2.13-8.el7.x86_64.rpm
查看程序包配置文件
rpm -qc keepalived
查看程序包幫助文檔
rpm -qd bash
11、如何使用發行版光盤作為yum repository,請描述該過程。
# 掛載光盤
[root@localhost ~]# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
# 創建配置文件
vim /etc/yum.repos.d/cdrom.repo
…
[BaseCdRom]
name=Base from cd-rom
baseurl=file:///media/cdrom
gpgcheck=1
# 列出啟用的yum倉庫
[root@localhost ~]# yum repolist
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash
_listk() {
local files=($1/[kK]*)
local i
local -i j=0;
for i in ${files[@]};do
let j++
echo ${i}_STOP
done
return $j
}
_lists() {
local files=($1/[sS]*)
local i
local -i j=0
for i in ${files[@]};do
echo ${i}_START
let j++
done
return $j;
}
declare -i kn=0
declare -i sn=0;
for i in $@;do
echo $i;
_listk $i ;
kn+=$?;
_lists $i $sn;
sn+=$?
done
echo The number of files begin with 'k' is $kn
echo The number of files begin with 's' is $sn
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Please give one or more username as argument(s)" && exit 2
fi
param=$@
declare -a a_uid
str="(^${param// /\>)|(^}\>)"
a_uid=($(cat /etc/passwd | grep -E "$str" | cut -d: -f3))
declare -i sum=0;
for i in ${a_uid[@]};do
echo $i
sum+=$i
done
echo "The sum is $sum"
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash
function _ls_ftype {
files=($(ls $1))for f in ${files[@]};do
_ftype $1/$f
done
return ${#files[@]}
}
_ftype(){
if [ -b $1 ]; then
echo "$1 is block file"
elif [ -c $1 ]; then
echo "$1 is character file"
elif [ -f $1 ]; then
echo "$1 is regular file"
elif [ -p $1 ]; then
echo "$! is named pipe"
elif [ -d $1 ]; then
echo "$1 is a directory"
elif [ -S $1 ]; then
echo "$1 is socket"
elif [ -h $1 ]; then
echo "$1 is symbolic link"
else
echo "$1 unknow"
fi
}
declare -i num=0;
for i in $@;do
_ls_ftype $i
num+=$?
done
echo "Total $# directory, $num filetype displayed"
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash
declare -i uid_min=$(cat /etc/login.defs | grep -i "^uid_min" | grep -o "[0-9]\+$")
if [ $# -lt 1 ]; then
echo "Usage: $(basename $0) username" && exit 2
fi
declare -i user_id=$(cat /etc/passwd | grep "^$1\>" | cut -d: -f3)
if [ $user_id -eq 0 ];then
echo "User $1($user_id) is omnipotent administrative user"
elif [ $user_id -ge $uid_min ]; then
echo "User $1($user_id) is ordinary user"
else
echo "User $1($user_id) is system user"
fi
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash
declare -i k=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 > /dev/null && let k++
fi
done
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash
ip="192.168.0."
for i in {100..105};do
ping -c 1 -n -W 1 "$ip$i">/dev/null
if [ $? -eq 0 ]; then
echo -e "$ip$i is online"
fi
done
18、打印九九乘法表;
#!/bin/bash
for i in {1..9}; do
for (( j=1;j<=i;j++));do
echo -e -n "$i*$j=$(($i*$j)) "
done
echo
done
原創文章,作者:和風細雨,如若轉載,請注明出處:http://www.www58058.com/68113
寫的很是不錯呢