马哥教育网络班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.178linux.com/20773
评论列表(1条)
写的很好,有的脚本可以在优化一下,多注意排版