马哥教育网络班21期+第8周课程练习

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

集线器(HUB)是在OSI模型的第一层——物理层——连接多台主机、延长网络的设备。其主要功能是将从一个端口接收到的数据包转发给所有端口。中继器(Repeater)是将由电缆传过来的电信号或光信号调整波形和放大再传给另一个电缆的设备,提供多端口服务的中继器称作集线器。二者的主要区别是HUB是在物理层转发数据的,它并不关心电压值的大小,也不会放大物理信号;而Repeater的作用就是放大物理信号。

网桥(Bridge)是在OSI模型的第二层——数据链路层——连接两个网络的设备。它能够识别数据链路层中的数据帧,并将这些数据帧临时存储于内存,再重新生成信号作为一个全新的帧转发给相连的另一个网段。网桥能识别数据包中的MAC地址信息,根据MAC信息实现对数据包有目的的转发,并将相关MAC地址信息与对应的端口记录在内部的地址表中。

路由器(Router)是在OSI模型的第三层——网络层——连接两个网络、并对分组报文进行转发的设备。网桥是根据MAC地址进行处理,而路由器则是根据IP地址进行处理的。路由器的主要作用就是为经过路由器的数据包选择一条最佳传输途径,并将数据包有效地送达目的地。

二层交换机与三层交换机的区别:二层交换器工作于数据链路层,用于小型的局域网络;三层交换机工作于网络层,加快大型局域网络内部的数据转发。

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

A类:
    0 000 0000 - 0 111 1111: 1-127
    网络数:126, 127
    每个网络中的主机数:2^24-2
    默认子网掩码:255.0.0.0
    私网地址:10.0.0.0/8
B类:
    10 00 0000 - 10 11 1111:128-191
    网络数:2^14
    每个网络中的主机数:2^16-2
    默认子网掩码:255.255.0.0
    私网地址:172.16.0.0/16-172.31.0.0/16
C类:
    110 0 0000 - 110 1 1111: 192-223
    网络数:2^21
    每个网络中的主机数:2^8-2
    默认子网掩码:255.255.255.0
    私网地址:192.168.0.0/24-192.168.255.0/24
D类:主要用于组播
    1110 0000 - 1110 1111: 224-239
子网掩码的表示形式:
    192.168.100.100/255.255.255.0 <--> 192.168.100.100/24
子网掩码的作用:
    区分网络上的主机是否处于同一子网络中。

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

blob.png

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

编辑/etc/sysconfig/network-scripts/ifcfg-IFACE文件,指定IPADDR、NETMASK、GATEWAY和DNS;
编辑/etc/sysconfig/network-scripts/route-IFACE文件,指定网络路由;

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

配置IP:编辑/etc/sysconfig/network-scripts/ifcfg-IFACE文件 
配置路由:编辑/etc/sysconfig/network-scripts/route-IFACE文件 
dns服务器指定:编辑/etc/resolv.conf文件

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

     在线的主机使用绿色显示;

     不在线的主使用红色显示;

#!/bin/bash
#
ip='172.16.250'
 
for i in {1..254};do
  ping -c 5 -w 5 $ip.$i &> /dev/null
  result=$?
  if [ $result -eq 0 ];then 
    echo -e "\033[32m"$ip.$i is up.
  else 
    echo -e "\033[31m"$ip.$i is down.
 fi
done

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

路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE
配置当前主机的主机名:/etc/sysconfig/networkHOSTNAME=
网络接口识别并命名相关的udev配置文件: /etc/udev/rules.d/70-persistent-net.rules

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

ifconfig:
    ifconfig IFACE_ALIAS IPADDR
ip:
    ip addr add ip_addr/mask dev IFACE label alias_label
配置文件:
    ifcfg-IFACE_ALIAS
        DEVICE=IFACE_ALIAS

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

