馬哥教育網絡班19期第八周課程練習
1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、命名用場景
網橋:為最早的網絡連接設備,它主要用來延長擴展網絡的物理長度
集線器:對網橋的功能作了擴充,它的功能是將兩個不同網段(廣播域)網絡進行連接,作為網絡物理邊界的擴展,一般用在連接兩個網段不同的網絡
二層交換機:工作在網絡鏈路層,可實現點對點傳輸,全雙工工作。一般用在內部網絡中,作為接入層設備。
三層交換機:工作在IP層,在二層交換的基礎上,增加了路由功能,能實現簡單的路由尋址。一般用在內部網絡內為作網關或匯聚層設備。
路由器:工作在IP層,主要負責將接收到的報文進行路由尋址轉發。一般用于外網不同網段間的網關設備或是內網核心網絡的網關設備。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址分為A類1.0.0.0-126.0.0.0,B類128-191.0.0.0,C類192-223.0.0.0,D類224-239.0.0.0,E類240-255.0.0.0;
子網掩碼形式分為兩段,前半段全1表示網絡地址,后半段全0表示主機地址,得出子網掩碼。子網掩碼與IP地址相或,
計算出的值,能就算出IP所在網絡的網絡地址。通常兩臺計算機通訊前都需計算出對方的網絡地址,然后與自己的網絡
地址相比較,如果是在同一網段,那就通過第二層arp廣播通信,如果是不同網段,那就封包成第三層的IP協議,通過路由發送數據。
3、計算機網絡的分層模型有那些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有那些。
計算機網絡的分層模型主要有ISO的OSI七層模型及互聯網TCT/IP的四層模型。
OSI七層模型:
物理層:對應物理設備為網卡,該層負責物理設備的連接及通信,如電壓信號、光信號的傳輸等。
數據鏈路層:將底層的物理通信,抽象成鏈路格式,在本地網絡內以廣播,mac地址尋址等方式通信
網絡層:將數據鏈路層的數據進一步編碼,加入網絡尋址的方式,對數據進行路由尋址通信
傳輸層:在網絡層的基礎上,加入對傳輸數據的控制,比如TCP的糾錯重傳機制,或UDP的直接傳輸機制,
以便于更為精準的控制數據在IP網絡上的傳輸行為。
會話層:提供會話建立、保持等一系列功能
表示層:提供各個應用程序之間的數據展現方式。
應用層:各應用程序特有的數據通信格式。
TCP/IP四層模型
物理層,對應物理設備為網卡,該層負責物理設備的連接及通信,如電壓信號、光信號的傳輸等。
數據鏈路層,將底層的物理通信,抽象成鏈路格式,在本地網絡內以廣播,mac地址尋址等方式通信
網絡層,將數據鏈路層的數據進一步編碼,加入網絡尋址的方式,對數據進行路由尋址通信
應用層,接收或發送到網絡層的信息,轉換成應用程序能理解的數據,比如會話保持,展示格式,
軟件應用的專有數據等。
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
將Linux主機接入到網絡中,有如下步驟:
a.指定IP地址及子網掩碼
b.設定路由,即默認網關地址
c.指定DNS服務器地址,該項可填寫3個,以防單個DNS失效后可找到其它DNS替代發揮作用
5、為Linux主機配置網絡信息的方式有那些,請描述各個過程
1.在GUI界面手工指定
a.指定IP地址及子網掩碼
b.設定路由,即默認網關地址
c.指定DNS服務器地址,該項可填寫3個,以防單個DNS失效后可找到其它DNS替代發揮作用
2.在命令行直接修改
通過 ifconfig interface ip/mask up 命令行指定IP地址
通過 route add -net ip/mask if 命令設定路由
3.直接修改配置文件
網卡配置修改 /etc/sysconfig/network-scripts 下的網卡配置文件,類似 ifcfg-eth0 之類
路由修改地址 /etc/rc.d/rc.local
DNS地址修改 /etc/resolv.conf
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態,在線的主機使用綠色顯示,不在線的主機使用紅色顯示。
#!/bin/bash
#
#ping hosts
hosts=172.16.200
for i in {1..254} ; do
if ping -c 1 -w 1 $hosts.$i &> /dev/null ; then
echo "$hosts.$i is up"
else
echo "$hosts.$i is down"
fi
done
7、詳細描述每個網絡接口的配置文件中各個參數的含義各其所對應的值
TYPE=Ethernet 網卡類型
BOOTPROTO=none
IPADDR=172.16.200.201 IP地址
PREFIX=16 子網掩碼
DNS1=172.16.0.2 DNS服務器地址1
DEFROUTE=yes 路由選項
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth2 網卡名稱
UUID=6ad68c63-e7b1-4200-915a-c72a0caf44c7 UUID值
ONBOOT=yes 電腦啟動時是否自動啟動
HWADDR=00:0C:29:D9:58:B4 網卡MAC地址
GATEWAY=172.16.0.2 默認網關
LAST_CONNECT=1465863967
DEVICE=lo 回環網卡
IPADDR=127.0.0.1 IP地址
NETMASK=255.0.0.0 子網掩碼
NETWORK=127.0.0.0 網絡地址
BROADCAST=127.255.255.255 廣播地址
ONBOOT=yes 電腦啟動時是否自動啟動
NAME=loopback 網卡名稱
8、如何給網絡接口配置多個地址,有那些方式?
可使用輔助網卡的形式,直接添加,比如:
ifconfig eth0:0 ip/mask
比如:ifconfig eno16777736:0 172.16.128.100 255.255.0.0
9、常用的網絡管理類工具有那些,并用示例形式描述他們的使用方法。
常用網絡管理類工具有:
ifconfig 列出當前網卡IP地址信息
[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.128.3 netmask 255.255.0.0 broadcast 172.16.255.255
inet6 fe80::20c:29ff:fee4:b5eb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e4:b5:eb txqueuelen 1000 (Ethernet)
RX packets 755924 bytes 939077981 (895.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 174367 bytes 11214179 (10.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.128.100 netmask 255.255.0.0 broadcast 172.16.255.255
ether 00:0c:29:e4:b5:eb txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 20 bytes 1904 (1.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20 bytes 1904 (1.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip 命令:
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:e4:b5:eb brd ff:ff:ff:ff:ff:ff
inet 172.16.128.3/16 brd 172.16.255.255 scope global dynamic eno16777736
valid_lft 1370sec preferred_lft 1370sec
inet 172.16.128.100/16 brd 172.16.255.255 scope global secondary eno16777736:0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee4:b5eb/64 scope link
valid_lft forever preferred_lft forever
netstat 列出當前服務器所有的TCP/IP網絡連接
[root@localhost ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1751/master
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1610/rpcbind
tcp 0 0 0.0.0.0:36692 0.0.0.0:* LISTEN 1618/rpc.statd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1612/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2380/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1751/master
tcp6 0 0 :::58625 :::* LISTEN 1618/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 1610/rpcbind
tcp6 0 0 :::22 :::* LISTEN 1612/sshd
tcp6 0 0 ::1:631 :::* LISTEN 2380/cupsd
ss 功能同netstat類似,但速度比netstat快
[root@localhost ~]# ss -ntal
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:36692 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::58625 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
[root@localhost ~]#
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有那些,以及如何管理的
Linux系統軟件包管理方法,主要有兩種,一是直接使用RPM進行軟件包管理,另一種是借助yum工具。
RPM:
安裝: rpm -ivh packagename
升級: rpm -U packagename
卸載: rpm -e packagename
查看當前所有rpm包: rpm -qa
查看某個rpm包的信息: rpm -qi packagename
YUM:
安裝: yum install packagename
升級: yum update packagename
卸載: yum remove packagename
查看當前所有rpm包: yum list
查看某個rpm包的信息: yum info packagename
11、如何使用發行版光盤作為yum repository,請描述該過程
首先掛載光盤
mount /dev/cdrom /mnt/cdrom -t 9665
然后,增加一個repository配置文件 在 /etc/yum.repos.d 添加后綴為 repo的文件。
例如:local.repo
[repositoryID]
name=Some name for this repository //倉庫名稱
baseurl=url://path/to/repository/ //倉庫路徑,路徑的形式有多種,可以是:
ftp://
http://
nfs://
file:///
也可以多條,每個地址路徑寫一行即可
這里指定光盤作為倉庫,則baseurl寫成:
baseurl=file:///mnt/cdrom
enabled={1|0} //是否啟用此倉庫,1為啟用,0為停用
gpgcheck={1|0} //是否進行gpg(GNU Private Guard)檢驗,以確定rpm包來源是有效和安全的
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority} //默認為:roundrobin,意為隨機挑選;
cost= //倉庫權值,默認為1000
通過這樣設置,就可為系統將光盤配置為本地源倉庫。
12、寫一個腳本,完成以下功能:
(1)假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干
(2)顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串
(3)顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串
(4)分別統計S開頭和K開頭的文件各有多少
#!/bin/bash
#
#list /etc/rc.d/rc3.d/
declare -i m=0
declare -i n=0
dir=/etc/rc.d/rc3.d/
Sfiles=`ls $dir | grep ^S`
for i in $Sfiles ; do
echo "${i}Start"
m=$m+1
done
Kfiles=`ls $dir | grep ^K`
for j in $Kfiles ; do
echo "${j}Kstart"
n=$n+1
done
echo "Total Kfile is : $n"
echo "Total Sfile is : $m"
13、寫一個腳本,完成以下功能
(1)腳本能接受用戶名作為參數
(2)計算此些用戶的ID之和
#!/bin/bash
#
#sum userid
declare -i uids=0
declare -i totals=0
if [ $# -lt 1 ]; then
echo "Please input atlest 1st args!"
exit 2
fi
#echo "\$\*:$*"
for i in $* ; do
if id $i ; then
let uids=0
uids=`id -u $i`
echo "uids: $uids"
echo "totals: $totals"
let $totals=$totals+$uids
echo "totals: $totals"
fi
done
echo "Total UID's is: $totals."
14、寫一個腳本
(1)傳遞一些目錄給此腳本
(2)個顯示每個目錄的所有一級文件或子目錄的內容類型
(3)統計一共有多少個目錄,且一共顯示了多少個文件的內容類型
#!/bin/bash
#
#show dir
declare -i totalfiles=0
if [ $# -lt 1 ]; then
echo "Please input the DIR path"
exit 2
fi
for i in $*; do
if [ -d $i ]; then
for j in `ls $i`; do
if [ -d $j ]; then
echo "$j is a dir"
elif [ -f $j ]; then
echo "$j is a file"
else
echo "Unknow $j"
fi
totalfiles=$totalfiles+1
done
fi
done
echo "Total Files is: $totalfiles."
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶
#!/bin/bash
#
#show uid > 500
declare -i uids=0
if [ $# -lt 1 ]; then
echo "Please input a username as arg"
exit 2
fi
if ! id $1 &> /dev/null ; then
echo "$1: not such user."
fi
uids=`id -u $1`
if [ $uids -gt 500 ]; then
echo "User $1 is a comm user."
fi
16、寫一個腳本
(1)添加10用戶user1-user10,密碼同用戶名
(2)用戶不存在時才添加,存在時則跳過
(3)最后顯示本次共添加了多少用戶
#!/bin/bash
#
#add user
declare -i totals=0
for i in {1..10}; do
if ! id user$i &> /dev/null ; then
useradd user$i &> /dev/null
echo $i | passwd user$i &> /dev/null
totals=$totals+1
fi
done
echo "Total add user: $totals"
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有那些主機在線,將在線的顯示出來
#!/bin/bash
#
#ping hosts
hosts=172.16.250
for i in {20..100} ; do
if ping -c 1 -w 1 $hosts.$i &> /dev/null ; then
echo "$hosts.$i is up"
fi
done
18、打印九九乘法表
[root@localhost tmp]# vim 9X9.sh
#!/bin/bash
#
#print 9X9
declare -i m=1
declare -i n=1
while [ $n -le 9 ]; do
while [ $m -le $n ]; do
echo -e -n "${m}X${n}=$[$m*$n]\t"
m=$m+1
done
echo
m=1
n=$n+1
done
原創文章,作者:馬哥Net19_小斌斌,如若轉載,請注明出處:http://www.www58058.com/20773
寫的很好,有的腳本可以在優化一下,多注意排版