一、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
node
答:linux
網橋:雙端口的二層設備,能夠隔離衝突域,通常用於劃分LAN,或者連接LAN。數據庫
集線器:物理層設備,多端口,沒法隔離衝突域,用於鏈接主機。vim
二層交換機:數據鏈路層設備,多端口,與網橋相比,交換機可學習MAC地址,根據MAC地址轉發數據,可隔離衝突域,用於在路由設備與主機之間架設,接入層與匯聚層皆可以使用。centos
三層交換機:至關因而帶路由功能的二層交換機,工做在網絡層,有更高的帶寬,可作核心層使用,用於大中型網絡的路由交換。緩存
路由器:網絡層設備,在各局域網,城域網之間傳遞數據,根據IP地址轉發數據,可隔離廣播域,用於核心層。bash
二、IP地址的分類有哪些?子網掩碼的表示形式及其做用服務器
答:IP地址分類有A類、B類、C類、D類、E類;網絡
A類:IP範圍0.0.0.1-127.255.255.255,子網掩碼255.0.0.0。A類地址分配給規模特別大的網絡使用,A類網絡用第一組數字表示網絡自己的地址,後面三組數字做爲鏈接於網絡上的主機的地址。分配給具備大量主機(直接我的用戶)而局域網絡個數較少的大型網絡ide
B類:IP範圍128.0.0.1-191.255.255.255,子網掩碼255.255.0.0。B類地址分配給通常的中型網絡。B類網絡用第1、二組數字表示網絡的地址,後面兩組數字表明網絡上的主機地址。
C類:IP範圍192.0.0.1-223.255.255.255,子網掩碼255.255.255.0。C類地址分配給小型網絡,如通常的局域網,它可鏈接的主機數量是最少的,採用把所屬的用戶分爲若干的網段進行管理。C類網絡用前三組數字表示網絡的地址,最後一組數字做爲網絡上的主機地址。
D類:D類地址不分網絡地址和主機地址,它的第1個字節的前四位固定爲1110。D類地址範圍:224.0.0.1-239.255.255.254 。D類地址用於多點播送。D類地址稱爲廣播地址,供特殊協議向選定的節點發送信息時用。
E類:保留地址。
三、計算機網絡的分紅模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
答:OSI七層模型從低到高分爲物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層;
物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各類傳輸介質的傳輸速率等;
數據鏈路層:定義瞭如何讓格式化數據以進行傳輸,以及如何讓控制對物理介質的訪問。這一層一般還提供錯誤檢測和糾正,以確保數據的可靠傳輸;
網絡層:在位於不一樣地理位置的網絡中的兩個主機系統之間提供鏈接和路徑選擇;
傳輸層:定義了一些傳輸數據的協議和端口號,如www端口爲80,ftp端口爲20、21等;
會話層:經過傳輸層創建數據傳輸的通路;
表示層:可確保一個系統的應用層所發送的信息能夠被另外一個系統的應用層讀取;
應用層:爲用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。
TCP/IP模型分爲四層,從高到低爲應用層、傳輸層、互聯網絡層、網絡接口層;
應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等;
傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,而且肯定數據已被送達並接收;
互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都可以到達目的主機(但不檢查是否被正確接收),如網際協議(IP);
網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。
四、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
答:爲Linux主機配置IP地址便可接入到TCP/IP網絡,配置方式可用修改配置文件、ip命令等方式;
編輯/etc/sysconfig/network-scripts/ifcfg-eth0配置文件
五、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。
答:配置linux主機方式有4種;修改配置文件、ip命令、ifcfg命令、圖形化工具
① 修改配置文件:配置文件所在路徑爲/etc/sysconfig/network-scripts/ifcfg-eth0,直接vim編輯便可
② ip命令(ip命令可爲網卡設置多個ip地址,也可用來配置本機ip地址)
設置多個IP:
注:此方法添加的多個IP在centos6中重啓網絡服務後會失效,若要永久使用,需修改或添加配置文件
設置本機IP:
注:此方法設置的IP在centos6中重啓網絡服務後會失效,若要永久使用,需修改或添加配置文件
③ ifcfg命令
注:此方法設置的IP在centos6中重啓網絡服務後會失效,若要永久使用,需修改或添加配置文件
④ 圖形化工具
使用命令system-config-network-tui來啓用圖形化工具,選擇配置設備
可選擇配置新設備或修改已有設備
本實驗環境未配置dns,實際中須要配置
最後保存退出便可。
六、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的全部主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
答:腳本以下
#!/bin/bash export ping=172.16.250. for i in {1..254};do if ping $ping$i -c 2 -w 2 &> /dev/null; ##檢測是否能Ping通,即測試在線狀態 then echo -e "\033[32m $ping$i \033[0m" ##在線表示爲綠色 else echo -e "\033[31m $ping$i \033[0m" ##不在線表示爲紅色 fi done
結果以下:
七、詳細描述每一個網絡接口的配置文件中各個參數的含義和其所對應的值;
答:
DEVICE:此配置文件應用到的設備;
HWADDR:對應的設備的MAC地址;
BOOTPROTO:激活此設備時使用的地址配置協議,經常使用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的簡寫;此網卡是否接受NM控制;CentOS6建議爲「no」;
ONBOOT:在系統引導時是否激活此設備;
TYPE:接口類型;常見有的Ethernet, Bridge;
UUID:設備的唯一標識;
IPADDR:指明IP地址;
NETMASK:子網掩碼;
GATEWAY: 默認網關;
DNS1:第一個DNS服務器指向;
DNS2:第二個DNS服務器指向;
USERCTL:普通用戶是否可控制此設備;
PEERDNS:若是BOOTPROTO的值爲「dhcp」,是否容許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中;
八、如何給網絡接口配置多個地址,有哪些方式?
答:可以使用ip命令、添加配置文件等方式
① ip命令
ip addr { add | del } IFADDR dev STRING
結果以下
注:此種添加方式在重啓網絡服務後會失效
② 修改配置文件
首先將/etc/sysconfig/network-scripts/下的ifcfg-eth0文件複製一份,重命名爲ifcfg-eth0:0,修改eth0:0
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 ##複製並重命名網卡配置文件 [root@localhost network-scripts]# vi ifcfg-eth0:0 ##從新配置文件 ##修改爲以下格式 DEVICE=eth0:0 ##設備名稱 HWADDR=00:0C:29:55:40:1D TYPE=Ethernet UUID=6548ecf3-be87-412c-9906-b17d00a2addd ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.199.20 ##IP地址 NETMASK=255.255.255.0 ##掩碼 [root@localhost network-scripts]# service network restart ##重啓網絡服務生效 Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.199.230 is already in use for device eth0... Determining if ip address 192.168.199.20 is already in use for device eth0... [ OK ]
九、經常使用的網絡管理類工具備哪些,並用示例形式描述他們的使用方法。
答:
ifconfig命令:
ifconfig 顯示全部網卡的IP地址
ifconfig eth1 顯示指定的網卡IP地址,這裏eth1
ifconfig eth1 down/up 關閉或啓用指定的網卡,這裏eth1
ifconfig eth1:1 ip_address/mask up/down 配置子接口的IP地址,並啓用或關閉
IP命令
經常使用的IP子命令有 {link | addr | route }
ip link
show {up|down} 查看狀態屬因而up或down的接口
set {up|down|arp on|arp off |mtu|mac_address|..}設置接口的二層屬性
ip addr
add {dev|local|broadcast|..} 添加IP地址。例如ip addr add dev eth1:2 local 192.168.1.102/24
delete 刪除接口的IP地址。ip addr delete dev eth1 192.168.1.103/24
show 查看接口的IP地址
ip route
ip route add 添加路由。例如ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0 添加去往192.168.1.0/24的路由,下一跳是172.16.1.1;ip route add default 172.16.1.1 添加默認路由
delete 刪除路由。例如ip route delete 192.168.1.0/24
show 查看路由表
十、Linux系統軟件包管理方法(安裝、升級、卸載等操做)有哪些,以及如何管理的。
答:有rpm工具和yum;
rpm包安裝 rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh paceage_file... [install-options] --test:測試安裝,但不真正執行安裝過程;(測試包的依賴關係等) --nodeps:忽略依賴關係; --replacepkgs:從新安裝; --nosignature:不檢查來源合法性; --nodigest:不檢查包完整性; --noscipts:不執行程序包腳本片斷; %pre:安裝前腳本; --nopre %post:安裝後腳本; --nopost %preun:卸載前腳本; --nopreun %postun:卸載後腳本; --nopostun rpm包升級: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... upgrade:安裝有舊版程序包,則升級;若是不存在舊版本程序包,則安裝; freshen:安裝有舊版程序包,則升級;若是不存在舊版程序包,則不執行升級操做; rpm -Uvh package_file... rpm -Fvh package_file... --oldpackage:降級; --force:強制升級; 注意:一、不要對內核進行升級操做;linux支持多內核版本並存,所以,直接安裝新版本內核; 二、若是原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的配置文件重命名(filename.rpmnew)後保存; rpm包查詢: rpm {-q|--query} [select-options] [query-options] [select-options] -a:全部包; -f:查詢指定的文件由哪一個程序包安裝生成; -g:查詢指定包組的程序包; -p /path/to/package_file:針對還沒有安裝的程序包文件作查詢操做 查看安裝後生成的文件等 --wahtprovidex capability:查詢指定的capability由哪一個包提供; --whatrequires capability:查詢指定的capability被哪一個包所依賴; [query-options] --changelog:查詢rpm包的changelog(bug修復等); -c:查詢程序包的配置文件; --conflicts; -d:查詢程序包的幫助文檔; -i:information,查看安裝的程序詳細信息; -l:查看指定的程序包安裝後生成的全部文件列表; --scripts:查看程序包的全部腳本; -R:查詢指定的程序包所依賴的capability; --provides:列出指定程序包所提供的capability; rpm包卸載: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--repackage] [--test] PACKAGE_NAME ... rpm包校驗: rpm {-V|--verify} [select-options] [verify-options] 包來源合法性驗證及完整性驗證: 完整性驗證:SHA256 來源合法性驗證:RSA 公鑰加密: 對稱加密:加密、解密使用同一密鑰; 非對稱加密:密鑰是成對的 public key:公鑰,公開全部人 secret key:私鑰,不能公開 導入所須要公鑰: rpm --import /path/from/GPG-PUBKEY-FILE centos 7發行光盤提供的密鑰文件:RPM-GPG-KEY-CentOS-7 數據庫重建 rpm {--initdb|--rebuilddb} initdb:初始化 若是事先不存在數據庫,則新建之;不然不執行任何操做; rebuilddb:重建 不管當前是否存在,直接從新建立數據庫; yum管理程序包,在使用前需配置yum倉庫文件 repolist [all|enabled|disabled] 列出全部可用倉庫 顯示程序包: # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...] 安裝程序包: install package1 [package2] [...] 升級程序包: update package1 [package2] [...] downgrade package1 [package2] [...](降級安裝) 檢查可用升級包: check-update 卸載程序包: remove | erase package1 [package2] [...] 有依賴關係的也會一同卸載 查看程序包信息: yum info [...] 查看指定的特性(能夠是某個文件)是有哪一個程序包提供的:至關於rmp -qf provides | whatprovides feature1 [feature2] [...] 清理本地緩存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 生成本地緩存: makecache 搜索: search string1 [string2] [...]以指定關鍵字搜索程序包名及summary信息 從新安裝: reinstall package1 [package2] [...] 顯示指定包所依賴關係包名: deplist package1 [package2] [...]
十一、如何使用發行版光盤做爲yum repository,請描述該過程。
答:先將光盤掛載至本地,而後修改或新建yum倉庫文件
[root@localhost~]# mkdir /mnt/dvd ##新建文件夾做爲掛載點使用 [root@localhost~]# mount /dev/sr0 /mnt/dvd ##將光盤掛載至文件夾 [root@localhost~]# cd /etc/yum.repos.d/ ##進入yum倉庫配置文件夾 [root@localhost~]# cp rhel-source.repo rhel-source.repo.bak ##備份原配置文件 [root@localhost~]# vim dvd.repo ##配置新的yum倉庫文件 [rhel-dvd] name=dvd baseurl=file:///mnt/dvd/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
十二、寫一個腳本,完成如下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示全部以K開頭的文件的文件名,而且給其附加一個stop字符串;
(3) 顯示全部以S開頭的文件的文件名,而且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
答:腳本以下
#!/bin/bash export K=0 export S=0 for i in $(ls /etc/rc.d/rc3.d/ | grep -o "^K.*");do ##定義循環次數爲全部K開頭的文件數 echo "$i stop" ##附加字符串 let K+=1 ##統計數量 done for a in $(ls /etc/rc.d/rc3.d/ | grep -o "^S.*");do ##定義循環次數爲全部S開頭的文件數 echo "$a start" ##附加字符串 let S+=1 ##統計數量 done echo "K開頭的文件有$K 個;S開頭的文件有$S 個。"
結果以下
1三、寫一個腳本,完成如下功能
(1) 腳本能接受用戶名做爲參數;
(2) 計算此些用戶的ID之和;
答:腳本以下
#!/bin/bash export sum=0 for i in $*;do ##循環次數爲給出的用戶名 if $(id $i &> /dev/null);then ##判斷用戶名是否存在 echo "$i=$(id -u $i)" ##獲得UID數 let sum+=$(id -u $i) ##記錄UID數以用來求和 else echo "$i 用戶名不存在" ##若用戶名不存在則退出計算並告知用戶名不存在 exit 1 fi done echo "輸入用戶名的UID和爲$sum"
結果以下
1四、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每一個目錄的全部一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
答:腳本以下
#!/bin/bash export f=0 export d=0 ls -l $* for i in $*;do ##循環次數爲給定的目錄數 for n in $(ls $i);do ##以單個給定的目錄下的文件夾爲循環次數 if [ -f $i/$n ] ;then ##判斷文件類型 let f+=1 ##統計此類型文件數量 else [ -d $i/$n ] ##判斷文件類型 let d+=1 ##統計此類型文件數量 fi done done echo "文件有$f 個,文件夾有$d 個."
結果以下
1五、寫一個腳本
經過命令行傳遞一個參數給腳本,參數爲用戶名
若是用戶的id號大於等於500,則顯示此用戶爲普通用戶;
答:腳本以下
#!/bin/bash for i in $*;do if [ $(id -u $i) -ge 500 &> /dev/null ];then echo "$i 是普通用戶" else echo "$i 是系統用戶" fi done
結果以下
1六、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最後顯示本次共添加了多少用戶;
答:腳本以下
#!/bin/bash export i=0 for n in $*;do if [ $(echo "$n" | wc -c) -le 3 ];then echo "用戶名不得低於2個字符串" exit 1 elif id $n >> /dev/null;then echo "用戶名$n 已存在" else useradd $n echo "$n" | passwd --stdin $n >> /dev/null echo "用戶$n 已添加,密碼同用戶名,請及時修改!" let i+=1 fi done echo "本次添加$i 個用戶"
結果以下
1七、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100之內有哪些主機在線,將在線的顯示出來;
#!/bin/bash export ping=172.16.250. #for i in {1..254};do for i in {20..100};do if ping $ping$i -c 2 -w 2 &> /dev/null; then #echo -e "\033[32m $ping$i \033[0m" echo "$ping$i is on line" #else #echo -e "\033[31m $ping$i \033[0m" fi done
爲方便體現結果,在本機配置如下IP
[root@csd ~]# ip addr add 172.16.250.22/16 dev eth0 [root@csd ~]# ip addr add 172.16.250.23/16 dev eth0 [root@csd ~]# ip addr add 172.16.250.25/16 dev eth0 [root@csd ~]# ip addr add 172.16.250.24/16 dev eth0 [root@csd ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:96:37:a7 brd ff:ff:ff:ff:ff:ff inet 192.168.199.239/24 brd 192.168.199.255 scope global eth0 inet 172.16.250.22/16 scope global eth0 inet 172.16.250.23/16 scope global secondary eth0 inet 172.16.250.25/16 scope global secondary eth0 inet 172.16.250.24/16 scope global secondary eth0 inet6 fe80::20c:29ff:fe96:37a7/64 scope link valid_lft forever preferred_lft forever
結果以下
1八、打印九九乘法表;
答:代碼以下
#!/bin/bash export h=0 for i in {1..9};do for n in {1..9};do if [ $n -lt 9 ];then ##控制輸出,當x*y中y不小於9時,輸出結果並換到下一行 let h=$i*$n echo -en "$i*$n=$h\t" ##控制輸出,echo自己默認最後會輸出一個換行,「-en」禁用最後的換行。「\t」爲輸出TAB else let h=$i*$n echo "$i*$n=$h" fi done done
結果以下