第八周

1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。

网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。
二层交换机工作于OSI模型的第2层(数据链路层),隔离冲突域,相当于多端口网桥。
三层交换机就是具有部分路由器功能的交换机,三层交换技术就是二层交换技术+三层转发技术。
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络。
三层交换机和路由器的最主要区别是路由器有NAT功能,是边界设备,三层交换机没有NAT功能。
网桥和集线器已经是淘汰设备,二层交换机一般用来做接入层,连接各种终端设备,三层交换机用来做汇聚层和核心层,路由器用来连接Internet

2、IP地址的分类有哪些?子网掩码的表示形式及其作用

A类IP地址 地址范围1.0.0.0到127.255.255.255,默认掩码255.0.0.0
B类IP地址地址范围128.0.0.0-191.255.255.255,默认掩码255.255.0.0
C类IP地址范围192.0.0.0-223.255.255.255,默认掩码255.255.255.0
D类是组播地址,范围从224.0.0.0到239.255.255.255,
E类作为多播和保留使用
以下列出留用的内部私有地址
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255

3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些

0.8734640742186457.png

4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes #开机启动
BOOTPROTO=static #手动指定IP地址
IPADDR=192.168.16.108
NETMASK=255.255.255.0
GATEWAY=192.168.16.1
[root@localhost ~]# service network restart
[root@localhost ~]# vi /etc/resolv.conf
nameserver 223.5.5.5 #添加DNS

5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

[root@localhost ~]# ifconfig eth0 192.168.16.108/24 up
[root@localhost ~]# ip addr add 192.168.16.108/24 dev eth0
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash
for ((i=1;i<255;i++));do
        ping -c 1 -w 1 "172.16.250.$i" >/dev/null
        if [ $? -eq 0 ];then
                echo -e "\033[0;32;1m 172.16.250.$i is up! \033[0m"
        else
                echo -e "\033[0;31;1m 172.16.250.$i is down! \033[0m" 
        fi
done

7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;

DEVICE=eth0 #设备名称
#HWADDR=00:0C:29:C5:41:BC #mac地址
TYPE=Ethernet #设备类型
UUID=ea231794-ff5a-44fd-bf0e-ed4446a8721c #uuid号
ONBOOT=yes #是否开机启动
NM_CONTROLLED=yes #是否使用netmanager 管理
BOOTPROTO=static #IP获取类型static 或者 DHCP
IPADDR=192.168.16.108 #ip地址
NETMASK=255.255.255.0 #掩码
GATEWAY=192.168.16.1 #网关

8、如何给网络接口配置多个地址,有哪些方式?

[root@localhost ~]# ifconfig eth0:0 192.168.16.100/24
[root@localhost ~]# ip addr add 192.168.16.18/24 dev eth0:1
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:76:F3:6C  
          inet addr:192.168.16.108  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe76:f36c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:62255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34748 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28454794 (27.1 MiB)  TX bytes:4203485 (4.0 MiB)
[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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.16.1    0.0.0.0         UG    0      0        0 eth0
[root@localhost ~]# ss -tan
State      Recv-Q Send-Q                  Local Address:Port                    Peer Address:Port 
LISTEN     0      128                                :::22                                :::*     
LISTEN     0      128                                 *:22                                 *:*
[root@localhost ~]# netstat -tan
Active Internet connections (servers and established)
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

10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

有源码编译安装,rpm包安装,yum源安装
源码安装一般步骤:配置(configure)、编译(make)、安装(make install)。删除源码安装直接删除安装目录
rpm命令实现程序管理:
安装:-ivh, –nodeps, –replacepkgs
卸载:-e, –nodeps
升级:-Uvh, -Fvh, –nodeps, –oldpackage
查询:-q, -qa, -qf, -qi, -qd, -qc, -q –scripts, -q –changlog, -q –provides, -q –requires
校验:-V
导入GPG密钥:–import, -K, –nodigest, –nosignature
数据库重建:–initdb, –rebuilddb
Yum 命令实施软件包管理:
repolist [all|enabled|disabled]
显示程序包:list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]
安装程序包:	install package1 [package2] […]
reinstall package1 [package2] […] (重新安装)
升级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] […]
查看程序包information:
info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache

11、如何使用发行版光盘作为yum repository,请描述该过程。

挂载光盘至某目录
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
创建配置文件
vim /etc/yum.repos.d/cdrom.repo
[cdrom]            #仓库的名字
name=localation software    #仓库的描述
baseurl=file:///mnt/cdrom       #repodata目录的仓库访问路径
gpgchecked=0           #使用前是否检验包
enabled=1            #是否启用此仓库

12、写一个脚本,完成以下功能

(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash
#
declare -i s=0
declare -i k=0
for i in `ls /etc/rc.d/rc3.d | grep "^S"`;do
  echo "$i start"
  let s++
done
for i in `ls /etc/rc.d/rc3.d | grep "^K"`;do
  echo "$i stop"
  let k++
done
echo "K file: $k; S file: $s"

13、写一个脚本,完成以下功能

(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash
for i in $*;do
    id $i &> /dev/null
    if [ $? -ne 0 ];then
        echo "$i not exists"
    else
       let x+=`id -u $i`
    fi
done
echo "sum of userid :$x"

14、写一个脚本

(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash
if [ $# -le 1 ];then
    echo "input at least a filepath!"
fi
for i in $*;do
    if [ -d $i -a -x $i ];then
        ls -l $i  |grep ^d |awk '{print $NF}'
        let x+=$(ls -l /tmp/ |grep ^d |wc -l)
        let y+=$(ls -l /tmp/ |grep -v ^d |wc -l)
    else
        echo "The $i is not exist or Permission denied,please check it!"
        exit
    fi
done
echo "the directories sum:$x"
echo "the file sum:$y"

15、写一个脚本

通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash
id $1 &> /dev/null
if [ $? -eq 0 ];then
    if [ `id -u $1` -ge 500 ];then
        echo "user is a domestic consumer" 
    else
        echo "user is a system or root consumer"
    fi 
else
    echo "user is not exsits"
fi

16、写一个脚本

(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash
for i in {1..10};do
    id user$i &> /dev/null
    if [ $? -eq 0 ];then
        useradd user$i && echo "user$i" | passwd --stdin user$i
        x++
    else
        echo "user is exsits"
    fi
done

17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

#!/bin/bash
for i in {1..255};do
    ping -c 1 -w 1 "172.16.250.$i" > /dev/null
    if [ $? -eq 0 ];then
        echo -e "ip addr 172.16.250.$i is online"
    fi
done

18、打印九九乘法表;

#!/bin/bash
for i in {1..9};do
    for j in $(seq 1 $i);do
        let sum=($i * $j)
        echo -n -e "${j}x${i}=$sum\t"
    done
    echo
done

原创文章,作者:N21_smile,如若转载,请注明出处:http://www.178linux.com/47237

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-19 18:03

    写的很好,图如果是自己画的话,会更好