马哥教育网络班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

相关推荐

  • sed文本处理工具

    Sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转…

    Linux干货 2017-12-02
  • httpd服务归纳:httpd简介与基本安装

    一、httpd 简介  1. httpd 历史: httpd daemon 最早诞生于1995年二月, 伊利诺伊大学香槟分校的美国国家超级计算应用中心(NCSA),由Rob McCool开发。当这个项目完成后,Rob 老兄离开RCSA以后,这个项目组就解散了,这个项目也随之终止。 但是,由Brian Behlendorf 和 Cliff …

    Linux干货 2015-05-07
  • 文本查看及处理工具

    文本查看及处理工具 wc wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数 语法 wc(选项)(参数) 选项 -c或–bytes或——chars:只显示Bytes数; -l或——lines:只显示列数; -w或——words:只显示字数。 参数 文件:需要统计的文件列表 实例 [root@localhost tmp]# cat …

    Linux干货 2018-03-18
  • M20 – 1- 第二周博客(2):Linux的常用命令与通配符

    1、Linux的常用命令 pwd 命令 简介: Print the name of the current working directory. 格式: pwd [-LP] 实例1 [root@centos6 local]# pwd  &n…

    Linux干货 2016-08-03
  • 第二周作业

    新建 Microsoft Word 文档.docx

    Linux干货 2016-12-13
  • 学习shell scripts

    1. 为什么要学习shell编程?          许多人会问,为什么要学习shell脚本编程?我学的是linux,又不是编程,其实对于个人用户可能用处不是很大,但是当你在为公司的成千上完的服务器做维护时,可能没有shell编程的话可能把人累死也无法完成任务,一千台服务器要做相…

    Linux干货 2016-08-18

评论列表(1条)

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

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