netstat: 
1、查看网络连接netstat –ltan 
2、查看路由netstat –r 
3、显示网络接口netstat–i
route:
查看路由route -n  
添加:routeadd:route add [-net|-host] target [netmask Nm] [gwGw] [[dev] If]
ip linkset  dev IFACE up /down 激活或禁用指定接口
ipaddr { add | del } IFADDR dev IFACE
ip route add  添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
ss命令:(相当于netstat ,但在非常繁忙状态下,是netstat是几倍速度)
      格式:ss [options] [ 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系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

rpm命令实现程序管理:
    安装: -ivh,--nodeps,--replacepkgs
    卸载:-e,--nodeps
    升级:-Uvh,-Fvh,--nodeps,--oldepackage
    查询: -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|enable|disabled]
 
  显示程序包:
    list
      # yum list [all | glob_exp] [glob_exp2][...]
      #yum list {available | installed | updates}[glob_exp][...]
 
  安装程序包
    yum install package1 [package2] [...]
 
      reinstall package1 [package2] [...](重新安装)
 
  升级程序包:
     update [package1] [package2] [...]
      升级软件包的同时也升级软件和系统内核 
 
     downgrade package1 [package2] [...](降级)
     upgrade [package1] [package2] [...]
      只升级软件包,不升级软件和系统内核
     
 
  检查可用升级:
    check-update
 
  卸载程序包:
    remove | erase package1 [package2] [...]
 
  查看程序包infomation:
    info[...]
 
  查看指定的特性(可以查看某文件)是由哪个程序包所提供:
    provides | whatprovides feature1 [feature2] [...]
 
  清理本地缓存:
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
 
  构建缓存: 
    makecache
 
  搜索
     search string1 [string2] [...]
 
     以指定的关键字搜索程序包名及summary 信息
 
  查看指定包所依赖的Capabilities:
     deplist package1 [package2] [...]
 
  查看yum事务历史:
     history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]
 
  安装及升级本地程序包:
 
  *localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    *localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)
 
  包组管理的相关命令:
     * groupinstall group1 [group2] [...]
       * groupupdate group1 [group2] [...]
         * grouplist [hidden] [groupwildcard] [...]
         * groupremove group1 [group2] [...]          
         * groupinfo group1 [...]

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

