1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
集線器(HUB)主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。集線器是一種共享設備,HUB本身不能識別目的地址,當同一局域網內的A主機給B主機傳輸數據時,數據包在以HUB為架構的網絡上是以廣播方式傳輸的,由每一臺終端通過驗證數據包頭的地址信息來確定是否接收。也就是說,在這種工作方式下,同一時刻網絡上只能傳輸一組數據幀的通訊,如果發生碰撞還得重試。
網橋(Bridge)是早期的兩端口數據鏈路層網絡設備,用來連接不同網段的計算機網絡設備同時它又可隔離沖突域,因為它的兩個端口不是共享一條背板總線(分別有一條獨立的交換信道),比當時的集線器(Hub)性能更好(集線器上各端口都是共享同一條背板總線的)。網橋不但能擴展網絡的距離或范圍,而且可提高網絡的性能、可靠性和安全性。網絡1 和網絡2 通過網橋連接后,網橋接收網絡1 發送的數據包,檢查數據包中的地址,如果地址屬于網絡1 ,它就將其放棄,相反,如果是網絡2 的地址,它就繼續發送給網絡2.這樣可利用網橋隔離信息,將同一個網絡號劃分成多個網段(屬于同一個網絡號),隔離出安全網段,防止其他網段內的用戶非法訪問。由于網絡的分段,各網段相對獨立(屬于同一個網絡號),一個網段的故障不會影響到另一個網段的運行。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Switch)所取代。
二層交換機(Switch)可以說同時是集線器和網橋的升級換代產品,因為交換機具有集線器一樣的集中連接功能,同時它又具有網橋的數據交換功能。所以可以這樣說,交換機是帶有交換功能的集線器,或者說交換機是多端口的網橋。外形上,集線器與交換機產品沒什么太大區別。
路由器 (Router)是用于連接多個邏輯上分開的網絡,所謂邏輯網絡是代表一個單獨的網絡或者一個子網。當數據從一個子網傳輸到另一個子網時,可通過路由器來完成。路由器與普通二層交換機的差別在于,路由器是屬于OSI第三層的產品,而普通二層交換機是OSI第二層的產品,路由器可以連接兩個以上不同網段的網絡,而普通二層交換機只能在同一個網段進行通訊。它也不同于三層交換機,他擁有更強大的路由功能,比如選擇最佳路由、負荷分擔、鏈路備份以及與其他網絡進行路由信息的交換等功能。
三層交換機(3layer Switch)是一個帶有第三層路由功能的二層交換機,三層交換機可以處理第三層網絡層協議,用于在局域網內連接不同網段,通過對缺省網關的查詢學習來創建兩個網段之間的直接連接。三層交換機具有二層交換機的速度并一定的“路由”功能,但相對于路由器來說功能較弱,只能用于同一類型的局域網子網之間的互連,不能替代路由器作為局域網與外網通訊的連接設備。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址分成了A類、B類、C類、C類、E類
A類:1.0.0.1~126.255.255.254,注意127.x.x.x不能用。
B類:128.0.0.1~191.255.255.254,注意169.254.x.x不能用,用作用戶獲取不到IP時自動分配的IP地址。
C類:192.0.0.1~223.255.255.254,
D類:224.0.0.1~239.255.255.254
E類:240.0.0.1~255.255.255.254
私有地址:
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地址的哪些位標識的是主機所在的子網以及哪些位標識的是主機。
2)給定IP地址,根據子網掩碼能夠求得IP地址的子網地址是多少,主機地址是多少。
3)給定一個IP地址,我們能夠看出他是A類地址還是B類還是C類還是D類還是E類,因此我們能夠知道默認網絡地址是哪幾位,主機地址是哪幾位,再根據子網掩碼就能看出子網數是多少個,主機數是多少個。
計算過程如下:
1)將ip地址與子網掩碼轉換成二進制;
2)將二進制形式的ip地址與子網掩碼做’與’運算,將答案化為十進制便得到網絡地址;
3)將二進制形式的子網掩碼取’反’;
4)將取’反’后的子網掩碼與ip地址做’與’運算,將答案化為十進制便得到主機地址。
舉個例子:
假設有一個I P 地址:192.168.0.1
子網掩碼為:255.255.255.0
化為二進制為:I P 地址11000000.10101000.00000000.00000001
子網掩碼11111111.11111111.11111111.00000000
將兩者做’與’運算得:11000000.10101000.00000000.00000000
將其化為十進制得:192.168.0.0
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
1)首先確定自身所處的網絡,以及要接入的網絡(這里以本地192.168.0.0/24,要接入互聯網為例);
2)將虛擬機網卡設置為橋接模式;
3)編輯Linux中網卡配置文件ifcfg-ens33(網卡名稱不同環境或有不同)
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static NAME=ens33 UUID=3c674067-39bc-4cba-be46-3affec1b737b DEVICE=ens33 ONBOOT=yes IPADDR=192.168.0.11 #設置為和本地網絡同網段的IP(必配) NETMASK=255.255.255.0 #這里掩碼設置為24位(必配) GATEWAY=192.168.0.1 #路由器即網關地址(互聯網通信必配) DNS1=218.30.118.6 #運營商DNS地址(互聯網通信必配)
4)重啟網卡
[root@centos7 ~]# systemctl restart network.service
5)測試與互聯網通信
[root@centos7 ~]# ping -c 1 www.baidu.com PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data. 64 bytes from 115.239.211.112: icmp_seq=1 ttl=55 time=28.1 ms --- www.a.shifen.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 28.125/28.125/28.125/0.000 ms
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
1)ifconfig命令
命令格式:ifconfig IFNAME IP/Netmask [up]
例:
[root@centos7 ~]# ifconfig ens33:0 3.3.3.33/24 [root@centos7 ~]# ifconfig ens33:0 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 3.3.3.33 netmask 255.255.255.0 broadcast 3.3.3.255 ether 00:0c:29:0a:35:17 txqueuelen 1000 (Ethernet)
2)ip命令
命令格式:ip addr {add|del} IP/Netmask dev STRING
例:
[root@centos7 ~]# ip addr add 3.3.3.34/24 dev ens33 [root@centos7 ~]# ip addr sh dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:0a:35:17 brd ff:ff:ff:ff:ff:ff inet 192.168.0.11/24 brd 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet 3.3.3.34/24 scope global ens33 valid_lft forever preferred_lft forever
3)GUI工具
以圖形方式如KDE、GNOME登錄系統后圖形化的網絡配置工具進行設置;
4)TUI工具
CentOS6:setup命令
CentOS7:nmtui命令
5)編輯配置文件
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static NAME=ens33 UUID=3c674067-39bc-4cba-be46-3affec1b737b DEVICE=ens33 ONBOOT=yes IPADDR=192.168.0.11 #IP地址 NETMASK=255.255.255.0 #子網掩碼 [root@centos7 ~]# systemctl restart network.service #重啟網卡生效
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
參數名 | 含義 | 值 |
DEVICE | 此配置文件所關聯到的設備,其值通常應該與ifcfg-IFNAME中的IFNAME相同。 | [IFNAME] |
BOOTPROTO | 啟動此設備時使用的配置協議。 | static | none | dhcp |
HWADDR | 網卡的MAC地址,此地址應該與網卡設備ROM中固定的地址保持一致。 | [MAC] |
NM_CONTROLLED | NM即NetworkManager的簡寫,指定該網卡是否受NM服務的管理。 | yes | no |
ONBOOT | 此設備是否隨OS啟動而激活。 | yes | no |
TYPE | 設備類型 | Ethernet | Bridge |
UUID | 網卡設備的唯一識別碼 | [UUID] |
IPADDR | 此接口的IP地址 | [IPADDR] |
NETMASK | 子網掩碼 | [NETMASK] |
GATEWAY | 網關 | [GATEWAY] |
DNS1 | 主DNS服務器 | [DNS1] |
DNS2 | 備用DNS服務器 | [DNS2] |
DNS3 | 第三備用DNS服務器 | [DNS3] |
IPV6INIT | 是否初始化IPv6協議地址 | yes | no |
USERCTL | 是否允許普通用戶管理此接口 | yes | no |
PEERDNS | 當BOOTPROTO為dhcp時,是否允許dhcp服務器提供的DNS服務器覆蓋本地手動配置的DNS服務器 | yes | no |
8、如何給網絡接口配置多個地址,有哪些方式?
1)多IP方式(臨時生效)
[root@centos7 network-scripts]# ip addr add 3.3.3.1/24 dev ens33 [root@centos7 network-scripts]# ip addr sh dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:0a:35:17 brd ff:ff:ff:ff:ff:ff inet 192.168.0.11/24 brd 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet 3.3.3.1/24 scope global ens33 valid_lft forever preferred_lft forever
2)子接口方式(臨時生效)
[root@centos7 network-scripts]# ifconfig ens33:0 3.3.3.2/24 [root@centos7 network-scripts]# ifconfig ens33:0 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 3.3.3.2 netmask 255.255.255.0 broadcast 3.3.3.255 ether 00:0c:29:0a:35:17 txqueuelen 1000 (Ethernet)
3)子接口配置文件方式(永久生效)
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:0 TYPE=Ethernet BOOTPROTO=static NAME=ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=3.3.3.2 NETMASK=255.255.255.0 [root@centos7 ~]# systemctl restart network.service [root@centos7 ~]# ifconfig ens33:0 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 3.3.3.2 netmask 255.255.255.0 broadcast 3.3.3.255 ether 00:0c:29:0a:35:17 txqueuelen 1000 (Ethernet)
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
1)ifconfig命令
[root@centos7 ~]# ifconfig ens33:0 3.3.3.11/24 up #添加IP [root@centos7 ~]# ifconfig ens33:0 #查看IP ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 3.3.3.11 netmask 255.255.255.0 broadcast 3.3.3.255 ether 00:0c:29:0a:35:17 txqueuelen 1000 (Ethernet) [root@centos7 ~]# ifconfig ens33:0 down #刪除IP
2)ip命令
[root@centos7 ~]# ip link ens36 down #關閉網卡ens36 [root@centos7 ~]# ip link set name ens34 ens36 #將網卡ens36更名為ens34 [root@centos7 ~]# ip link ens34 up #開啟網卡ens34 [root@centos7 ~]# ip link set ens34 promisc on #開啟網卡ens34的混雜模式 [root@centos7 ~]# ip link set ens34 promisc off #關閉網卡ens34的混雜模式
[root@centos7 ~]# ip addr add 3.3.3.1/24 dev ens33 #為網卡ens33添加IP [root@centos7 ~]# ip addr sh dev ens33 #顯示網卡ens33信息 [root@centos7 ~]# ip addr del 3.3.3.1/24 dev ens33 #刪除網卡ens33的IP
[root@centos7 ~]# ip route add 3.3.3.0/24 via 192.168.0.1 #添加到3.3.3.0/24網段的路由,網關為192.168.0.1 [root@centos7 ~]# ip route add default via 192.168.0.1 #添加默認路由,網關為192.168.0.1 [root@centos7 ~]# ip route del 3.3.3.0/24 dev ens33 #刪除到3.3.3.0/24網段,且網卡為ens33的路由
3)setup/nmtui/nmcli命令(以CentOS7下的nmtui為例)
在命令行輸入nmtui,選擇Edit a connection
選擇要設置的網卡
設置網卡信息
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
1)安裝
用法:rpm {-i|–install} [install-options] PACKAGE_FILE1…
-h:hash,以#來表示安裝進度
-v:–verbose:顯示安裝過程中的詳細信息
–test:不執行真正的安裝過程,而僅報告依賴關系及沖突信息等
–nodeps:忽略依賴關系,副作用是能安裝成功,但未必能運行成功
–replacepkgs:覆蓋安裝
–force:強制安裝
-安裝時常用的組合:-ivh,-ivvh
2)升級
用法:rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
-U:升級或安裝
-F:升級
–test:不執行真正的安裝過程,而僅報告依賴關系及沖突信息等;
–nodeps:忽略依賴關系,副作用是能安裝成功,但未必能運行成功;
–oldpackage:降級到舊版本
組合使用:-Uvh,-Fvh
3)卸載
用法:rpm {-e|–erase} [–allmatches] [–nodeps] [–test] PACKAGE_NAME
–nodeps:忽略依賴關系;
–test:測試卸載;
–allmatches:如果一個程序包同時安裝多個版本,則此選項一次全部卸載之
4)查詢
用法:rpm {-q|–query} [select-options] [query-options]
rpm -q PACKAGE_NAME:查詢某包或某些包是否安裝
rpm -qa:查詢已經安裝的所有包
rpm -qf FILE:查詢某文件是由哪個包安裝生成
rpm -qpi PACKAGE_FILE:查詢尚未安裝的包文件的相關信息
rpm -qi PACKAGE_NAME:查詢某包的簡要說明信息
rpm -ql PACKAGE_NAME:查詢某包安裝生成的文件列表
rpm -qc PACKAGE_NAME:查詢某包安裝完成后生成的所有配置文件
rpm -q –requires PACKAGE_NAME:查詢某包所依賴的capabilities
RPM包是通過RPM包管理數據庫來記錄一些與軟件相關的信息來進行管理的,可以通過下面命令及選項來構建數據庫:
用法:rpm {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY]
–initdb:初始化數據庫,即數據庫完全不存在時,可以新建一個;
–rebuilddb:無論當前數據存在與否,都會直接重建此庫,構建的數據庫存放在/var/lib/rpm當中
11、如何使用發行版光盤作為yum repository,請描述該過程。
1)掛載光盤到指定掛載點,這里為/mnt/cdrom
[root@centos6 ~]# mount /dev/cdrom /mnt/cdrom/
2)在/etc/yum.repos.d下新建yum repo配置文件
[root@centos6 yum.repos.d]# vim local.repo [cdrom] name=CentOS 6.8 X86_64 on dvd1 baseurl=file:///mnt/cdrom gpgcheck=0 enabled=1
3)查看yum資源庫
[root@centos6 yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status cdrom CentOS 6.8 X86_64 on dvd1 6,696 repolist: 6,696
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash declare -i s=0 declare -i k=0 for i in /etc/rc.d/rc3.d/K*;do echo "$i stop" let k++ done for j in /etc/rc.d/rc3.d/S*;do echo "$j start" let s++ done echo "----------------------" echo -e "K:$k\tS:$s"
執行結果: [root@centos6 script]# ./service.sh /etc/rc.d/rc3.d/K10saslauthd stop /etc/rc.d/rc3.d/K15svnserve stop /etc/rc.d/rc3.d/K36mysqld stop /etc/rc.d/rc3.d/K61nfs-rdma stop /etc/rc.d/rc3.d/K87restorecond stop /etc/rc.d/rc3.d/K89netconsole stop /etc/rc.d/rc3.d/K89rdisc stop /etc/rc.d/rc3.d/K92iptables stop /etc/rc.d/rc3.d/K95rdma stop /etc/rc.d/rc3.d/S02lvm2-monitor start /etc/rc.d/rc3.d/S08ip6tables start /etc/rc.d/rc3.d/S10network start /etc/rc.d/rc3.d/S11auditd start /etc/rc.d/rc3.d/S12rsyslog start /etc/rc.d/rc3.d/S15mdmonitor start /etc/rc.d/rc3.d/S22messagebus start /etc/rc.d/rc3.d/S25blk-availability start /etc/rc.d/rc3.d/S25netfs start /etc/rc.d/rc3.d/S26haldaemon start /etc/rc.d/rc3.d/S26udev-post start /etc/rc.d/rc3.d/S50kdump start /etc/rc.d/rc3.d/S55sshd start /etc/rc.d/rc3.d/S80postfix start /etc/rc.d/rc3.d/S90crond start /etc/rc.d/rc3.d/S99libvirt-guests start /etc/rc.d/rc3.d/S99local start ---------------------- K:9 S:17
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;(2) 計算此些用戶的ID之和;
#!/bin/bash if [ $# -eq 0 ];then echo "Usage $0 arg1 arg2 ..." exit 1 fi declare -i s=0 for name in $*;do if id $name &>/dev/null;then uid=$(id -u $name) s=s+uid else echo "$name not exists!" continue fi done echo "SUM: $s"執行結果: [root@centos6 script]# ./sumuid.sh root bin ftp magedu hahaha hahaha not exists! SUM: 51514、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash if [ $# -lt 1 ];then echo "Usage $0 arg1 arg2 ..." exit 1 fi declare -i s1=0 declare -i s2=0 for dir in $*;do [ ! -d $dir ] && continue file $dir/* dircnt=$(file $dir/* |grep -c "directory$") type_cnt=$(file $dir/*|awk '{print $2}'|sort|uniq|wc -l) let s1+=dircnt let s2+=type_cnt done echo "Directory count: $s1" echo "File type count: $s2"執行結果: [root@centos6 script]# ./filetype.sh /var/log/ /root/ /var/log//anaconda.ifcfg.log: ASCII text /var/log//anaconda.log: ASCII English text /var/log//anaconda.program.log: ASCII English text, with very long lines, with overstriking /var/log//anaconda.storage.log: ASCII C++ program text, with very long lines /var/log//anaconda.syslog: ASCII English text, with very long lines /var/log//anaconda.xlog: ASCII English text /var/log//anaconda.yum.log: ASCII text /var/log//audit: directory /var/log//boot.log: ASCII text, with CRLF, CR line terminators, with escape sequences /var/log//btmp: empty /var/log//ConsoleKit: directory /var/log//cron: ASCII text /var/log//dmesg: ASCII English text /var/log//dmesg.old: ASCII English text /var/log//dracut.log: ASCII text /var/log//lastlog: data /var/log//maillog: ASCII English text /var/log//messages: ASCII English text /var/log//mysqld.log: empty /var/log//secure: ASCII text /var/log//spooler: empty /var/log//tallylog: empty /var/log//wtmp: data /var/log//yum.log: ASCII text /root//anaconda-ks.cfg: ASCII English text /root//install.log: ASCII text /root//install.log.syslog: ASCII text /root//script: directory Directory count: 3 File type count: 6
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash if [ $# -lt 1 ];then echo "Usage $0 USERNAME" exit 1 fi user=$1 if id $user &>/dev/null;then uid=$(id -u $user) if [ $uid -ge 500 ];then echo "$user is common user" else echo "$user is sys user" fi else echo "$user not exists!" exit 2 fi執行結果: [root@centos6 script]# ./commuser.sh Usage ./commuser.sh USERNAME [root@centos6 script]# ./commuser.sh magedu magedu is common user [root@centos6 script]# ./commuser.sh ftp ftp is sys user [root@centos6 script]# ./commuser.sh hahaha hahaha not exists!
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash declare -i s=0 for i in {1..10};do if ! id user$i &>/dev/null;then useradd user$i echo "user$i"|passwd --stdin user$i &>/dev/null let s+=1 else echo "user$i already exists!" continue fi done echo "Added $s users."執行結果: [root@centos6 script]# ./adduser.sh user5 already exists! user6 already exists! Added 8 users.
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash for i in {20..100};do if ping -c 1 172.16.250.$i &>/dev/null;then echo "172.16.250.$i is UP" else continue fi done執行結果: [root@centos6 script]# ./ping.sh 172.16.250.31 is UP 172.16.250.41 is UP 172.16.250.53 is UP 172.16.250.94 is UP
18、打印九九乘法表;
#!/bin/bash for ((i=1;i<=9;i++));do for ((j=1;j<=i;j++));do echo -n -e "${j}X${i}=$[$i*$j]\t" done echo done執行結果: [root@centos6 script]# ./99multi.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
原創文章,作者:N26-西安-方老喵,如若轉載,請注明出處:http://www.www58058.com/69434
很的很不錯,圖文并茂,請斷續保持