马哥教育网络21期+第八周练习博客

马哥教育网络21期+第八周练习博客 #

1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
集线器:工作于ISO模型的物理层,防止由于距离远,信号衰减;
网桥:用来连接不同网段,隔离冲突域;
二层交换机:二层交换机一般做为了三层交换机以下,利用设备mac地址进行通信,可以划分vlan,隔离广播域;
三层交换机:用于核心数据转发,不仅可以划分广播域,也可以实现路由转发功能;
路由器:实现路由转发功能,并且可以对路由进行优化以及限制功能,通常部署在边界或三层交换机之上;

2、IP地址的分类有哪些?子网掩码的表示形式及其作用;
    IP地址分为5类:A类,B类,C类,D类,E类;
    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

3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层;
    物理层:网线,集线器
    数据链路层:网卡,网桥
    网络层:路由器
    传输层:四层交换机
    应用层:计算机的各种数据
TCP/IP四层模型:物理层,网络层,传输层,应用层;


4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
    1,首先物理层需要将网线或ip地址与互联网配置在同一个网段当中;
    2,使用ifconfig命令配置ip地址,这里请注意ifconfig配置命令在系统重新启动之后需要重新配置;
    3,如上层没有网络转发功能,需要使用route -n配置路由转发;


5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
    Liunx网络属性配置的相关配置文件:/etc/sysconfig/network-scripts/文件下;
    DEVICE:此配置文件应用到的设备;
    HWADDR:对应的设备的MAC地址;
    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
    NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;
    ONBOOT:在系统引导时是否激活此设备;
    TYPE:接口类型;常见有的Ethernet, Bridge;
    UUID:设备的惟一标识;
下面看一下具体的配置:
    [root@localhost network-scripts]# cat ifcfg-eth0 
    DEVICE=eth0-->设备名称
    TYPE=Ethernet-->设备名称
    UUID=840aafa6-9d45-43a1-ba88-dd3be9f3ff1e-->设备的唯一标识
    ONBOOT=no-->系统引导时是否激活此设备
    NM_CONTROLLED=yes-->此网卡是是否接受NM控制;
    BOOTPROTO=none-->激活此设备使用的ip地址配置协议;
    HWADDR=08:00:27:B5:54:45
    IPADDR=192.168.1.5-->ip地址
    PREFIX=24
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=yes
    IPV6INIT=no
    NAME="System eth0"
这里要注意配置完此配置文件需要使用service network restart重新激活此网络功能!
这里的路由配置文件:/etc/sysconfig/network-scripts/route-IFACE
网络接口识别并命名相关的udev配置文件:/etc/udev/rules.d/70-persistent-net.rules

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

[root@wanghongkai bin]# cat ping.sh 
    #!/bin/bash
    declare -i i=1
    net="192.168.56"
    declare -i j=0
    declare -i k=0
    while [ $i -le 254 ];do
      ping -c 1 -w 1 $net.$i &> /dev/null
        if [ $? -eq 0 ]; then
        echo -e "\033[32m $net.$i is up. \033[0m"
              let j++
        else
            echo -e "\033[31m $net.$i is down. \033[0m"
          let k++
        fi
        let i++
    done
    echo -e "\033[32m up is $j \033[0m"
    echo -e "\033[31m down is $i \033[0m"

7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
Liunx网络属性配置的相关配置文件:/etc/sysconfig/network-scripts/文件下;
    DEVICE:此配置文件应用到的设备;
    HWADDR:对应的设备的MAC地址;
    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
    NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;
    ONBOOT:在系统引导时是否激活此设备;
    TYPE:接口类型;常见有的Ethernet, Bridge;
    UUID:设备的惟一标识;
下面看一下具体的配置:
    [root@localhost network-scripts]# cat ifcfg-eth0 
    DEVICE=eth0-->设备名称
    TYPE=Ethernet-->设备名称
    UUID=840aafa6-9d45-43a1-ba88-dd3be9f3ff1e-->设备的唯一标识
    ONBOOT=no-->系统引导时是否激活此设备
    NM_CONTROLLED=yes-->此网卡是是否接受NM控制;
    BOOTPROTO=none-->激活此设备使用的ip地址配置协议;
    HWADDR=08:00:27:B5:54:45
    IPADDR=192.168.1.5-->ip地址
    PREFIX=24
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=yes
    IPV6INIT=no
    NAME="System eth0"
