马哥教育网络班21期-第八周课程练习

第八周作业

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

  • 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代;

  • 网桥:网桥工作在OSI七层模型的物理层;其每个一个接口都是单独的冲突域,网桥将多个网络在数据链路层连接起来,网桥能够识别数据链路层中的数据帧,可以CRC方式校验数据帧的完整性,当网桥从一个网段收到一个数据帧,就会在数据库中登记(或者更新)数据帧的源地址属于这个网段,并检查数据包的目的地址。如果目的地址在数据库中属于另外一个网段,则网桥向该网段转发该数据帧;如果目的地址在数据库中没有记录,则网桥向除了源地址所在之外的其他所有网段转发(flood)该数据帧。网桥的所有端口属于同一个广播域,由于网桥的端口数量一般很少,而且现今交换机价格低廉化,网桥已经被交换机所取代;

  • 二层交换机:二层交换机工作在OSI七层中的数据链路层;可以把它看作是一个多端口的网桥,可以学习MAC地址并将其存储在其自身的MAC地址表里面,每个端口都是独立式带宽,各属于独立的冲突域;当交换机收源端口发往目的端口的数据帧后,将先学习源端口的MAC地址并记录到MAC地址表,然后查询自己的MAC地址表是否存在目的MAC地址,没有则进行除源端口外的所有端口数据泛洪,当收到目的MAC地址的回应后,将目的MAC地址学习进MAC地址表,下次数据转发直接发送到目的端口;交换机默认属于一个广播域内,但是可以通过vlan技术将广播域进行分离;二层交换机一般应用于网络中的接入层,用于用户PC或服务器的接入;

  • 三层交换机:三层交换机工作在OSI七层中的网络层;可以处理第三层网络层协议,用于连接不同网段(前提是同一类型的局域子网);支持部分路由功能,三层交换机可以像二层交换机那样通过MAC地址标识数据包,也可以像传统路由器那样在两个局域网子网之间进行功能较弱的路由转发;一次路由,多次转发,通过专用的ASIC芯片处理数据转发;三层交换机一般用于园区网的汇聚层或者核心层,由于其不支持广域网协议,故不能完全代替路由器的功能;

  • 路由器:路由器工作在OSI七层中的网络层,在网络层上连接不通网络,基于其内部的路由表进行数据转发,路由器可以连接不通类型的网络,例如局域网和广域网,专业处理复杂路由路径和复杂的网络连接;一般用于企业的外网出口或者少数用于企业不同地域机房的出口;

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

A、B、C类为单播地址,可配置在电脑或网络设备上;D类为组播(多播)地址;E类为保留地址;

  • A类地址:1.0.0.0-126.255.255.255;默认子网掩码:255.0.0.0;前8位二进制数为网络位,每个网络可用主机位:2^24-2;

  • B类地址:128.0.0.0-191.255.255.255;默认子网掩码:255.255.0.0;前16位二进制数为网络位,每个网络可用主机位:2^16-2;

  • C类地址:192.0.0.0-223.255.255.255;默认子网掩码:255.255.255.0;前24位二进制数为网络位,每个网络可用主机位:2^8-2;

  • D类地址:D类为多播(组播)地址,范围为224.0.0.0-239.255.255.255;

  • E类地址:E类为保留地址,范围为:240.0.0.0-255.255.255.254

特殊地址:

  • 0段位全0网段,默认不使用;

  • 127.0.0.0,环回地址网段;

  • 私有地址

    • 10.0.0.0/8

    • 172.16.0.0/16-172.31.255.255/16

    • 192.168.0.0/24-192.168.255.255./24

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

OSI参考模型:

数据单元 功能
应用层 数据 网络进程到应用程序。针对特定应用规定各层协议、时序、表示等,进行封装 。在端系统中用软件来实现,如HTTP等;
表示层 数据 数据表示形式,加密和解密;
会话层 数据 主机间通讯,管理应用程序之间的会话。规定通信时序 ;数据交换的定界、同步,创建检查点等;
传输层 数据段 在网络的各个节点之间可靠地分发数据包;
网络层 网络分组/数据包(路由器) 路由和(不一定可靠的)分发报文。路由( IP寻址),拥塞控制;
数据链路层 数据帧(交换机) 一个可靠的点对点数据直链。检错与纠错(CRC码);多路访问;寻址;
物理层 比特(集线器) 点对点数据直链,确保原始的数据可在各种物理媒体上传输,定义机械特性,电气特性等;

TCP/IP协议,这是一个真正广泛使用的协议簇;

