1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋:工作在OSI模型的數據鏈路層,將兩個局域網連起來,根據MAC地址來轉發幀,可以看作是一個“低層的路由器”(路由器工作在OSI模型的網絡層,根據網絡地址如IP地址進行轉發)。它可以有效地聯接兩個LAN,使本地通信限制在本網段內,并轉發相應的信號至另一網段,網橋通常用于聯接數量不多的、同一類型的網段。
集線器:主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上,屬于OSI的第一層物理層設備,其工作方式采用“廣播”模式,因此很容易產生“廣播風暴”,大部份集線器已被交換機取代。適用于小型局域網主機互聯。
二層交換機:工作于OSI模型的第二層,屬于數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中,能夠隔離沖突域和有效抑制“廣播風暴”的產生。適用于中、小型局域網設備互聯,或大型局域網接入層或匯聚層的設備接入。
三層交換機:具有部分路由器功能的交換機,其目的是加快大型局域網內部的數據交換,能夠做到一次路由,多次轉發。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在OSI網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。適用于中、大型局域網匯聚層或局域網出口。
路由器:其功能是決定最優路由和轉發數據包。路由表中寫入各種信息,由路由算法計算出到達目的地址的最佳路徑,然后由相對簡單直接的轉發機制發送數據包。接受數據的下一臺路由器依照相同的工作方式繼續轉發,依次類推,直到數據包到達目的路由器。其工作模式與二層交換機相似,但路由器工作在OSI模型的第三層——網絡層,這個區別決定了路由和交換機在傳遞包時使用不同的控制信息,實現功能的方式就不同。適用于局域網間互聯,局域網與城域網互聯互通。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用。
類別 | IP地址范圍 |
子網掩碼 | 作用 |
A類 | 1.0.0.0-127.255.255.255 | 255.0.0.0(/8) | 大型網絡 |
B類 | 128.0.0.0-191.255.255.255 | 255.255.0.0(/16) | 中型網絡 |
C類 | 192.0.0.0-223.255.255.255 | 255.255.255.0(/24) | 小型網絡 |
D類 | 224.0.0.0-239.255.255.255 | 無 | 組播 |
E類 | 240.0.0.0-255.255.255.255 | 無 | 科研 |
3、計算機網絡的分層模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型 | TCP/IP模型 | 功能 | 涉及協議或物理設備 |
應用層(Application Layer) | 應用層 | 訪問網絡服務的接口 | Telnet、FTP、HTTP、SNMP、DNS等 |
表示層(Presentation Layer) | 提供數據格式轉換服務 | URL加密、口令加密、圖片編解碼等 | |
會話層(Session Layer) | 建立端連接并提供訪問驗證和會話管理 | 服務器驗證用戶登錄、斷點續傳等 | |
傳輸層(Transport Layer) | 傳輸層 | 提供應用進程之間的邏輯通信 | TCP、UDP、SPX、進程、端口等 |
網絡層(Network Layer) | 網絡層 | 為數據在結點之間傳輸創建邏輯鏈路,并且組轉發數據 | 路由器、多層交換機、防火墻,IP、IPX、RIP、DSPF等 |
數據鏈路層(Data Link Layer) | 網絡接口層 | 在通信的實體間建立數據鏈路連接 | 網卡、網橋、二層交換機等 |
物理層(Physical Layer) | 為數據端設備提供原始比特流的傳輸的通路 | 中繼器、集線器、網線、HUB,RJ-45標準等 |
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
#編輯網卡配置文件,以下以CentOS 7為例: [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #修改配置為手動指定ip地址,并設置ip地址、子網掩碼、網關、DNS BOOTPROTO="static" IPADDR=192.168.0.86 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1 #重啟網絡服務即可 [root@localhost ~]# systemctl restart network.service
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
(1)使用命令行配置,立即生效
#設置ip地址、子網掩碼、網關 1)ifcfg家族命令: ifconfig eth1 192.168.0.20 netmask 255.255.255.0 或 ifconfig eth1 192.168.0.20/24 route add default gw 192.168.0.1 2)iproute2家族命令: ip addr add 192.168.0.100/24 dev eth1 ip route add default via 192.168.0.1 #配置DNS服務器 編輯配置文件:/etc/resolv.conf nameserver 192.168.0.1
(2)修改網卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #修改配置為手動指定ip地址,并設置ip地址、子網掩碼、網關、DNS BOOTPROTO="static" IPADDR=192.168.0.86 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1 #重啟網絡服務即可 [root@localhost ~]# systemctl restart network.service
(3)使用圖形化工具配置
CentOS 6:system-config-network(setup)
CentOS 7:nmtui
注意:修改完成后需要重啟網絡服務
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash for i in {1..254}; do if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then echo -e "\033[32m 172.16.250.$i \033[0m" else echo -e "\033[31m 172.16.250.$i \033[0m" fi done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值。
ifcfg-IFACE配置文件參數:
DEVICE:此配置文件對應的設備名稱
ONBOOT:在系統引導過程中,是否激活此接口
UUID:此設備的唯一標識
IPV6INIT:是否初始化IPV6
BOOTPROTO:激活此接口時使用什么協議來配置接口屬性,常用的有dhcp、bootp、static、none
TYPE:接口類型,常見的有Ethernet,Bridge
DNS1:第一DNS服務器指向
DNS2:備用DNS服務器指向
DOMAIN:DNS搜索域
IPADDR:IP地址
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼
GATEWAY:默認網關
USERCTL:是否允許普通用戶控制此設備
PEERDNS:如果BOOTPROTO的值為"dhcp",是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認為允許
HWADDR:設備的MAC地址
NM_CONTROLLED:是否使用NetworkManager服務來控制接口
8、如何給網絡接口配置多個地址,有哪些方式?
(1)使用命令行配置,立即生效
~]# ip addr add 192.168.20.190/24 dev eno16777736 或 #為指定網卡添加別名 ~]# ip addr add 192.168.20.191/24 dev eth1 label eth1:0 或 ~]# ifconfig eth0:0 192.168.20.192/24
(2)添加網卡別名配置文件,需要重啟網絡服務
~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736:0 DEVICE="eno16777736:0" BOOTPROTO="static" IPADDR=192.168.0.22 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令:接口及地址查看和管理
ifconfig -a:顯示所有接口,包括inactive(非激活)狀態的接口
ifconfig IFACE IP/MASK [up|down] 設置IP地址
~]# ifconfig eth1 192.168.100.20/24
ifconfig IFACE_LABEL IP/MASK 設置網卡別名地址
~]# ifconfig eth1:1 192.168.101.20/24
route命令:路由查看及管理
route -n:查看路由信息
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] 添加路由條目
~]# route add -net 10.0.0.1/8 gw 192.168.10.1 dev eth1
~]# route add default gw 192.168.10.1
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 刪除路由表
~]# route del -net 10.0.0.0/8 gw 192.168.10.1
~]# route del default
netstat命令:Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
顯示路由表:netstat -rn
-r:routing,顯示內核路由表
-n:數字格式
顯示網絡連接:
語法格式:netstat [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t:TCP協議的相關連接,連接均有其狀態,此處僅顯示ESTABLISHED(已建立的)連接狀態;FSM(Finite State Machine)
-u:UDP協議的相關連接
-w:raw socket(裸套接字)相關的連接
-l:處于監聽(LISTEN)狀態的連接
-a:所有狀態的連接
-n:以數字格式顯示IP和Port
-e:擴展格式
-p:顯示相關的進程及PID(只有root用戶才能顯示,普通用戶顯示為-)
常用組合:
-tan,-uan,-tnl,-unl,-tunlp
ifup/ifdown命令:
語法格式:ifup/ifdown IFACE 啟用/禁用指定接口
注意:此命令通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口并完成配置
ip命令:show / manipulate routing, devices, policy routing and tunnels
語法格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫
ip OBJECT:
ip link:network device configuration
ip link set – change device attributes
dev NAME (default):指明要管理的設備,dev關鍵字可省略
dev up/down:啟用/禁用指定網卡
multicast on/multicast off:啟用或禁用多播功能
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認為1500
netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間
~]# ip link set eth1 netns mynetns
ip link show – display device attributes
ip link help – 顯示簡要使用幫助
ip netns – manage network namespaces
ip netns list:列出所有的netns
ip netns add NAME:創建指定名稱的netns
ip netns del NAME:刪除指定名稱的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
~]# ip netns exec mynetns ip link show
ip-address – protocol address management
ip address add – add new protocol address
ip addr add IPADDR dev IFACE
~]# ip addr add 192.168.10.100/24 dev eth1
[label NAME] 為額外添加的地址指明接口別名
~]# ip addr add 192.168.0.32/24 dev eno16777736 label eno16777736:0
[broadcast ADDRESS] 廣播地址;會根據IP和NETMASK自動計算得到
[scope SCOPE_VALUE]
global:全局可用
link:接口可用
host:僅本機可用
ip address delete – delete protocol address
ip addr del IPADDR dev IFACE
ip address show – look at protocol addresses
ip addr show/list [IFACE] 顯示指定接口的地址
ip address flush – flush protocol addresses 清空ip地址
ip addr flush dev IFACE
ip route – routing table management
ip route change – change route
ip route replace – change or add new one
ip route add – add new route
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
~]# ip route add default via 192.168.0.1 添加默認路由
ip route delete – delete route
ip route del TYPE PREFIX
~]# ip route delete 192.168.1.0/24
ip route show – list routes
ip route show TYPE PREFIX
ip route flush – flush routing tables 清空路由表
ip route flush TYPE PREFIX
ip route get – get a single route
ip route get TYPE PREFIX
~]# ip route get 192.168.0.0/24
ss命令:another utility to investigate sockets
語法格式:ss [options] [ FILTER ]
選項:
-t:tcp協議的相關連接
-u:udp協議的相關連接
-w:raw socket相關的連接
-l:監聽狀態的連接
-a:所有狀態的連接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
TCP的常見狀態:
TCP FSM:
LISTEN:監聽
ESTABLISHED:已建立的連接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
~]# ss state time-wait
EXPRESSION:
dport(目標端口)=
sport(原端口)=
示例:'( dport = :ssh or sport = :ssh )'
~]# ss -tan '( dport = :22 or sport = :22 )'
~]# ss -tan state ESTABLISHED
nmcli命令:command‐line tool for controlling NetworkManager
語法格式:nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
connection – start, stop, and manage network connections
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
如何修改IP地址等屬性:
nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
rpm命令:
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm -ivh PACKAGE_FILE …
GENERAL OPTIONS 通用選項:
-v:verbose,詳細信息
-vv:更詳細的輸出
[install-options]
-h:hash marks輸出進度條;每個#表示2%的進度
–test:測試安裝不會真正安裝,檢查并報告依賴關系及沖突消息等
–nodeps:忽略依賴關系(不建議使用)
–replacepkgs:重新安裝
–nosignature:不檢查包簽名信息
–nodigest:不檢查包完整性信息
升級:
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:強制升級
卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts][–test] PACKAGE_NAME …
–allmatches:卸載所有匹配指定名稱的程序包的各版本
–nodeps:忽略依賴關系
–test:測試卸載,dry run模式
yum命令:
安裝程序包:
install package1 [package2] […]
reinstall package1 [package2] […] 重新安裝
升級程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] 降級程序包
卸載程序包:
remove | erase package1 [package2] […]
11、如何使用發行版光盤作為yum repository,請描述該過程。
(1)掛載光盤至本地某目錄
~]# mount -r /dev/cdrom /media
(2)創建yum倉庫配置文件
~]# vim /etc/yum.repos.d/cdrom.repo
[cdrom]
name=centos7 cdrom
baseurl=file:///media
enabled=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_files=0 declare -i S_files=0 for i in $(ls /etc/rc.d/rc3.d | grep "^K");do echo "$i"stop let K_files++ done for j in $(ls /etc/rc.d/rc3.d | grep "^S");do echo "$j"start let S_files++ done echo "K開頭的文件有$K_files個" echo "S開頭的文件有$S_files個"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash declare -i id_sum=0 for i in $*;do if id $i &> /dev/null;then id_sum=$[$id_sum+$(id -u $i)] else echo "user $i is not existed!" exit 1 fi done echo "這些用戶ID之和為:$id_sum"
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash declare -i dir_counts=0 declare -i file_counts=0 for i in $*;do echo "$i: " for filename in $i/*; do if [ -f $filename ];then echo "$filename common file" elif [ -d $filename ];then echo "$filename directory file" dir_counts+=1 continue elif [ -b $filename ];then echo "$filename block device file" elif [ -c $filename ];then echo "$filename character device file" elif [ -L $filename ];then echo "$filename symbolic link file" elif [ -p $filename ];then echo "$filename pipe file" elif [ -S $filename ];then echo "$filename socket file" else echo "$filename unknow" fi file_counts+=1 done done echo "一共有$dir_counts個目錄" echo "一共有$file_counts個文件"
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名;
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash if id $1 &> /dev/null;then if [ $(id -u $1) -gt 500 ];then echo "$1 is common user!" fi else echo "user $1 is not existed!" fi
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash declare -i addsum=0 for i in $(seq 1 10);do if id user$i &> /dev/null;then echo "user$i is existed!" else adduser user$i echo "user$i" | passwd --stdin $i &> /dev/null addsum+=1 fi done echo "本次共添加了$addsum個用戶"
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來。
#!/bin/bash for i in $(seq 20 100); do if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then echo 172.16.250.$i fi done
18、打印九九乘法表。
#!/bin/bash echo "-------------for-------------" for i in `seq 1 9`;do for j in `seq 1 $i`;do list_01=$[ $i * $j ] echo -n "$i*$j=$list_01 " done echo " " done echo "-------------while-------------" declare -i m=1 while [ $m -ge 1 -a $m -le 9 ];do declare -i n=1 while [ $n -ge 1 -a $n -le $m ];do list_02=$[ $m * $n ] echo -n "$m*$n=$list_02 " let n++ done let m++ echo " " done echo "-------------until-------------" declare -i x=1 until [ $x -lt 1 -o $x -gt 9 ];do declare -i y=1 until [ $y -lt 1 -o $y -gt $x ];do list_03=$[ $x * $y ] echo -n "$x*$y=$list_03 " let y++ done let x++ echo " " done
原創文章,作者:蘿卜,如若轉載,請注明出處:http://www.www58058.com/57505
整體非常棒,尤其是后面腳本部分,另外對于網絡方面,希望能對tcp/ip和osi有對比總結,并借助抓包工具做一分析,這部分在lvs內容中還是需要掌握的。