这里要注意配置完此配置文件需要使用service network restart重新激活此网络功能!

8、如何给网络接口配置多个地址,有哪些方式?
1)  ifconfigetho IP/mask
2)  ipaddr add ip device etho
3)  Linux网络属性配置的tui(text user interface):system-config-network-tui
4)  使用setup找到;

9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
netstat:-r显示内核路由信息
        -n数字格式
ss: -t: tcp协议相关
    -u: udp协议相关
    -w: 裸套接字相关
    -x:unix sock相关
    -l: listen状态的连接
    -a: 所有
    -n: 数字格式
    -p: 相关的程序及PID
    -e: 扩展的信息
    -m:内存用量
    -o:计时器信息
常用组合:-tan,-tanl,tanlp,-uan


10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
    rpm:-v:显示详细信息
        -vv:显示更多丑陋的调试信息
        -h:以#显示程序包管理执行进度,每个#表示2%的进度
        -U:升级
        --oldpackage:降级
        --force:强行升级
        -a:查询当前系统已安装的程序包
        -f:查询指定的文件由那个程序安装生成
        --changelog:查询rpm包的changlog
        -c: 查询程序的配置文件
        -d: 查询程序的文档
        -i: information
        -l: 查看指定的程序包安装后生成的所有文件;
        --scripts:程序包自带的脚本片断
        -R: 查询指定的程序包所依赖的CAPABILITY;
        --provides: 列出指定程序包所提供的CAPABILITY;
        这里使用man rpm查看各个命令使用方式;
        yum:解决了程序包的依赖关系;
            这里我已经安装了新的操作系统,并将系统中的yum源更改为阿里云的yum源:
            [root@localhost ~]# cd /etc/yum.repos.d/
            [root@localhost yum.repos.d]# ls
            CentOS-Base.repo       CentOS-Media.repo                 epel.repo
            CentOS-Base.repo.bach  CentOS-Vault.repo                 epel-testing.repo
            CentOS-Debuginfo.repo  epel-release-latest-6.noarch.rpm

11、如何使用发行版光盘作为yum repository,请描述该过程。
    这里先挂载新的光盘并创建目录:
    将光盘进行挂载:mount -r -t iso9660 /dev/cdrom /media/cdrom
    创建yum源中的配置文件;
    这里给yum源中的配置文件逐一解释:
    name=新建yum名称
    baseurl:指定yum源的地址
    enabled:是否启用
    gpgcheck:是否需要验证
这里有必要说一下编译安装:
    因为有的软件是无法通过yum,rpm等方法进行安装,这时候我们就需要进行源代码的编译安装;