对应OIS哪一层 涉及协议
应用层 应用层、表示层、会话层 Http,Telnet,DNS等
传输层 传输层 TCP、UDP等
网络互连层 网络层 IP、IPS等
网络接口层 数据链路层、物理层 Ethernet 802.3、PPP、X.23等

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

  • 动态获取(DHCP)

  • 手动指定

    • 配置主机的IP地址和掩码;

    • 配置默认网关,必要时需要指定精确路由;

    • 配置DNS服务器;

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

临时生效实例:
1、配置IP和掩码:
(1)ifconfig interface 192.168.1.1 netmmask 255.255.255.0
或 
(2)ip addr replace 192.168.1.1/24 dev eth0
2、配置默认网关
ip route add efault via 192.168.1.254 或
route add default ge 192.168.1.254

永久生效(配置文件)
1. 编辑/etc/sysconfig/networ-script/下的的接口配置文件,如ifcfg-eth0,该配置文件可以配置IP、掩码、网关、DNS等信息
2. 路由相关的配置文件:/etc/sysconfig/network-scripts-route-IFACE
3. DNS服务器指定文件:/etc/resolv.conf 4. setup图形界面选择网络配置

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

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

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

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

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

[root@qq htdocs]# cat /etc/sysconfig/network-scripts/ifcfg-eth0                 #文件名
DEVICE=eth0                 #接口名字
HWADDR=00:0C:29:5D:1B:80    #MAC地址
TYPE=Ethernet               #接口类型,以太网;
UUID=528d943c-4ffa-4974-a107-c5a1deabafb5   #唯一标示符
ONBOOT=yes                  #开机是否启动,no为开机不启动;
NM_CONTROLLED=yes           #是否启用NetworkManager图形界面配置工具
BOOTPROTO="static"          #获取IP的方式,还可以用“dhcp”动态获取
IPADDR=10.201.106.129       #IP地址
NETMASK=255.255.255.0       #子网掩码
GATEWAY=10.201.106.2        #网关
DNS1=10.201.106.2           #DNS地址,最多可以设置3个;

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

通过别名的方式增加第二地址:

  • ifcfg:ifconfig eth0:1 192.168.0.2/24 up

  • ip addr:ip addr add 192.168.0.2/24 dev eth0 label 'eth0:1'

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

常用的网络管理类工具有:ping、traceroute、ss、netstat、ip、ifconfig等;

示例1:使用ping检查目标连通性;
[root@qq yum.repos.d]# ping 10.201.106.2
PING 10.201.106.2 (10.201.106.2) 56(84) bytes of data.
64 bytes from 10.201.106.2: icmp_seq=1 ttl=128 time=0.575 ms

示例2:使用traceroute命令查看到底目的地经过多少跳路由
[root@qq yum.repos.d]# traceroute 8.8.8.8

示例3:使用netstat查看所有网络连接
         t:tcp协议相关
         -u:udp协议相关
         -w:raw socket相关
         -l:处于监听状态
         -a:所有状态
         -n:以数字显示IP和端口;
         -e:扩展格式信息
         -p:显示相关进程及PID
[root@qq yum.repos.d]# netstat -tuan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 192.168.1.1:53              0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:53           0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:35240               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:8080         0.0.0.0:*                   LISTEN      
tcp        0      0 10.201.106.129:22           10.201.106.1:62830          ESTABLISHED 
tcp        0      0 10.201.106.129:22           10.201.106.1:49387          ESTABLISHED 
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 :::23                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
tcp        0      0 :::43521                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
udp        0      0 192.168.1.1:53              0.0.0.0:*                               
udp        0      0 10.201.106.129:53           0.0.0.0:*                               
udp        0      0 127.0.0.1:53                0.0.0.0:*                               
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               
udp        0      0 0.0.0.0:771                 0.0.0.0:*                               
udp        0      0 0.0.0.0:59781               0.0.0.0:*                               
udp        0      0 127.0.0.1:792               0.0.0.0:*                               
udp        0      0 :::111                      :::*                                    
udp        0      0 :::57080                    :::*                                    
udp        0      0 :::771                      :::*  

示例4:使用ss查看所有网络连接
# ss -tuan

示例5:使用ss显示已连接状态的TCP连接
ss -tan state ESTABLISHED

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

