1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋:工作于數據鏈路層,實現多個lan之間數據的轉發,隔離沖突域,類似二層交換機。 集線器:工作于物理層,實現設備的接入,數據信號放大、中轉,共享信道。把一個端口接收的所有信號向所有端口分發出去 二層交換機:工作于數據鏈路層,可連接多個lan,根據幀的mac來轉發數據,隔離沖突域,端口較多 三層交換機:工作于二、三層,可連接多個網段,實現數據包路由和部分路由器功能,加快大型局域網內部的數據交換,能夠做到一次路由,多次轉發 路由器:工作于網絡層,實現不同網段數據的轉發,通過路由表把數據(IP 報文)傳送到正確的網絡隔離廣播域,多應用于廣域網
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP4 地址分類:IP 地址由32位二進制數字組成,根據前8位二進制數字不同分為5類 class A: 第1位為0 0 0000000-0 1111111 即0-127 即1.0.0.0 -126.255.255.255 網絡數:126 ;0.0.0.0 127.0.0.0 保留 每個網絡的主機數:2^24-2 默認子網掩碼:255.0.0.0 私網地址:10.0.0.0/8 class B: 第2位為0 10 000000-10 111111 即128-191 可用IP地址:即128..1.0.0-191.255.255.255 ; 128.0.0.0和191.255.0.0保留 網絡數:2^14 每個網絡的主機數:2^16-2 默認子網掩碼:255.255.0.0 私網地址:127.16.0.0/16-127.31.0.0/16 class C: 第3位為0 110 00000-110 11111 即192-223 網絡數:2^21 每個網絡的主機數:2^8-2 默認子網掩碼:255.255.255.0 私網地址:192.168.0.0/24-192.168.255.0/24 class D:組播 第4位為0 1110 0000-1110 1111 即224-239 class E: 第5位為0,最后一個是255 11110 000-11111 111 即240-255 子網掩碼: 表示形式:1、 32位二進制數字,每8位二進制數字換算成十進制,以"."分隔,形如:255.255.255.0 2、 IP地址后加上掩碼位數,形如:192.168.0.104/24 作用:劃分子網 將某個IP地址劃分成網絡地址和主機地址兩部分,與IP地址相與可計算出的相應IP的網絡位
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型: (1)、應用層 功能:定義應用程序如何進入該層的溝通接口(應用層本身不屬于應用程序所有),可以將數據接收或發送給應用程序,展示給用戶 (2)、表示層 功能:將本地端應用程序的數據格式轉換成為網絡的標準格式,包括定義了網絡服務之間的數據格式轉換、數據的加解密 (3)、會話層 功能:定義兩個地址間的連接信道的連接與終斷,建立應用程序之間的會話、提供其他加強型服務如網絡管理等 (4)、傳輸層 功能:定義發送端與接收端的連接技術(TCP/UDP),包括:數據包格式、數據包的發送、流程的控制、傳輸過程的偵測檢查與重新傳送;確保數據包可以準確無誤的到達目的端 (5)、網絡層 功能:定義IP,路由(route),定義計算機之間的連接建立、終止與維持等,數據包數據的傳輸路徑選擇等 物理設備:路由器、三層交換機等 (6)、數據鏈路層 功能:分為兩個子層: 偏硬件介質部分:負責MAC(Madia Access Control) 偏軟件部分:負責邏輯連接層(Logical Link Control ,LLC),將來自上層的數據包數據(packet)轉成MAC格式,包括:信息交換、流量控制、失誤問題的處理 物理設備:網卡、網橋、二層交換機 (7)、物理層 功能:定義所使用的傳輸設備的電壓與信號等,了解數據幀轉成比特流的編碼方式,連接實際傳輸介質并發送/接收比特信號 物理設備:集線器、網線、光纖、同軸電纜等 TCP/IP 模型: (1)、應用層 功能:整合OSI模型應用層、表示層、會話層, (2)、運輸層 功能:同OSI模型 (3)、網絡層 功能:同OSI模型 (4)、網絡接口層 功能:整合OSI模型的數據鏈路層、物理層
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
(1)、IP/mask 配置方式:ifconfig [interface] # ifconfig IFACE IP/mask [up] 例如:ifconfig eth0 192.168.0.104/24 up # ifconfig IFACE IP netmask MASK 例如:ifconfig eth0 192.168.0.104 netmask 255.255.255. (2)、路由:默認網關 配置方式:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 例如: 目標:192.168.1.3 網關:172.16.0.1 ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 (3)、DNS服務器 配置方式:/etc/resolv.conf nameserver DNS_SERVER_IP1 nameserver DNS_SERVER_IP2 nameserver DNS_SERVER_IP3 (4)、 上面的配置方式是及時生效,但下次開機要重新配置 下面的配置方式是永久生效,但不是及時生效,要讓網絡服務重讀配置文件 修改配置文件:/etc/sysconfig/network-scripts/ifcfg-ethx:x 各項含義見題7
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
1.命令行方式 a.ifconfig 格式:ifconfig interface [aftype] options | address # ifconfig IFACE IP/mask [up] # ifconfig IFACE IP netmask MASK 例子:ifconfig eth0 192.168.0.107 netmask 255.255.255.0 注意:立即生效 b.ip ip - show / manipulate routing, devices, policy routing and tunnels 格式:ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } OBJECT link : ip link - network device configuration 格式:ip link set deviFACE [up|down] up and down:激活或禁用指定接口 ip link show deviFACE [up] [up]:僅顯示處于激活狀態的接口 address: ip address - protocol address management 格式:ip addr { add | del } IFADDR dev STRING [label LABEL]:添加地址時指明網卡別名 [scope {global|link|host}]:指明作用域 global: 全局可用 link: 僅鏈接可用 host: 本機可用 [broadcast ADDRESS]:指明廣播地址 ip address show - look at protocol addresses [dev DEVICE] [label PATTERN] [primary and secondary] ip address flush - flush protocol addresses 使用格式同show route: ip route - routing table management 格式:ip route add 添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP TARGET: 主機路由:IP 網絡路由:NETWORK/MASK 添加網關:ip route add defalt via GW dev IFACE ip route delete 刪除路由:ip route del TARGET ip route show ip route flush dev IFACE] [via PREFIX] c.route命令 查看:route -n 添加:route add route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 目標:192.168.1.3 網關:172.16.0.1 ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 目標:192.168.0.0 網關:172.16.0.1 ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0 ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 默認路由,網關:172.16.0.1 ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1 ~]# route add default gw 172.16.0.1 刪除:route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 目標:192.168.1.3 網關:172.16.0.1 ~]# route del -host 192.168.1.3 目標:192.168.0.0 網關:172.16.0.1 ~]# route del -net 192.168.0.0 netmask 255.255.255.0 2.修改配置文件方式 # vim /etc/sysconfig/network-scripts/ifcfg-IFACE (修改信息如上題所示)
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash #the purpose of program: #Use ping command to check the network's PC state #History #08/09/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH network="172.16.250." for sitenu in $(seq 1 254);do ping -c 1 -w 1 ${network}${sitenu} &> /dev/null && result=0 || result=1 if [ "$result" == 0 ];then echo -e "\033[32m ${network}${sitenu} is up \033[0m" else echo -e "\033[31m ${network}${sitenu} is down \033[0m" fi done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
/etc/sysconfig/network-scripts/ifcfg-ethx:x 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:普通用戶是否可控制此設備; /etc/sysconfig/network-scripts/route-eth0 ADDRESS0=192.168.193.131 NETMASK0=255.255.255.0 GATEWAY0=192.168.193.0 兩種風格: (1) TARGET via GW (2) 每三行定義一條路由(#為0、1、2、3、4) ADDRESS#=TARGET # IP地址 NETMASK#=mask # 子網掩碼 GATEWAY#=GW # 網關
8、如何給網絡接口配置多個地址,有哪些方式?
給網卡配置多地址: ifconfig: ifconfig IFACE_ALIAS ip ip addr add 配置文件: ifcfg-IFACE_ALIAS DEVICE=IFACE_ALIAS 注意:網關別名不能使用dhcp協議引導;
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
a.ifconfig;b.ip c.route 見題5 d.ss [root@www ~]# ss -tunl Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:68 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 100 ::1:25 :::* tcp LISTEN 0 100 127.0.0.1:25 *:* e.netstat [root@www ~]# netstat -tunl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:*
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
Linux系統軟件包管理方法:安裝、升級、查詢、卸載、校驗、數據庫維護 一、安裝: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v: verbose -h: 以#顯示程序包管理執行進度;每個#表示2%的進度 # rpm -ivh PACKAGE_FILE ... [install-options] --test: 測試安裝,但不真正執行安裝過程;dry run模式; --nodeps:忽略依賴關系; --replacepkgs: 重新安裝; --nosignature: 不檢查來源合法性; --nodigest:不檢查包完整性; --noscipts:不執行程序包腳本片斷; %pre: 安裝前腳本; --nopre %post: 安裝后腳本; --nopost %preun: 卸載前腳本; --nopreun %postun: 卸載后腳本; --nopostun 二、升級: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... upgrage:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”; freeshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作; # rpm -Uvh PACKAGE_FILE ... # rpm -Fvh PACKAGE_FILE ... --oldpackage:降級; --force: 強行升級; 注意: (1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核; (2) 如果原程序包的配置文件安裝后曾被修改,長級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留; 三、查詢: rpm {-q|--query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪個程序包安裝生成 -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作; --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴; [query-options] --changelog:查詢rpm包的changlog -c: 查詢程序的配置文件 -d: 查詢程序的文檔 -i: information(名稱、版本、描述信息、安裝日期、包大小、許可證、MIT...) -l: 查看指定的程序包安裝后生成的所有文件; --scripts:程序包自帶的腳本片斷 -R: 查詢指定的程序包所依賴的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY; 用法: # rpm -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE # rpm -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ... # rpm -qa 四、卸載: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME 擦除 忽略依賴關系 、不執行腳本、 測試 五、校驗: rpm {-V|--verify} [select-options] [verify-options] S file Size differs(大小不同) M Mode differs (includes permissions and file type)(權限不通) 5 digest (formerly MD5 sum) differs(MD5碼不同) D Device major/minor number mismatch(設備文件主次設備號不匹配) L readLink(2) path mismatch(路徑不匹配) U User ownership differs(屬主不匹配) G Group ownership differs(屬組不匹配) T mTime differs(最近一次修改時間不匹配) P caPabilities differ(能力不同) 六、數據庫重建: rpm {--initdb|--rebuilddb} initdb: 初始化 如果事先不存在數據庫,則新建之;否則,不執行任何操作; rebuilddb:重建 無論當前存在與否,直接重新創建數據庫; 七、管理程序包,yum的使用: yum的命令行選項: --nogpgcheck:禁止進行gpg check; -y: 自動回答為“yes”; -q:靜默模式; --disablerepo=repoidglob:臨時禁用此處指定的repo; --enablerepo=repoidglob:臨時啟用此處指定的repo; --noplugins:禁用所有插件; 1、顯示倉庫列表: # yum repolist [all|enabled|disabled] [所有|啟用|禁用] 2、顯示程序包: # yum list [all | glob_exp1] [glob_exp2] [...](glob風格匹配符) # yum list {available|installed|updates} [glob_exp1] [...]{倉庫中有尚未安裝|已安裝|可用升級包} 3、安裝程序包: # yum install package1 [package2] [...] # yum reinstall package1 [package2] [...] (重新安裝) 4、 升級程序包: # yum update [package1] [package2] [...] # yum downgrade package1 [package2] [...] (降級) 5、檢查可用升級: # yum check-update 6、卸載程序包: # yum remove | erase package1 [package2] [...](與之依賴的程序包也會被卸載) 7、查看程序包information: # yum info [...] 8、查看指定的特性(可以是某文件)是由哪個程序包所提供: # yum provides | whatprovides feature1 [feature2] [...] 9、清理本地緩存: # yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 【程序包 | 元數據 |過期緩存 |rpm庫 | 插件 |所有】 10、構建緩存: # yum makecache 11、搜索: # yum search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息; 12、查看指定包所依賴的capabilities: # yum deplist package1 [package2] [...] 13、查看yum事務歷史: # yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] [list:默認;packages-list:包列表;summary摘要信息;stats統計數據] 14、安裝及升級本地程序包: # yum localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) # yum localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 15、包組管理的相關命令: # yum groupinstall group1 [group2] [...] (安裝) # yum groupupdate group1 [group2] [...](升級) # yum grouplist [hidden] [groupwildcard] [...](顯示) # yum groupremove group1 [group2] [...](移除) # yum groupinfo group1 [...](查看包組相關信息) 16、yum的repo配置文件中可用的變量: $releasever: 當前OS的發行版的主版本號; $arch: 平臺; $basearch:基礎平臺; $YUM0-$YUM9 17、創建yum倉庫: # yum create repo [options] <directory>
11、如何使用發行版光盤作為yum repository,請描述該過程。
[root@www ~]# mkdir /media/cdrom [root@www ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom 在/etc/yum.repos.d/創建.repo 結尾的配置文件: [CDROM] name=Centos_cdrom baseurl=file:///mdia/cdrom gpgcheck=1 enabled=1
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash #the purpose of program: # #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH dirname=/etc/rc.d/rc3.d sumk=0 sums=0 cd ${dirname} for i in $(ls K*);do echo "$i stop" let sumk++ done for j in $(ls S*);do echo "$j start" let sums++ done echo "the number of k start file :$sumk " echo "the number of s start file :$sums "
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash # read -p "input your user name " nameuser while [ ${nameuser} != "quit" ];do id ${nameuser} &> /dev/null && result=0 ||result=1 if [ ${result} -eq 1 ];then read -p "Please input your user name again,your user name is not exist: " nameuser continue fi userid=$(id -u ${nameuser}) let sumid+=$userid read -p "input your user name again:" nameuser done echo "the sum of these user's ID is ${sumid}."
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash #the purpose of program: # #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH numdir=0 numtype=0 func1 (){ if [ -b $1 ];then echo "$1 is a block device" let numtype++ continue fi if [ -c $1 ];then echo "$1 is a character device" let numtype++ continue fi if [ -S $1 ];then echo "$1 is a Socket" let numtype++ continue fi if [ -p $1 ];then echo "$1 is a pipe file" let numtype++ continue fi if [ -L $1 ];then echo "$1 is a link file" let numtype++ continue fi if [ -d $1 ];then echo "$1 is a directory" func2 $1 continue fi if [ -f $1 ];then echo "$1 is a file" let numtype++ continue fi } func2 (){ cd $1 for k in $(ls );do func1 $k cd .. done } read -p "input one directory as you like,and input "quit" is exit :" namedir while [ "$namedir" != "quit" ];do if [ ! -d $namedir ];then read -p "input one directory again,because your input is not a directory: " namedir continue fi cd $namedir let numdir++ for i in $(ls );do func1 $i cd $namedir done read -p "input one directory as you like,and input "quit" is exit :" namedir done echo "we has $numdir directory in total" echo "$numtype file type in total"
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash #the purpose of program: #decide Type of user #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH declare -i usersid=$(grep --color=auto "^$1" /etc/passwd |cut -d: -f 3) if [ ${usersid} -gt 500 ];then echo "the user $1 is common user!" fi
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash #the purpose of program: #add users #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH declare -i j=0 for i in $(seq 1 10);do username="user${i}" id ${username} &> /dev/null && result=0 ||result=1 if [ ${result} -eq 1 ];then useradd ${username} echo '${username}'|passwd --stdin ${username} let j++ fi done echo "we add ${j} users in total"
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash #the purpose of program: #Use ping command to check the network's PC state #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH network="172.16.250." for sitenu in $(seq 20 100);do ping -c 1 -w 1 ${network}${sitenu} &> /dev/null && result=0 || result=1 if [ "$result" == 0 ];then echo -e "\033[32m ${network}${sitenu} is up \033[0m" fi done
18、打印九九乘法表;
#!/bin/bash #the purpose of program: # print multiplication table #History #08/10/2016 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH declare -i row=1 declare -i col=1 while [ ${row} -le 9 ];do while [ ${col} -le ${row} ];do total=$((${col}*${row})) echo -e -n "${col}*${row}=${total}\t" let col=col+1 done echo -e -n "\n" let col=1 let row=row+1 done
原創文章,作者:N20-重慶-雪寒,如若轉載,請注明出處:http://www.www58058.com/18705
寫的很好,排版也很棒,加油