1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別;
網橋:是連接兩個局域網的基于MAC地址數據存儲轉發設備,工作于數據鏈路層
集線器:所有端口處于同一個廣播域和沖突域中,帶寬共享,工作于物理層
二層交換機:多端口網橋,一個端口一個沖突域,默認所有端口位于同一個廣播域中,可以劃分vlan,隔離廣播域,帶寬獨享
三層交換機:具有路由功能的二層交換機
路由器:連接不同網段的設備,負責不同網段之間數據通信
二層交換機一般用于接終端設備,三層交換機用于匯聚層,核心層,路由器用于不同網段之間數據通信
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用;
A類IP地址 地址范圍1.0.0.0到127.255.255.255,默認掩碼255.0.0.0
B類IP地址地址范圍128.0.0.0-191.255.255.255,默認掩碼255.255.0.0
C類IP地址范圍192.0.0.0-223.255.255.255,默認掩碼255.255.255.0
D類是組播地址,范圍從224.0.0.0到239.255.255.255,
E類作為多播和保留使用
以下列出留用的內部私有地址
A類 10.0.0.0–10.255.255.255
B類 172.16.0.0–172.31.255.255
C類 192.168.0.0–192.168.255.255
子網掩碼的表示形式:
1)通過與IP地址格式相同的點分十進制表示,如255.255.255.0
2)在IP地址后加上“/”符號以及1-32的數字,其中1-32的數字表示子網掩碼中網絡標識位的長度,如192.168.1.0/24
子網掩碼的作用:
1)用于屏蔽IP地址的一部分以區別網絡標識和主機標識
2)用于將一個大的IP網絡劃分為若干小的子網絡
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些;
OSI七層模型:
1)物理層:主要功能是完成相鄰結點之間原始比特流的傳輸,控制數據怎么被放置到通信介質上。
2)數據鏈路層:主要功能是如何在不可靠的物理線路上進行數據的可靠傳輸。完成的是網絡中相鄰結點之間可靠的數據通信。
3)網絡層:主要功能是完成網絡中主機間的報文傳輸。
4)傳輸層:是整個網絡的關鍵部分,實現兩個用戶進程間端到端的可靠通信,處理數據包錯誤、數據包次序,以及其他一些關鍵傳輸問題,
5)會話層:允許不同機器上的用戶之間建立會話關系。
6)表示層:處理用戶信息的表示問題,如編碼、數據格式轉換和加密等。
7)應用層:是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互聯系,實實現各種服務
TCP/IP4層模型
1)網絡訪問層:功能包括IP地址與物理硬件地址的映射,以及將IP分組封裝成幀。基于不同硬件類型的網絡接口,定義了和物理介質的連接。相當于OSI參考模型的物理層和數據鏈路層。
2)網際層:處理來自傳輸層的分組發送請求;處理輸入數據報;處理ICMP報文,即處理網絡的路由選擇、流量控制和擁塞控制等問題。在功能上類似于ISO/OSI參考模型中的網絡層。
3)傳輸層:主要功能是可靠而又準確地傳輸并控制源主機與目的主機之間的信息流,提供端到端的控制,通過滑動窗口機制提供流控制,通過序列號和確認機制來保證可靠性。
4)應用層:包括所有的高層協議,與OSI的應用層協議相差不大,包括HTTP、Telnet、FTP、SMTP、POP3、DNS等。
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟;(手動指定的方式)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #網卡號,和ifcfg-eth0對應就可以>
TYPE=Ethernet #網絡類型
UUID=b04b477a-06f1-494b-85f8-83e070dc9010
ONBOOT=yes #啟動時啟用連接
NM_CONTROLLED=yes #network manager參數
BOOTPROTO=none #獲得IP地址方式,手動選擇none,自動選擇dhcp
IPADDR=192.168.1.61 #設定IP地址
PREFIX=24 #掩碼位數
#NETMASK=255.255.255.0 #也可以以這種發生些掩碼
GATEWAY=192.168.1.254 #網關
DNS1=192.168.1.1 #DNS
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
修改完成后重啟網絡
/etc/init.d/network restart
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程;
[root@localhost ~]# ifconfig eth0 192.168.16.108/24 up
[root@localhost ~]# ip addr add 192.168.16.108/24 dev eth0
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash
#
trap 'exit 1' INT
declare -i i=1
for i in $(seq 254 ); do
if ping 172.16.250.$i -c 1 -W 1 &>/dev/null; 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
let i++
done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
DEVICE=eth0 #網卡號,和ifcfg-eth0對應就可以>
TYPE=Ethernet #網絡類型
UUID=b04b477a-06f1-494b-85f8-83e070dc9010
ONBOOT=yes #啟動時啟用連接
NM_CONTROLLED=yes #network manager參數
BOOTPROTO=none #獲得IP地址方式,手動選擇none,自動選擇dhcp
IPADDR=192.168.1.61 #設定IP地址
PREFIX=24 #掩碼位數
#NETMASK=255.255.255.0 #也可以以這種發生些掩碼
GATEWAY=192.168.1.254 #網關
DNS1=192.168.1.1 #DNS
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
8、如何給網絡接口配置多個地址,有哪些方式?
[root@localhost ~]# ifconfig eth0:0 192.168.16.100/24
[root@localhost ~]# ip addr add 192.168.16.18/24 dev eth0:1
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法;
1)ifconfig
ifconfig -a: 查看所有網絡接口信息
ifconfig interface 查看指定網絡接口信息
ifconfig interface up|download 啟用或停用指定網絡接口
ifconfig interface ip/mask [up] 設定指定網絡接口IP地址和掩碼
2)route
route -n查看所有路由信息
route add添加路由
route add [-net|-host] target [netmask Nm] [gw Gw][[dev] If]
route add -net 192.168.0.0/24 gw 192.168.0.254 dev eth0
route add -host192.168.1.5 gw 192.168.1.254 dev eth1
route del刪除路由
route del [-net|-host] target [netmask ] [gw Gw][dev]
route del -net 192.168.0.0 255.255.255.0
route del -host192.168.1.5
3)netstat
-t tcp協議相關的連接
-u udp協議相碰的連接
-w raw socker相關的連接
-l 處于監聽狀態的連接
-a 所有的連接
-n 以數字顯示ip和端口
-e 擴展格式
-p 顯示相關進程及PID
常用組合
-tan
-uan
-tln
-uln
4)ip
ip link
ip link set DEVICE IFACE up/down 激活或禁用指定接口
ip link show up/dev 顯示所有激活狀態/指定接口信息
ipaddr
ip addr { add | del } IFADDR dev STRING 增加或刪除IP地址
ip addr show 顯示網絡接口信息
ip route
ip route { add | del | show} 添加、刪除或顯示路由
5)ss
-t tcp協議相關的連接
-u udp協議相碰的連接
-w raw socker相關的連接
-l 處于監聽狀態的連接
-a 所有的連接
-n 以數字顯示ip和端口
-e 擴展格式
-p 顯示相關進程及PID
-x unix sock相關
-m 內存用量
-o 計時器信息
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的;
1)用rpm命令管理程序包
安裝 rpm -ivh PACKAGE_FILE 安裝包
升級 rpm -Uvh PACKAGE_FILE 升級包,無則安裝此包
rpm -Fvh PACKAGE_FILE 升級包,無則無變化
查詢 rpm -qa | grep FileName 查詢已安裝的某個軟件
rpm -qf FILE 查詢文件出處
rpm -qc PACKAGE_FILE 查詢包的配置文件
rpm -ql PACKAGE_FILE 查詢包的所有文件
rpm -qd PACKAGE_FILE 查詢包的信息
rpm -qpi PACKAGE_FILE 安裝之前查詢包信息
rpm -qpl PACKAGE_FILE 安裝之前查詢包的所有文件
卸載 rpm -e PACKAGE_FILE 卸載包
驗證 rpm -V PACKAGE_FIL E驗證包
rpm –import PUBKEY 導入公鑰
維護 rpm initdb新建數據庫
rpm rebuilddb重建數據庫
2)用yum倉庫來管理程序包
查看
yum info PACKAGE_FILE 查看包信息
yum historylist 查看yum事務歷史
yum deplistpackage1 查看包依賴
顯示
yum repolist all 顯示yum倉庫列表
yum list installed 顯示已安裝列表
yum list available 顯示可用包
yum list updates 顯示可升級的包
yum list anaconda 顯示系統安裝的包
安裝
yum install PACKAGE_FILE 安裝包
yum localinstall rpmfile1 安裝本地包
升級
yum update PACKAGE_FILE 升級包
yum downgrade PACKAGE_FILE 降級包
yum check-update 檢查更新
卸載
yum remove PACKAGE_FILE 卸載包
yum providesfeature1 查看指定的特性
yum clean 清理本地緩存
yum search string1 搜索字符串
yum info PACKAGE_FILE 查看包信息
包組管理
yum groupinstall group1 [group2] […] 安裝包組
yum groupupdate group1 [group2] […] 升級包組
yum grouplist [hidden] [groupwildcard][…] 顯示包組
yum groupremove group1 [group2] […] 卸載包組
yum groupinfo group1 […] 查看包組信息
11、如何使用發行版光盤作為yum repository,請描述該過程;
(1)掛載光盤至某目錄
mount -r /dev/sr0 /mnt/
(2)創建配置文件
vim /etc/yum.repos.d/CentOS-DVD.repo
[CentOS6.6]
name=CentOS cdrom #倉庫的名字
baseurl=file:///mnt #repodata目錄的倉庫訪問路徑
gpgchecked=0 #使用前是否檢驗包
enabled=1 #是否啟用此倉庫
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
for i in $(ls /etc/rc.d/rc3.d|grep "^K"); do
echo "$i—-Stop"
let k++
done
for i in $(ls /etc/rc.d/rc3.d|grep "^S"); do
echo "$i—-Start"
let s++
done
echo -e "K file:$k\nS file:$s"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
此腳步需要與用戶交互:
#!
#
declare -i sum=0
read -p "請輸入用戶,輸入完畢請按q鍵:" user
until [ $user == q ]; do
if id $user &>/dev/null; then
let sum+=$(id -u $user)
echo "現在用戶的UID之和是: $sum"
else
echo "你輸入的用戶不存在,請重新輸入!退出請按q鍵。"
fi
read -p "請輸入用戶,輸入完畢請按q鍵:" user
done
echo "所有的用戶UID和是: $sum"
不需要交互的方式:
#!/bin/bash
declare -i sum
if [ $# -lt 1 ];then
echo "At least one username"
exit 1
else
for name in $*
do
if id $name &> /dev/null;then
let sum+=$(grep "^\<$name\>" /etc/passwd | cut -d: -f3)
fi
done
echo "id sum is $sum"
fi
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash
#
declare -i d=0
declare -i s=0
declare -a file
file=( $* )
echo ${file[*]}
for ((i=0;i<$#;i++)); do
echo
echo "${file[$i]}"
for a in ${file[$i]}/*; do
if [ -b $a ]; then
echo "$a type is block."
echo "b" >> ./type.txt
elif [ -c $a ]; then
echo "$a type is char."
echo "c" >> ./type.txt
elif [ -d $a ]; then
echo "$a type is directory."
echo "d" >> ./type.txt
let d++
elif [ -S $a ]; then
echo "$a type is socket."
echo "S" >> ./type.txt
elif [ -L $a ]; then
echo "$a type is ln."
echo "L" >> ./type.txt
elif [ -p $a ]; then
echo "$a type is p."
echo "p" >> ./type.txt
elif [ -f $a ]; then
echo "$a type is file."
echo "f" >> ./type.txt
fi
done
done
echo "have $d directory."
echo "All Type :$(grep -o "[bcdSLpf]" ./type.txt | sort -u | wc -l)"
\mv ./type.txt /tmp
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名;
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash
if id $1 &> /dev/null;then
if [ `id -u $1` -ge 500 ];then
echo "user is a domestic consumer"
else
echo "user is a system or root consumer"
fi
else
echo "user is not exsits"
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash
if [ $# -lt 1 ];then
echo "At least one username"
exit 1
fi
if id $1 &> /dev/null;then
uid=$(grep "^\<$1\>" /etc/passwd | cut -d: -f3)
if [ $uid -ge 500 ];then
echo "$1 is regular user"
else
echo "$1 is system user"
fi
else
echo "$1 is not exists"
fi
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash
#
trap 'exit 1' INT # 用于捕捉中斷信號
declare -i i=1
for i in $(seq 20 100 ); do
if ping 10.88.159.$i -c 1 -W 1 &>/dev/null; then
echo -e "\033[0;32;1m 10.88.159.$i is up! \033[0m"
fi
let i++
done
~
18、打印九九乘法表。
#!/bin/bash
#
for ((i=1;i<=9;i++)); do
for ((j=1;j<=i;j++)); do
echo -e -n "$j*$i=$((i*j))\t"
done
echo
done
原創文章,作者:dawning,如若轉載,請注明出處:http://www.www58058.com/60240