1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋:
一種網絡設備,負責網絡橋接,將網絡的多個網段在數據鏈路層連接起來。
集線器:
是指將多條以太網雙絞線或光纖集合連接在同一段物理介質下的設備。集線器是運作在OSI模型中的物理層。它可以視作多端口的中繼器,若它偵測到碰撞,它會提交阻塞信號。
二層交換機:
可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中
三層交換機:
三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發
路由器:
是連接因特網中各局域網、廣域網的設備,它會根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順序發送信號
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
(1) IP地址的分類:共有5類
地址類型 |
范圍 |
主機數數 |
網絡數 |
網絡號 |
主機號 |
A類 |
0.0.0.0-127.255.255.255 |
2^24-2 |
126 |
7 |
24 |
B類 |
128.0.0.0-191.255.255.255 |
2^16-2 |
2^14 |
14 |
16 |
C類 |
192.0.0.0-223.255.255.255 |
2^8-2 |
2^21 |
21 |
8 |
D類 |
224.0.0.0-239.255.255.255 |
N/A |
N/A |
||
E類 |
240.0.0.0-255.255.255.255 |
N/A |
N/A |
(2) 子網掩碼
用于與IP地址按位進行“與”運算,從而取出網絡地址,來界定通信主機。
點分四組表示:例如,255.255.0.0
CIDR表示:在IP地址后加/BITS,例如192.168.199.71/24 <==> IP: 192.168.199.71 NETMASK: 255.255.255.0
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
(1) 協議表示
(2)功能及涉及到的物理設備
OSI協議 |
TCP/IP協議 |
功能 |
物理設備 |
應用層 |
應用層 |
將數據打包成一個數據包,給予一個應用層報頭,向下傳給傳輸層 |
N/A |
傳輸層 |
傳輸層 |
將數據封裝給予報頭,向下給網絡層 |
N/A |
網絡層 |
網絡層 |
給予IP報頭,向下傳輸給物理層 |
以太網 |
數據鏈路層 |
物理層 |
將數據封裝并給予MAC幀頭,轉成比特流之后利用傳輸介質發送到遠程主機上 |
路由器、交換機 |
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
可以通過命令和修改配置文件兩種方式手動將Linux主機介入到TCP/IP網絡
修改的參數 |
配置文件 |
查看結果的命令 |
IP相關參數 |
/etc/sysconfg/network-scripts/ifcfg-IFACE_NAME |
ifconfig(IP/NETMASK) |
DNS |
/etc/resolver.conf |
dig –t A www.baidu.com |
GATEWAY |
/etc/sysconfig/network |
route -n |
(1) IP/NETMASK的配置
(2) 配置DNS服務
(3) 配置網關信息
(4) 開啟網路服務
[root@localhost ~]# systemctl start network.service
(5) 測試連接網絡連接
[root@localhost ~]# ping -c 2 www.baidu.com PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data. 64 bytes from 220.181.111.188: icmp_seq=1 ttl=55 time=30.2 ms 64 bytes from 220.181.111.188: icmp_seq=2 ttl=55 time=66.8 ms --- www.a.shifen.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 30.213/48.541/66.870/18.329 ms [root@localhost ~]# dig -t A www.baidu.com
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
(1) 編輯配置文件:
配置網絡接口,網關:編輯/etc/sysconfig/network-script/ifconfig-IFACE
配置DNS服務器:編輯/etc/resolv.conf
(2) 通過命令指定:
[root@localhost ~]# ip addr add 192.168.199.30/24 dev eth0
6、寫一個腳本,使用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 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、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
(1) IP/NETMASK/GW/DNS等屬性配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
DEVICE: 設備名稱
ONBOOT={yes|no}:在系統引導過程中,是否激活此接口
TYPE={Ethert|Bridge}:接口類型
DNS1:主DNS服務器指向
DNS2:從DNS服務器指向
IPADDR:ip地址
NETMASK:子網掩碼
GATEWAY:默認網關
BOOTPROTO={none|dhcp|static|bootp}:激活此接口時用什么協議來配置此接口屬性
UUID:設備的唯一標識
DOMAIN:DNS搜索域
USERCTL:是否允許普通用戶控制此設備
HWADDR:設備的MAC地址
PEERDNS={no|yes}:是否允許dhcp server 分配的DNS服務器指向覆蓋本地手動指定的DNS服務器指向;默認為允許
(2) 路由相關配置文件:/etc/sysconfig/network-scripts/route-IFACE
(3) 主機名配置文件:/etc/sysconfig/network
8、如何給網絡接口配置多個地址,有哪些方式?
三種方式:
(1) ifconfig命令
[root@localhost ~]# ifconfig eno16777736:0 192.168.199.86/24
(2) ip命令
[root@localhost ~]# ip address add 192.168.199.88 dev eno16777736:1
(3) 編輯網絡接口配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
(1) ifcfg家族
ifconfig:
[root@localhost ~]# ifconfig eth0
route:
[root@localhost ~]# route -n
netstat:
[root@localhost ~]# netstat -tunlp
(2) route2家族
ip:
[root@localhost ~]# ip addr show eth0
ss:
[root@localhost ~]# ss -tunlp
(3) nm家族
nmtui:圖形界面配置網絡
nmcli:文本界面下配置網絡
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
(1) 什么是程序包管理:
源代碼編譯–>目標二進制格式–>組織成為一個或有限幾個”包“文件 –> 進行安裝、升級、卸載、查詢、校驗等管理功能
(2) Linux各發行版的程序包管理器:
Debian: dpt
Red Hat: rpm – redhat package manager
S.U.S.E: rpm
注意:下面的介紹以Red Hat的rpm作為軟件包管理器
(3) rpm軟件包管理方法:
rpm命令格式:rpm [OPTIONS] [PACKAGE_FILE]
常用選項:
安裝:-i, –install
升級:-U, –update, -F, –freshen
卸載:-e, –erase
查詢:-q, –query
校驗:-V, –verify
(4) 常用管理方法:
安裝
rpm {-i|–installation} [install-options] PACKAGE_FILE…
安裝常用選項組合:rpm -ivh PACKAGE_FILE
[install-options]:
-h: hash marks輸出進度條:每個#表示2%的進度
–test:測試安裝,檢查并報告依賴關系及沖突消息等
–nodeps:忽略依賴關系
–replacepkgs:替代原來的包重新安裝
升級
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:降級
–forece:強制降級
卸載:
rpm {-e|–erase} {–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME…
–allmatches:卸載所有匹配指定名稱的程序包的各版本
–nodeps:忽略依賴關系
–test:測試卸載,并不執行真正的卸載操作
查詢:
rpm [-q|–query} [select-options] [query-options]
查詢常用組合:
rpm -qi PACKAGE: 查詢程序包信息
rpm -qf FILE:查詢指文件由那個程序包安裝成圣
rpm -qc PACKAGE:查詢指定的程序包提供的配置文件
rpm -ql PACKAGE:程序包安裝生成的所有文件列表
rpm -qd PACKAGE:查詢程序包安裝生成的文檔
rpm -qpl PACKAGE_FILE:查詢未安裝程序包文件所提供的所有文件列表
rpm -qpi PACKAGE_FILE:查詢未安裝程序包文件的簡要信息
rpm -qpi PACKAGE_FILE:查詢未安裝程序包文件所所提供的配置文件
校驗:包來源合法性和完整性校驗
11、如何使用發行版光盤作為yum repository,請描述該過程。
(1) 將光盤掛載到/media/cdrom下
[root@localhost ~]# mount -r /dev/cdrom /media/cdrom [root@localhost ~]# ls /media/cdrom CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL
(2) 創建.repo文件
[root@localhost yum.repos.d]# cp CentOS-Media.repo local.repo
(3) 編輯local.repo文件
(4) 啟用本地光盤源
[root@localhost yum.repos.d]# yum-config-manager --enable local.rep [root@localhost yum.repos.d]# yum repolist | grep local local-repo CentOS Local Media 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 for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do echo "$i stop" let k++ done for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do echo "$i start" let s++ done echo "Start with K: $k" echo "Start with S: $s"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash # declare -i idSum=0 userNumber=$# if [ $userNumber -lt 1 ]; then echo "Please intput at least one user existed in current system" exit 1 fi for user in $@; do if id $user >& /dev/null; then userid=$(id -u $user) idSum=$[$userid+$idSum] else echo "$user is not exist, system will add this user" useradd $user newUserid=$(id -u $user) idSum=$[$newUserid+$idSum] fi done echo "the user ID sum is: $idSum"
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash # declare -i dirQuantity=0 declare -i fileQuantity=0 if [ $# -lt 1 ]; then echo "Please send at least one direcoty to shell script" exit 1 fi for directory in $@; do if [ -d $directory ]; then for i in $direcotry/*; do if [ -f $i ]; then ls -l $i let fileQuantity++ elif [ -d $i ]; then ls -l $i let dirQuantity++ else "this file type will be not counted" fi done else echo "$direcotry is not a valid directory" fi done
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
腳本內容
#!/bin/bash # username=$1 if [ $# -eq 1 ]; then if id $username >& /dev/null; then while read userLine; do userID=$(echo $userLine | grep "$username" | cut -f3 -d:) if [ -n "$userID" ]; then if [ $userID -gt 500 ]; then echo "$username is common user" break else echo "$username is special user" break fi fi done < /etc/passwd else echo "Please input exist username" exit 1 fi else echo "please input one username existed in current system" exit 2 fi
執行結果
[root@localhost week08]# bash sh15.sh max max is common user [root@localhost week08]# bash sh15.sh root root is special user
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
腳本內容
#!/bin/bash # declare -i totalAddedUser=0 for i in {1..10}; do username=user$i if id $username >& /dev/null; then continue else useradd $username echo $username | passwd --stdin $username >& /dev/null let totalAddedUser+=1 fi done echo "Total added users: $totalAddedUser"
執行結果
[root@localhost week08]# bash sh16.sh Total added users: 10 [root@localhost week08]# bash sh16.sh Total added users: 0
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash # ipSegment=192.168.199. for i in {100..199}; do ping -c 1 -w 1 $ip$i &> /dev/null if [ $? -eq 0 ]; then echo "$ip$i is online" 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
執行結果
[root@localhost week08]# bash sh18.sh 1X1=1 1X2=2 2X2=4 1X3=3 2X3=6 3X3=9 1X4=4 2X4=8 3X4=12 4X4=16 1X5=5 2X5=10 3X5=15 4X5=20 5X5=25 1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36 1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49 1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64 1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
原創文章,作者:mxb93,如若轉載,請注明出處:http://www.www58058.com/49489
幾個腳本寫的不錯,概念需要注意下,比如OSI七層協議和 TCP/IP協議族~~還需努力~