1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋(Bridge):是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條背板總線的。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Switch)所取代。 集線器:集線器的英文稱為“Hub”。集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。它工作于OSI(開放系統互聯參考模型)參考模型第一層,即“物理層”。集線器與網卡、網線等傳輸介質一樣,屬于局域網中的基礎設備,采用CSMA/CD(即帶沖突檢測的載波監聽多路訪問技術)介質訪問控制機制。集線器每個接口簡單的收發比特,收到1就轉發1,收到0就轉發0,不進行碰撞檢測。 二層交換機:工作于OSI模型的第2層(數據鏈路層),故而稱為二層交換機。二層交換技術的發展已經比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。 三層交換機:三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發。對于數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在OSI網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。 路由器:OIS模型的第三層,又稱網關設備gateway,用于連接多個邏輯上分開的網絡。當數據從一個子網傳輸到另一個子網時,可通過路由器的路由功能來完成。因此,路由器具有判斷網絡地址和選擇IP路徑的功能,它能在多網絡互聯環境中,建立靈活的連接,可用完全不同的數據分組和介質訪問方法連接各種子網,路由器只接受源站或其他路由器的信息,屬網絡層的一種互聯設備。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址分類: A類: 第一段為網絡號,后三段為主機號 網絡號: 0 000 0000 - 0 111 1111:1-127 網絡數量:126,127 每個網絡中的主機數量:2^24-2 默認子網掩碼:255.0.0.0,/8 用于與IP地址按位進行“與”運算,從而取出其網絡地址; 1.3.2.1/255.0.0.0 = 1.0.0.0 1.3.2.1/255.255.0.0= 1.3.0.0 私網地址:10.0.0.0/255.0.0.0 B類: 前兩段為網絡號,后兩段為主機號 網絡號: 10 00 0000 - 10 11 1111:128-191 網絡數:2^14 每個網絡中的主機數量:2^16-2 默認子網掩碼:255.255.0.0,/16 私網地址:172.16.0.0-172.31.0.0 C類: 前三段為網絡號,最后一段為主機號 網絡號: 110 0 0000 - 110 1 1111:192-223 網絡數:2^21 每個網絡中的主機數量:2^8-2 默認子網掩碼:255.255.255.0, /24 D類:組播 1110 0000 - 1110 1111:224-239 E類:科研 240-255 子網掩碼:又叫網絡掩碼、地址掩碼、子網絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型: Application 應用層:提供應用程序之間通信; Presentation 表示層:處理數據格式、數據加密; Session 會話層:建立,維護,管理會話連接涉及操作系統和網絡接口和各種數據; Transport 傳輸層:建立主機端到端連接。涉及物理設備:四層交換機 Network 網絡層:尋址和路由選擇。涉及物理設備:路由器 Data Link 數據鏈路層:提供介質訪問,鏈路管理,將數據分幀并處理流控制。涉及物理設備:網卡,網橋,交換機 Physical 物理層:比特流傳輸,將數據轉換為可通過物理介質傳送的電子信號。涉及物理設備:雙絞線、同軸電纜,集線器 TCP/IP模型: Application 應用層:各類協議 Host-to-Host 主機到主機層:TCP UDP ICMP RTP Internet 因特網層:IPv4 IPv6 Network Interface 網絡接口層:LAN(Ethernet,Token Ring,FDDI) WAN(HDLC PPP Frame Relay) 物理層:Media type介質 Ethernet
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
* 使用ip address list查看設備名稱 * 使用ip addr add IFADDR dev IFACE進行ip地址設定 * 一般Linux最小安裝默認不會安裝IFCONFIG包,配置本地yum源,進行yum search ifconfig進行此包安裝 * 安裝完成后進行/etc/sysconfig/network-script/IFACE修改 BOOTPROTO=static ONBOOT=YES IPADDR NETMASK GATEWAY DNS1 * 設定完成后可以進行systemctl restart network.sercie 或者進行ifdown和ifup命令進行網卡單獨關閉及啟動
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
使用命令ifconfig或ip命令進行修改,立即生效,重啟失效 修改網卡配置信息進行配置,重啟生效 使用圖像界面setup--網絡配置 修改后重啟服務
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash # for ((i=1;i<255;i++));do ping -w 1 -c 1 192.168.150.$i &>/dev/null if [ $? -eq 0 ];then echo -e "\e[1;32m 192.168.150.$i ok \e[0m" else echo -e "\e[1;31m 192.168.150.$i no response \e[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、如何給網絡接口配置多個地址,有哪些方式?
]# ip addr add IP/mask dev eth0:0 臨時生效 給接口配置多個地址: ip addr之外,ifconfig或配置文件都可以; (1) ifconfig IFACE_LABEL IPADDR/NETMASK IFACE_LABEL: eth0:0, eth0:1, ... (2) 為別名添加配置文件; DEVICE=IFACE_LABEL BOOTPROTO:網上別名不支持動態獲取地址; static, none
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令 ifconfig [interface] # ifconfig -a # ifconfig INTERFACE [up|down] ifconfig interface [aftype] options | address ... # ifconfig INTERFACE IP/mask [up] # ifconfig INTERFACE IP netmask MASK 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 netstat命令: netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships 顯示網絡連接: netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p] -t: tcp協議相關 -u: udp協議相關 -w: raw socket相關 -l: 處于監聽狀態 -a: 所有狀態 -n: 以數字顯示IP和端口; -e:擴展格式 -p: 顯示相關進程及PID 常用組合: -tan, -uan, -tnl, -unl 顯示路由表: netstat {--route|-r} [--numeric|-n] -r: 顯示內核路由表 -n: 數字格式 顯示接口統計數據: netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] # netstat -i # netstat -I IFACE ip命令: ip - show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } link OBJECT: ip link - network device configuration set dev IFACE 可設置屬性: up and down:激活或禁用指定接口; show [dev IFACE]:指定接口 [up]:僅顯示處于激活狀態的接口 ip address - protocol address management ip addr { add | del } IFADDR dev STRING [label LABEL]:添加地址時指明網卡別名 [scope {global|link|host}]:指明作用域 global: 全局可用; link: 僅鏈接可用; host: 本機可用; [broadcast ADDRESS]:指明廣播地址 例如: ip addr add 192.168.1.111/24 dev eth0 label eth0:0 ip address show - look at protocol addresses [dev DEVICE] [label PATTERN] [primary and secondary] ip address flush - flush protocol addresses 使用格式同show 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] ss命令: 格式:ss [OPTION]... [FILTER] 選項: -t: tcp協議相關 -u: udp協議相關 -w: 裸套接字相關 -x:unix sock相關 -l: listen狀態的連接 -a: 所有 -n: 數字格式 -p: 相關的程序及PID -e: 擴展的信息 -m:內存用量 -o:計時器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
CentOS系統上rpm命令管理程序包:
安裝、升級、卸載、查詢和校驗、數據庫維護
rpm命令:rpm [OPTIONS] [PACKAGE_FILE] 安裝:-i, --install 升級:-U, --update, -F, --freshen 卸載:-e, --erase 查詢:-q, --query 校驗:-V, --verify 數據庫維護:--builddb, --initdb 安裝: 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:重新安裝 注意:rpm可以自帶腳本; 四類:--noscripts preinstall:安裝過程開始之前運行的腳本,%pre , --nopre postinstall:安裝過程完成之后運行的腳本,%post , --nopost preuninstall:卸載過程真正開始執行之前運行的腳本,%preun, --nopreun postuninstall:卸載過程完成之后運行的腳本,%postun , --nopostun --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:強制升級; 注意:(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝新版本內核; (2) 如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供; 卸載: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... --allmatches:卸載所有匹配指定名稱的程序包的各版本; --nodeps:忽略依賴關系 --test:測試卸載,dry run模式 查詢: rpm {-q|--query} [select-options] [query-options] [select-options] PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本; -a, --all:查詢所有已經安裝過的包; -f FILE:查詢指定的文件由哪個程序包安裝生成; -p, --package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作; --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴; [query-options] --changelog:查詢rpm包的changlog; -l, --list:程序安裝生成的所有文件列表; -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等; -c, --configfiles:查詢指定的程序包提供的配置文件; -d, --docfiles:查詢指定的程序包提供的文檔; --provides:列出指定的程序包提供的所有的CAPABILITY; -R, --requires:查詢指定的程序包的依賴關系; --scripts:查看程序包自帶的腳本片斷; 用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ... 校驗: 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 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 包來源合法性驗正和完整性驗正: 來源合法性驗正: 完整性驗正: 獲取并導入信任的包制作者的密鑰: 對于CentOS發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 驗正: (1) 安裝此組織簽名的程序時,會自動執行驗正; (2) 手動驗正:rpm -K PACKAGE_FILE 數據庫重建: rpm管理器數據庫路徑:/var/lib/rpm/ 查詢操作:通過此處的數據庫進行; 獲取幫助: CentOS 6:man rpm CentOS 7:man rpmdb rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化數據庫,當前無任何數據庫可實始化創建一個新的;當前有時不執行任何操作; --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建
11、如何使用發行版光盤作為yum repository,請描述該過程。
* 掛載光盤至某目錄,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom * 創建配置文件 ~]# cat /etc/yum.repos.d/local.repo [CentOS7] name=CentOS 7 baseurl=file:///base/cdrom/cdrom enable=1 gpgcheck=0
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash # s=0 k=0 for i in $(ls /etc/rc3.d/);do if [[ $i == S* ]];then echo $i start let s++ elif [[ $i == K* ]];then echo $i stop let k++ fi done echo "S* totle $s" echo "K* totle $k" 執行結果: ~]# bash sumks.sh K10saslauthd stop K15svnserve stop K50netconsole stop K87restorecond stop K89rdisc stop S02lvm2-monitor start S08ip6tables start S10network start S11auditd start S12rsyslog start S22messagebus start S25blk-availability start S25netfs start S26haldaemon start S26udev-post start S55sshd start S56xinetd start S80postfix start S90crond start S99libvirt-guests start S99local start S* totle 16 K* totle 5
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash # declare -i sum=0 declare -i id if [ $# -lt 1 ];then echo "At lease one arg!" exit 2 fi for i in $@;do if id $i &>/dev/nul;then id=$(id -u $i) let sum+=$id else echo "$i is not exist" fi done echo "idsum=$sum" 運行結果: ~]# bash useridsum.sh At lease one arg! ~]# bash useridsum.sh void test idsum=1004 ~]# bash useridsum.sh void test aa aa is not exist idsum=1004
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash # declare -i dir=0 declare -i file=0 if [ $# -lt 1 ];then echo "At Lease one arg!" exit 1 fi for i in $@;do if ls $i &>/dev/null;then for j in $(ls $i);do if [ -d $i/$j ];then let dir++ else [ -f $i/$j ] let file++ fi done else echo "$i is not exist" fi done echo "direcotor $dir,file $file" 執行結果: [root@promote ~]# bash file.sh /tmp /etc direcotor 86,file 87 [root@promote ~]# bash file.sh At Lease one arg! [root@promote ~]# bash file.sh /tmp direcotor 0,file 1 [root@promote ~]# bash file.sh /tmp /sss /sss is not exist direcotor 0,file 1
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash # if [ $# -lt 1 ];then echo "At Least one arg!" exit 1 fi for i in $@;do if id $i &>/dev/null;then j=$(id -u $i) if [ $j -ge 500 ];then echo "$i is a normal user" else echo "$i is a system user" fi else echo "$i is not exist" fi done 執行結果: [root@promote ~]# bash usershow.sh At Least one arg! [root@promote ~]# bash usershow.sh void test void is a normal user test is a normal user [root@promote ~]# bash usershow.sh void test aaaa void is a normal user test is a normal user aaaa is not exist
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash # declare -i sum=0 for i in {1..10};do if id user$i &>/dev/null;then echo "user user$i is exist" else useradd user$i | echo "user$i" | passwd --stdin user$i &>/dev/null let sum++ echo "user user$i add success!" fi done echo "totle add user:$sum" 執行結果: ~]# bash adduser.sh user user1 add success! user user2 add success! user user3 add success! user user4 add success! user user5 add success! user user6 add success! user user7 add success! user user8 add success! user user9 add success! user user10 add success! totle add user:10
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash # for i in {1..10};do if ping -w 1 -c 1 192.168.150.$i &>/dev/null;then echo "the host 192.168.150.$i is online" else echo "the host 192.168.150.$i is offline" fi done 執行結果: ~]# bash pingtest.sh the host 192.168.150.1 is online the host 192.168.150.2 is online the host 192.168.150.3 is offline the host 192.168.150.4 is offline the host 192.168.150.5 is offline the host 192.168.150.6 is offline the host 192.168.150.7 is offline the host 192.168.150.8 is offline the host 192.168.150.9 is offline the host 192.168.150.10 is offline
18、打印九九乘法表;
#!/bin/bash # for i in {1..9};do for j in $(seq 1 $i);do echo -n -e "${i}X${j}=$[$j*$i]\t" done echo done 執行結果: 1X1=1 2X1=22X2=4 3X1=33X2=63X3=9 4X1=44X2=84X3=124X4=16 5X1=55X2=105X3=155X4=205X5=25 6X1=66X2=126X3=186X4=246X5=306X6=36 7X1=77X2=147X3=217X4=287X5=357X6=427X7=49 8X1=88X2=168X3=248X4=328X5=408X6=488X7=568X8=64 9X1=99X2=189X3=279X4=369X5=459X6=549X7=639X8=729X9=81
原創文章,作者:N23-蘇州-void,如若轉載,請注明出處:http://www.www58058.com/59299
寫的很好,排版也很棒,期待你的以后作業,這次完全可以作為優秀案例來展示