1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋:網橋是工作在數據鏈路層的設備。用于將兩個LAN連接在一起并按照Mac地址轉發數據。網橋保存著所有與它相連的主機的Mac地址表和端口號并具有學習功能。當網橋收到某個數據包后,能根據目的主機的Mac地址再選擇從哪個端口進行轉發。因此,網橋具有2個沖突域,1個廣播域。一般用Hub和網橋的端口相連,Hub再連接多臺主機構成子LAN。
集線器(Hub):集線器是工作在物理層的設備。中繼器用于連接兩個網絡結點之間物理信號的雙向轉發工作,而集線器相當于是多個端口的中繼器。假設有四臺主機通過集線器進行網絡連接,它們之間就可以通過集線器通信。集線器的工作原理如下:當A需要發送數據給B時,由于Hub是底層設備,它沒有Mac地址表,因此Hub會向所有連接到它的網絡設備進行廣播發送,因此集線器有一個廣播域,一個沖突域。集線器的另一個缺點是,它只能工作在半雙工模式下。比如當A向Hub發送數據要求轉發給B時,C就不能給Hub發數據,同樣當Hub在進行廣播時,也不能接收數據。
二層交換機:二層交互機的工作原理類似于網橋,不同之處在于網橋只有2個端口,而交換機最少也有4個端口,還有24,48端口的交換機。多臺主機可以直接與交換機連接而不用借助于Hub的幫助。同樣的,交換機有Mac地址和端口的對應表。能根據Mac地址進行數據轉發,因此交換機有1個廣播域和N個沖突域,N為端口號。其次,交換機的轉發性能和價格遠遠低于網橋,因此二層交換機被廣泛使用。
三層交換機:VLAN在傳統二層交換機的基礎上多了VLAN功能,能夠自主劃分廣播域(每個VLAN就是一個廣播域),并且可以配置IP地址,方便遠程管理。三層交換機又比VLAN多了路由的功能,它數據網絡層設備。工程中,有時候需要將IP地址和Mac綁定,這就需要使用三層交換機。它能夠IP地址進行數據轉發。
路由器:路由器是一種連接多個網段的網絡層設備。它能夠為不同網段中的兩臺主機提供信息轉發功能,路由器不是一個純硬件的轉發設備,而是軟硬結合的智能設備,可以通過各種路由協議來連接不同網段,通過路由器就能構建一個更大的網絡。路由器具有判斷網絡地址和選擇路徑的功能,可以在復雜的網絡環境中建立靈活的連接。路由器的每一個端口是一個單獨的廣播域和沖突域。使用路由器將LAN連接入WAN是最普遍的方式。每個LAN可以有自己的拓撲結構,傳輸介質等,他們通過路由器連入大網絡中彼此又保持獨立。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
A類地址:第一個字節表示網絡位,后三個字節表示主機位。第一個字節的范圍是0~127。0和127被保留,因此A類地址共有126個。每個網段最多可有2^24 – 2臺主機。
B類地址:前兩位字節表示網絡號。第一個字節范圍128~191表示B類網絡地址。每個B類網絡地址最多可有2^16 – 2臺主機。
C類地址:前三位表示網絡號。第一個字節的范圍192~223表示C類網絡地址。每個C類地址最多可有2^8 – 2臺主機。
D類地址:第一位字節的范圍224~239,用于組播地址
E類地址:第一位字節的范圍240~255,用于科研
私有IP地址:A類地址中的10.0.0.0/8。B類地址中的172.16.0.0/16~172.31.255.255/16,共16個網段。C類地址中的192.168.0.0/24~192.168.255.255/24,共256個網段。
子網掩碼是用于判斷網段的。例如192.168.1.1/24和192.168.2.1/24它們都是C類網絡且網段不同,因此屬于不同的沖突域廣播域。但如果這樣表示192.168.1.1/22和192.168.2.1/22,那它們就都屬于192.168.0.0/22這個網段,屬于一個子網。
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型從上至下分為:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層和物理層?;驹O計思想上一層調用下一層提供的服務,每層獨立設計協議,獨立實現,只需同一調用接口。數據傳輸時,源主機和目標主機之間的通信是相同層之間的通信。
TCP/IP模式是實際模型。分為四層,應用層,傳輸層,網際層和網絡訪問層,分別與OSI模型中的層次對應。應用層是用戶空間的層次,常見的應用層協議有DNS,HTTP,SMTP,FTP等。傳輸層協議有TCP和UDP,網絡層主要進行IP尋址,使用路由器和網關。網絡訪問層是底層,用于解決主機接入網絡和01數據流如何編碼如何傳輸等底層問題。
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
為了將虛擬機連入網絡,首先要查看本地實體機的IP地址及網關地址,DNS地址。
通過windows控制面板查看本地連接的網絡屬性,找到本機IP為192.168.1.3,DNS服務器與網關均為192.168.1.1。
網絡連接模式選擇橋接模式,安裝完虛擬機后。配置本機的網絡屬性配置文件/etc/sysconfig/network-scripts/eno-eth0。如下所示:
TYPE=Ethernet
PEERDNS=no
IPV6INIT=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
UUID=2c854f49-191e-4760-a5aa-f5acfc07384b
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.1.67
PREFIX=24
GATEWAY=192.168.1.1
DNS=192.168.1.1
NM_CONTROLLED=no
再配置DNS服務器地址和實體機相同,編輯/etc/resolv.conf。添加一條記錄為:
nameserver 192.168.1.1即可。
配置好這兩個文件后,還需確保防火墻,selinux,NetworkManager處于關閉狀態。分別使用 :
]# service iptables stop
]# chkconfig iptables off (關閉并禁用防火墻)
編輯/etc/sysconfig/selinux,確保SELINUX的值為disabled(關閉selinux)
使用 ]# chkconfig –list NetworkManger 確保NetworkManager是否禁止開機自啟
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
可以通過網絡相關命令或者修改配置文件來為Linux系統配置網絡信息。使用命令行配置立即生效,但重啟后無效,修改配置文件不會立即生效,但重啟網絡服務后永久有效。
網絡配置相關命令主要有ifcfg家族,可以用ifconfig配置IP地址和子網掩碼,用route配置網關和本地路由表,用netstat命令查看網絡連接狀態。另外還有iproute2家族,可用ip addr配置ip地址和子網掩碼,用ip route配置網關路由,用ip link配置接口信息,還能用ss命令查看網絡連接狀態和統計數據。
配置文件主要在/etc/sysconfig/network-scripts和/etc/resolv.conf中進行配置,前者配置網卡接口的ip地址,掩碼,網關等信息,后者配置DNS信息。
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
``` #!/bin/bash # for i in `seq 254`;do if ping -c 1 -W1 172.16.250.$i &> /dev/null;then echo -e "\033[32m 172.16.250.$i is online. \033[0m" else echo -e "\033[31m 172.16.250.$i is not online. \033[0m" fi done ```
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
以本機所用的配置為例:
TYPE=Ethernet
PEERDNS=no
IPV6INIT=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
UUID=2c854f49-191e-4760-a5aa-f5acfc07384b
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.1.67
PREFIX=24
GATEWAY=192.168.1.1
DNS=192.168.1.1
NM_CONTROLLED=no
其中最重要的是ONBOOT和BOOTPROTO,前者表示開機自動激活此接口,后者表示采用什么協議配置激活此網絡接口,一般用none或者dhcp。如果選擇了dhcp(自動分配機制),那么ip地址,網關,掩碼等信息就不需要給出了。反之則需要手動給出,為了固定ip地址,一般都選擇none。另外關閉NM_CONTROLLED是為了防止NetworkManager服務隨意修改參數,DEFROUTE表示采用默認路由。
8、如何給網絡接口配置多個地址,有哪些方式?
能用ip addr命令或者ifconfig命令,修改配置文件也能為接口配置多個地址。
例如
]# ip addr add 192.168.100.10/24 dev eth1
]# ip addr add 172.16.100.10/16 dev eth1 label eth1:0
]# ifconfig eno16777736:0 172.16.100.10/16
首先為接口配置了地址192.168.100.10/24這個ip地址。隨后可以用ip addr 或者ifconfig命令為接口再配置一個地址,此時需要給接口一個Label eth1:0
另外可以復制一份已有的配置文件 /etc/sysconfig/network-scripts/ifcfg-eno16777736為 /etc/sysconfig/network-scripts/ifcfg-eno16777736:0。隨后進入修改對應的IP地址和掩碼即可。注意BOOTPROTO一定不能為dhcp,另外DEVICE名也需要相應的修改。
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令:接口及地址查看和管理
# ifconfig -a:顯示所有接口,包括inactive狀態的接口
# ifconfig INTERFACE IP/MASK [up|down] :配置接口地址
e.g. ]# ifconfig eno16777736 192.168.1.67/24 up
route命令:路由查看及管理
# route -n:查看本機路由條目
e.g. ]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno16777736
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
添加路由信息:
]# route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
表示要到達10.0.0.0/8這一網段要先通過192.168.10.1這一跳
添加默認網關:
]# route add default gw 192.168.10.1
刪除路由條目:
]# route del -net 10.0.0.0/8 gw 192.168.10.1
]# route del default
ip命令:
]# ip addr add 192.168.100.10/24 dev eth1:為接口新加一個地址
]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1
表示要到192.168.0.0/24這一網段需要經過10.0.0.1這一跳
]# ip route add default via 10.0.0.1 dev eth1:添加默認網關
ss命令和netstat命令
常用組合: netstat -tan(顯示連接、監聽狀態的tcp連接), -uan, -tnl(顯示監聽狀態的tcp), -unl, -tunlp(顯示監聽狀態的tcp,udp連接和它們的相關進程)
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
CentOS使用yum作為前臺的包管理工具:
]# yum repolist 查看本機可用的yum倉庫。
]# yum list [installed] GLOB 查看某程序包是否安裝
]# yum install 安裝
]# yum info 查看已安裝程序包的相關信息
]# yum upgrade 升級,一般不升級,可能導致系統不可用。如需其他版本直接安裝即可
]# yum remove 刪除某程序包,依賴于此程序包的軟件也會被刪除,慎用
]# yum {grouplist,groupinstall} 安裝程序包組
]# yum clean all yum工具沒法用時一般可以清理一下本地緩存文件
e.g. 本機的epel yum倉庫配置
name=aliyun.epel
baseurl=http://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
也可以使用rpm命令進行程序包的安裝,查詢等管理。
安裝通用命令格式:rpm -ivh PACKAGE_FILE …
升級命令:rpm -Uvh PACKAGE_FILE ..
更多情況下用rpm命令進行查詢程序包的相關信息。
rpm -qa: 查詢已經安裝了的程序包
e.g. ]#rpm -qa | grep "^m" 模糊查找以m開頭的包
rpm -qf :查詢指定文件由哪個程序包生成
e.g. ]# rpm -qf /etc/fstab
rpm -qi:查詢已安裝程序包的相關信息
e.g. ]# rpm -qi bash
11、如何使用發行版光盤作為yum repository,請描述該過程。
先掛載光盤 ]# mount -r /dev/cdrom /media/cdrom
在/etc/yum.repos.d目錄下新建一個repo文件為dvd.repo:
[CentOS7]
name=dvd.repo
baseurl=file:///media/cdrom/
gpgcheck=0
用 yum repolist 驗證掛載成功
源標識 源名稱 狀態
CentOS7 dvd.repo 3,723
base/7/x86_64 CentOS-7 – Base 9,007
epel aliyun.epel 10,681
extras/7/x86_64 CentOS-7 – Extras 392
updates/7/x86_64 CentOS-7 – Updates 2,529
repolist: 26,332
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
``` #!/bin/bash # declare -i Kstart=0 declare -i Sstart=0 for file in /etc/rc.d/rc3.d/*;do if [[ $(basename $file) =~ "K" ]];then let Kstart++ echo -e "$(basename $file)\033[31;1m Stop \033[0m" fi if [[ $(basename $file) =~ "S" ]];then let Sstart++ echo -e "$(basename $file)\033[32;1m Start \033[0m" fi done echo "This directory has $Kstart file start with K and $Sstart files start with S" ```
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
``` #!/bin/bash # declare -i sum=0 for i in $*;do id=$(id -u $i) &> /dev/null sum=$[$sum+$id] done echo "The id_sum of this users is $sum." ```
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
``` #!/bin/bash # declare -i sub_dir=0 declare -i normal_file=0 declare -i block_file=0 declare -i char_file=0 declare -i link_file=0 declare -i num=0 for dir in $*;do echo -e " \033[31m DIR $dir \033[0m:" for file in $dir/*;do if [ -d $file ];then echo -e "\t$(basename $file) is sub_dir" && let num++ elif [ -b $file ];then echo -e "\t$(basename $file) is block_file" && let num++ elif [ -c $file ];then echo -e "\t$(basename $file) is char_file" && let num++ elif [ -h $file ];then echo -e "\t$(basename $file) is link_file" && let num++ elif [ -f $file ];then echo -e "\t$(basename $file) is normal_file" && let num++ else echo -e "\t$(basename $file) is Unknown type file" && let num++ fi done done echo "We give script $# dir and we get $num files-type details. " ```
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
``` #!/bin/bash # if [ $(id -u $1) -ge 500 ];then echo "Normal user." fi ```
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
``` #!/bin/bash # declare -i sum=0 for i in `seq 10`;do if ! id user$i &> /dev/null;then useradd user$i echo "user$i" | passwd --stdin user$i let sum++ fi done echo "We add $sum users this time." ```
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
``` #!/bin/bash # for i in `seq 20 100`;do if ping -c 1 -W1 172.16.250.$i &> /dev/null;then echo -e "\033[32;1m 172.16.250.$i is online. \033[0m" fi done ```
18、打印九九乘法表;
``` #!/usr/bin/python # for i in range(1,10): for j in range(1,10): print("%-2d * %-2d = %-2d" % (i,j,i*j),end=" ") print("\n") ```
原創文章,作者:上海-brown,如若轉載,請注明出處:http://www.www58058.com/52984
完成的非常好,給出了詳細操作步驟,腳本思路清晰,能把排版在完善一下就更完美了,加油!