12、写一个脚本,完成以下功能
   (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
   (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
   (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
   (4) 分别统计S开头和K开头的文件各有多少;
    [root@localhost bin]# cat  rc.sh
    #!/bin/bash
    #
    #
    cd $1
    for i in $(ls K*);do
       echo "$i.stop"
        let t++
    done
    for j in $(ls S*);do
       echo "$j.start"
       let u++
    done
    echo "K is $t"
    echo "S is $u"


13、写一个脚本,完成以下功能
   (1) 脚本能接受用户名作为参数;
   (2) 计算此些用户的ID之和;
    [root@wanghongkai bin]# cat sum6.sh 
    #!/bin/bash
    #
    read -p "input your user name " nameuser
    while [ ${nameuser} != "quit" ];do
        id ${nameuser} &> /dev/null && result=0 ||result=1
        if [ ${result} -eq 1 ];then 
            read -p "Please input your user name again,your user name is not exist: " nameuser 
            continue
        fi    
        userid=$(id -u ${nameuser})
        let sumid+=$userid
        read -p "input your user name again:" nameuser
    done
        echo "the sum of these user's ID is ${sumid}."


14、写一个脚本
   (1) 传递一些目录给此脚本;
   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
    [root@localhost bin]# cat file2.sh 
    #!/bin/bash
    #
    cd $@
    for file in $(ls ); do
    if [ -f $file ]; then
    echo "Common file."
    let i++
    elif [ -L $file ]; then
    echo "Symbolic file."
    let j++
    elif [ -d $file ]; then
    echo "Directory."
    let y++
    elif [ -S $file ];then
    echo "The socket file."
    let u++
    elif [ -c $file ];then
    echo "Character device file."
    let o++
    else
    echo "Other type."
    let p++
    fi
    done
    #
    echo "Common file $i."
    echo "Symbolic file $j."
    echo "Directory $y."
    echo "The socket file $u."
    echo "Character device file $o."
    echo "Other type $p."




15、写一个脚本
  通过命令行传递一个参数给脚本,参数为用户名
  如果用户的id号大于等于500,则显示此用户为普通用户;
    [root@wanghongkai bin]# cat yonghu.sh 
    #!/bin/bash
    #
    read -p "shu ru yong hu ming:" user
    function ID {
     i=`cat /etc/passwd | grep "^$user" | cut -d':' -f3`
     while true; do
      if [ $i -le 500 ];then
        echo "$user is adminhuser."
      else
        echo "$user is hellouser."
      fi
      break
    done
    }
    #
    while true; do 
       ID
       break
    done


16、写一个脚本
   (1) 添加10用户user1-user10;密码同用户名;
   (2) 用户不存在时才添加;存在时则跳过;
   (3) 最后显示本次共添加了多少用户;
使用while方法:
    [root@wanghongkai bin]# cat user.sh 
    #!/bin/bash
    declare i=1
    while [ $i -le 10 ]; do
      if id user$i &> /dev/null; then
        echo "user$i cun zai."
      else 
        useradd user$i &> /dev/null && echo "user$i" | passwd --stdin user$i &> /dev/null
        echo "user$i yi jing chuangjian."
      fi
      let i++
    done





17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
使用while方法实现:
    [root@wanghongkai bin]# cat ping.sh 
    #!/bin/bash
    declare -i i=1
    net="192.168.56"
    declare -i j=0
    declare -i k=0
    while [ $i -le 20 ];do
      ping -c 1 -w 1 $net.$i &> /dev/null
        if [ $? -eq 0 ]; then
        echo "$net.$i is up."
              let j++
        else
          let k++
        fi
        let i++
    done
    echo "up is $j"


18、打印九九乘法表;
for方法实现:
    [root@wanghongkai bin]# cat for99.sh 
    #!/bin/bash
    for i in {1..9};do
      for j in {1..9};do
       if [ $j -le $i ]; then
        echo -n -e "${i}X${j}=$[$i*$j]\t"
       fi
      done
      echo
    done

[root@wanghongkai bin]# cat 1.sh 
#!/bin/bash
#
for ((i=1;i<=9;i++));do
  for ((j=1;j<=i;j++));do
    echo -n -e "${j}X${i}=$[$j*$i]\t"
  done
  echo
done

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

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

相关推荐

  • MySQL or MariaDB 简介

    DBMS:数据库管理系统 RDBMS:关系型数据库管理系统    总之:他们都是一个数据管理程序;大多都是CS架构,都有专门的通信协议进行数据交换 关系模型:               表(行或者列):二维关系 设计范式:       &…

    Linux干货 2017-01-12
  • LAMP (php-fpm模式)部署出现的奇葩问题

    1. 安装环境:(cent6.5) yum install -y php php-devel httpd  php-fpm mysql 2. 修改配置文件 vim /etc/httpd/conf/http.conf 注释掉DocumentRoot vim /etc/httpd/conf.d/vhost.conf <VirtualHost *:…

    2017-04-10
  • 用户管理简述

    组内用户管理汇总 基于组来管理用户 相关命令:gpasswd groupmems 添加用户 gpasswd -a wangcai group :向group里添加用户 wangcai gpasswd -M wangcai,xiaoqiang group :向group里批量添加xiaoqiang wangcai ,不过这个方式会覆盖之前的组员 groupme…

    2017-02-23
  • mysql5.5.32多实例配置

    操作系统:CentOS release 6.7 (Final) 内核版本:2.6.32-573.el6.x86_64 mysql版本号:mysql-5.5.32 1)安装mysql所需的依赖包 # adduser mysql -s /sbin/nologin -M # mkdir -p&n…

    Linux干货 2016-12-05
  • linux命令简单应用

    创建/tmp目录下的:a_c, a_d, b_c, b_d touch /tmp/{a,b}_{c,d} [root@bogon ~]# tree /tmp /tmp |– a_c |– a_d |– b_c |– b_d 创建/tmp/mylinux目录下的: mylinux/ ├── bin ├── boo…

    Linux干货 2016-11-06
  • 苦上半年时间

    这是一种享受

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 18:17

    完成的非常好,其中还用几种方法实现,非常的棒