[root@CentOS6 ~]# mount /dev/cdrom /media/CentOS_6.4_Final/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@CentOS6 ~]# cd !$
cd /media/CentOS_6.4_Final/
[root@CentOS6 CentOS_6.4_Final]# rpm --import RPM-GPG-KEY-CentOS-6
[root@CentOS6 CentOS_6.4_Final]# vi /etc/yum.repos.d/yum.repo 
[localyum]
name=localyum
baseurl=file:///media/CentOS_6.4_Final
gpgcheck=1
enabled=1

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

   (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

   (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

   (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

   (4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
#
declare -i stotal=0
declare -i ktotal=0
for i in `ls /etc/rc.d/rc3.d | grep "^S"`;do
  echo "$i start"
  let stotal++
done
for i in `ls /etc/rc.d/rc3.d | grep "^K"`;do
  echo "$i stop"
  let ktotal++
done
echo "K file is $ktotal"
echo "S file is $stotal"

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

   (1) 脚本能接受用户名作为参数;

   (2) 计算此些用户的ID之和;

#!/bin/bash
#
declare -i idsum=0
if [ $# -le 0 ];then
  echo "Userage:bash.sh user1 user2 ..."
  exit 1
fi
for i in $*;do
  if id $i &> /dev/null;then
    idnum=`grep "$i" /etc/passwd | cut -d: -f3`
    idsum+=$idnum
  else
    echo "No exist $i "
  fi
done
echo "IDtotal is $idsum"

14、写一个脚本

   (1) 传递一些目录给此脚本;

   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash
#
declare -i foder=0
declare -i file=0
declare -i cfile=0
declare -i lfile=0
declare -i bfile=0
 
if [ $# -lt 1 ];then
  echo "Useage:bash.sh file1 file2 ..."
  exit 1 
else
for j in $*;do
  if [ -f $j ];then
    echo "This file is file"
    exit 1
  else
    for i in `ls $j`;do
        cd $j
        if [ -f $i ];then
          echo -e "\033[31m"$i is file.
          let file++
        elif [ -d $i ];then
          echo -e "\033[32m"$i is foder.
          let foder++
        elif [ -c $i ];then
          echo "$i is string file."
          let cfile++
        elif [ -L $i ];then
          echo "$i is link file."
          let lfile++
        elif [ -b $i ];then
          echo "$i is block file."
          let bfile++
        else
          echo "Unknow file."
          exit 2
        fi
    done
     
  fi
done
fi
echo "file total:$file"
echo "link file total:$lfile"
echo "String file total:$cfile"
echo "block file total:$bfile"
echo "foder file total:$foder"

15、写一个脚本

  通过命令行传递一个参数给脚本,参数为用户名

  如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin/bash
[ $# -ne 1 ] && echo "Please enter one user!!!" && exit
! id $1 &> /dev/null && echo "No this user." && exit
let a=`id -u $1`
if [ $a -ge 500 ]; then
    echo "$1 is common user."
else
    echo "$1 is system user."
fi

16、写一个脚本

   (1) 添加10用户user1-user10;密码同用户名;

   (2) 用户不存在时才添加;存在时则跳过;

   (3) 最后显示本次共添加了多少用户;

#!/bin/bash
for i in {1..10}; do
    if id user$i &> /dev/null ;then
        echo "user$i exists."
        continue 3
    else
        useradd user$i
        if [ $? -eq 0 ]; then
            echo "user$i" | passwd --stdin user$i &> /dev/null
            echo "Add user$i finished."
        let j++
        fi
    fi
done
echo "Add $j users."

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

#!/bin/bash
#
ip='172.16.250'
for i in {1..254};do
  ping -c 5 -w 5 $ip.$i &> /dev/null
  result=$?
  if [ $result -eq 0 ];then 
    echo "$ip.$i"
  fi
done

18、打印九九乘法表;

#!/bin/bash
for ((i=1;i<=9;i++)){
    for((j=1;j<=i;j++));do
        echo -e -n "$j*$i=$(($i*$j))\t"
    done
    echo 
}

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

(0)
BazingaBazinga
上一篇 2016-09-05
下一篇 2016-09-05

相关推荐

  • Linux运维实战之6:挂载/卸载磁盘分区

    上次博文我们具体讨论了Linux系统中磁盘的分区及格式化( http://www.178linux.com/60811),本次博文我们具体来说说分区的挂载哈! 【问题引入】 已经格式化好的分区如何与系统现有的文件系统建立关联(如何使用新分区)? 新的磁盘分区创建完成并格式化之后需要挂载(或装入)到目录树上才能被使用。 何谓挂载/卸载? 【答】将某个…

    Linux干货 2016-12-04
  • 关于IO的同步,异步,阻塞,非阻塞

    上次写了一篇文章:Unix IO 模型学习。恰巧在这次周会的时候,@fp1203 (goldendoc成员之一) 正好在讲解poll和epoll的底层实现。中途正好讨论了网络IO的同步、异步、阻塞、非阻塞的概念,当时讲下来,大家的理解各不相同,各执己见。搜索了网络上的一些文章,观点也各不相同,甚至连wiki也将异步和非阻塞当成一个概念在解释。  &…

    Linux干货 2015-04-02
  • linux计算机基础理论

    1. 计算机的组成及其功能 从基本结构上来讲,计算机可以分为五大部分: 运算器、存储器、控制器、输入设备、输出设备。 运算器的功能:实现算术运算和逻辑运算(与控制器组成CPU) 存储器功能:将输入设备接受到的信息以二进制的数据形式存到存储器中。 控制器的功能:将指令逐条从存储中取出,经译码分析后向全机发出相应的操作控制信号作用于其他部件,使各部件有条不紊地协…

    Linux干货 2018-03-04
  • 马哥Linux第六周作业

    网络管理 进程查看及管理之ps,top,htop,dstat,vmstat

    2018-01-20
  • linux第一周学习

      一周过去了,这周学习并新认识了不少内容。由一开始的萌逼状态,逐步清晰的认识了不少内容。相信我会越来越好的。 文件与目录 touch touch newfile         创建空文件touch oldfile          更新文件的三个…

    Linux干货 2017-09-02
  • N22-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。      2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为…

    Linux干货 2016-09-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 16:35

    完成的非常的不错,1题的排版在进行调整一下哈,6题中的脚本在颜色显示结果后应加\033[0m,7题在完善一下更完美,如ifcfg-eth0文件中的DEVICE、TYPE的含义和对应的值。