RPM
  1、安装:
     rpm {-i|--install} [install-options] PACKAGE_FILE ...
            v:verbose
            -vv:更多的详细信息,安装过程
            -h:以#显示程序包管理执行进度:每个#表示2%的进度

     rpm -ivh PACKGE_FILE ...:程序包安装,并显示过程;

         [install-options]
             --test:测试安装,但不真正执行安装过程;dry run模式;
             --nodeps:忽略依赖关系;遇到循环关系可强制安装,比如要装A和B,但是A依赖于B,B也依赖于A;
             --replacepkgs:重新安装,可能会导致新生成的配置文件不生效,或者覆盖掉旧的配置文件;
             --ignoreos:忽略操作系统;
             --nodigest:不检查包完整性;
             --nosignature:不检查来源信息合法性,签名
             --noscripts:安装不执行程序包脚本片段,默认四样都不执行
                 %pre:安装前脚本; --nopre
                 %post:安装后脚本;--nopost
                 %preun:卸载前脚本;--nopreun
                 %postun:卸载后脚本;--nopostun

  2、升级:
      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
      rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

          upgrage:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
          freeshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;

          rpm -Uvh PACKGE_FILE ...
          RPM -Fvh PACKGE_FILE...
             --oldpacage:降级;旧版的程序包替换新版的程序包;
             --force:强行升级;

          注意:(1)不要对内核做升级操作,Linux支持多内核版本并存,因此直接安装新版本内核;
                (2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME_rpmnew)后保留;

    3、查询:
        rpm {-q|--query} [select-options] [query-options]
            select:哪一种程序包;
            query:使用什么方式查询;

              [select-options]
                -a:所有包
                -f:查询指定的文件由哪个程序安装生成
                -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包做查询
                --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包提供;
                --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

              [query-options]
                -changelog:查询rpm包的changelog;
                -c:查询程序的配置文件
                --confilcts:
                d:查询程序包的帮助文档;
                -i:包的相关信息
                -L:单独列出包的许可证;
                -l:查看指定的程序包安装后生成的所有文件;
                --script:程序包自带的脚本片段
                -R:查询指定的程序包所依赖的CAPABILITY;
                --provides:列出指定程序包所提供的CAPABILITY;

                常用查询组合:
                    -qi PACKAGE,-qf FILE,-qc  PACKAGE,-ql PACKAGE,-qd PACKAGE
                    qpi PAKAGE_FILE,-qpl PACKAGE_FILE
                    -qa:所有已安装的包    

    4、卸载
       rpm {-e | --erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME....  

    5、校验:
       rpm    {-V|--verify}   [select-options]   [verify- options]
        意思:校验一个程序包,就是去比较一个以安装的程序包文件,与我们此前在安装时存储在RPM数据库留存的信息进行比较,这样有什么用,通过数据库里面的校验码查看用户对否对文件进行了修改;安装完修改过什么,都能查询得到;

YUM:

    1、显示仓库列表:
     repolist [all|enabled|disabled]

    2、显示程序包
            list
                  #  yum list [all | glob_expl] [glob_exp2] [...]
                  # yum list {available|installed|available} [glob_exp1] [...]

    3、安装程序包
            install package1 [package2] [...]

            reinstall package1 [package2] [...]    (重新安装)

    4、升级程序包:
            update [package1] [package2] [...]

            downgrade package1 [package2] [...]   (降级)

    5、检查可用升级:
            check-update

    6、卸载程序包:
           remove | erase package1 [package2] [...]

    7、查看程序包information
            info [...]

    8、查看指定的特性(命令、文件)是由哪个程序包所提供:
            provides  |  whatprovides  feature1  [feature2]  [...]

    9、清理本地缓存:
            clean  [ packages | metadata | expire-cache |  rpmdb | plugins | all ]

    10、构建缓存:
            makecache

    11、搜索:
            search string1 [string2] [...]
            以指定的关键字搜过程序包及summary信息;

    12、查看指定包所依赖的capabilities:
    deplist package1 [package2] [...]

    13、查看yum事务历史:
            history  [info|list|packages-list|packages-  info|summary|addon-info|redo|undo|roll-

    14、安装及升级本地程序包(可以直接使用install和update)
    localinstall rpmfile1 [rpmfile2] [...]
       (maintained for  legacy  reasons  only  -  use
   install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained  for  legacy  reasons  only  - use
   update)

    15、包组管理的相关命令:
    * groupinstall group1 [group2] [...]  :安装指定包组
    * groupupdate group1 [group2] [...] :升级包组
    * grouplist [hidden] [groupwildcard] [...]        :显示指定包组
    * groupremove group1 [group2] [...]               :移除指定包组
    * groupinfo group1 [...]                           :查看包组信息

    16、创建yum仓库:
        createrepo [options] <directory>

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

1、建立要挂载光盘的目录  
\# mkdir /mnt/media  
2、挂载光盘至该目录
\# mount /dev/cdrom /mnt/media
3、编辑/etc/yum.repos.d/CentOS-Media.repo配置文件指定yum仓库路径
[c6-CD]
name=CentOS-$releasever - CD
baseurl=file:///media/media/
gpgcheck=0
enabled=1
4、重新生成yum仓库
[root@qq yum.repos.d]# yum repolist

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

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

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

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

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

    #!/bin/bash
    #
    declare -i k=0
    declare -i s=0
    
    for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do
        echo "$i stop"
        let k++
    done
    
    for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do
        echo "$i start"
        let s++
    done
    
    echo "K_beginfile:$k."
    echo "S_beginfile:$s."

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

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

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

    #!binbash
    #
    declare -i number=0
    declare -i sum=0    
    
    for i in $@; do
        if id $i &> /dev/null; then
        number=`id -u $i`
        let sum+=$number
        else
        echo "$i is not exist"
        fi
    done
    
    echo "The user_id_sum is:$sum"

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 "$i is file".
              let file++
            elif [ -d $i ];then
              echo -e "$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"

抄自N21-Lion狮子同学。。。I'm Sorry!

15、写一个脚本

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

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

    #!/bin/bash
    
    for i in $@; do
        if ! id $i > /dev/null; then
        echo "$i user is nof found"
        else
        userid=`id -u $i`
        if [ $userid -ge 500 ];then
            echo "user $i is common user"
        else
            echo "user $i is system user"
        fi
        fi
    done

16、写一个脚本

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

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

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

    #!/bin/bash
    #
    
    declare -i sum=0
    
    for ((i=1;i<=10;i++)); do
        if (id user$i &> /dev/null);then 
        echo "user$i is exist"
        else
        useradd user$i
        echo "user$i" | paswd --stdin user$i &> /dev/null
        let sum++
        fi
    done
    
    echo "added user number:$sum"

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

    #!/bin/bash
    #

    net=172.16.250.

    for i in {20..100}; do
        ping $net$i -c 2 -w 2  &> /dev/null 
        if [ $? -eq 0 ];then
        echo  "$net$i is up "
        fi
    done

18、打印九九乘法表;

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

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

(0)
Net21_仲樂Net21_仲樂
上一篇 2016-09-01
下一篇 2016-09-01

相关推荐

  • 初学Linux之 vim 文本编辑器

    vim 的模式切换;命令模式相关操作,拓展命令模式的相关操作;可视化和多窗口;定制vim的工作特性;vim帮助

    2017-12-31
  • 集中练习5-磁盘分区、文件系统挂载、RAID管理

    集中练习5-磁盘分区、文件系统挂载、RAID管理

    Linux干货 2017-10-27
  • rsync+inotify实现数据的实时同步更新

      rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题。 一、rsync的优点与不足 rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的…

    2018-01-06
  • sed和awk和数组实践-week15

    1、总结sed和awk的详细用法; (1) sedsed:Stream EDitor,流编辑器,行编辑器 基本原理:一次从文本中读取一行,放到sed自己的工作车间加工, 该工作车间叫做模式空间(pattern space)判断该行是否符合过滤模式, 如果符合过滤模式: 送往标准输出(终端) 执行编辑操作, 从模式空间中处理以后,处理过后送到标准输出(不一定有…

    Linux干货 2017-05-06
  • Linux之Centos系统的启动流程详述

    概述 了解系统的启动流程,有助于我们了解Linux系统上的一些工作原理,有助于我们深入的理解一个系统的运作方式,那么本篇就以CentOS6系统为例,介绍一下有关Linux系统启动相关的内容,分为一下几个部分 1、Linux系统的一些基础概念 2、CentOS6上的启动流程概述 第一章 Linux系统的一些基础概念 Linux系统的组成部分:内核(kernel…

    Linux干货 2016-09-29
  • Linux计算机基础-入门2016-07-19

    Linux计算机基础-入门2016-07-19 计算机系统的组成部分 计算机系统由硬件系统和软件系统两大部分组成 硬件系统 冯.诺依曼体系结构: 1946年数学家冯.诺依曼提出运算器,控制器,存储器,输入设备,输出设备。 具体变现为一下硬件: 运算器,控制器  ——>  CPU 存储器  …

    Linux干货 2016-08-04

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 23:00

    作业完成的非常不错,知识点总结非常到位,脚本写得非常的漂亮,思路清晰,抄的别人脚本,你一定要默默的把此脚本写5遍。加油!