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

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

集线器

集线器也称HUB,工作在OSI七层结构的第一层物理层,属于共享型设备,接收数据广播发出,在局域网内一般都是星型连接拓扑结构,每台工作站都连接到集线器上。
由于集线器的带宽共享特性导致网络利用效率极低,一般在大中型的网络中不会使用到集线器。

网桥

网桥(Bridge)也称桥接器,是连接两个局域网的存储转发设备,用它可以完成具有相同或相似体系结构网络系统的连接。
网桥和交换机一样都是工作在OSI模型的第二层(数据链路层),可以看成是一个二层路由器(真正的路由器是工作在网络层,根据IP地址进行信包转发)。
网桥可有效的将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。

二层交换机

二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机。
二层交换技术的发展已经比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。

三层交换机

三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。
对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。

路由器

路由器跟集线器和交换机不同,是工作在OSI的第三层(网络层),根据IP进行寻址转发数据包。
路由器是一种可以连接多个网络或网段的网络设备,能将不同网络或网段之间(比如局域网——大网)的数据信息进行转换,并为信包传输分配最合适的路径,使它们之间能够进行数据传输,从而构成一个更大的网络。
路由器具有最主要的两个功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等

区别

网桥       工作在数据链路层
集线器     工作在物理层,所有端口共享一个mac地址,共享带宽
二层交换机 工作在数据链路层,每个端口有自己的mac地址,独享带宽
三层交换机 工作在数据链路层,网络层,拥有部分路由功能
路由器     工作在网络层

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

IP地址分类

A类用于大型网络(能容纳网络126个,主机1677214台)
B类用于中型网络(能容纳网络16384个,主机65534台)
C类用于小型网络(能容纳网络2097152个,主机254台)
D类用于组播(多目的地址的发送)
E类用于实验

子网掩码的表示形式

A.点分十进制,如255.255.255.0
B.ip地址后加'/'以及[1-32]的数字,如192.168.1.1/24

子网掩码的作用

A.屏蔽IP地址的一部分以区别网络标识和主机标识
B.将一个大的IP网络划分为若干小的子网络

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

OSI模型

应用层;提供应用程序之间通信;
表示层:处理数据格式、数据加密;
会话层:建立,维护,管理会话连接涉及操作系统和网络接口和各种数据;
传输层:建立主机端到端连接。涉及物理设备:四层交换机
网络层:寻址和路由选择。涉及物理设备:路由器
数据链路层:提供介质访问,链路管理,将数据分帧并处理流控制。涉及物理设备:网卡,网桥,交换机
物理层:比特流传输,将数据转换为可通过物理介质传送的电子信号。涉及物理设备:双绞线、同轴电缆,集线器

TCP/IP模型

应用层(对应OSI模型的应用层,会话层,表示层)
传输层(对应OSI模型的传输层)
网络互联层(对应OSI模型的网络层)
网络接口层(对应OSI模型的数据链路层和物理层)

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

A.使用ifconfig查看网卡配置信息,看主要使用的网卡名称
B.到/etc/sysconfig/network-scripts/目录下查找对应的网卡配置文件
C.主要配置项
DEVICE(设备名称)TYPE(设备类型。端口为Ethernet) ONBOOT(系统启动时读取) BOOTPROTO=static(ip配置协议。当前为静态ip,可设置DHCP,) 
IPADDR(ip地址) NETMASK(子网掩码) GATEWAY(网关地址) DNS1(DNS服务器地址)
D.重启网络服务 service network restart
E.在CLI中输入ping baidu.com测试网络连接

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

A.ifconfig eth0 IP/mask
B.ip addr add IP device eth0
C.Linux网络属性配置的tui(text user interface):system-config-network-tui
D.使用setup图形界面设置

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 \033[0m"
  else 
    echo -e "\033[31m $ip.$i \033[0m"
 fi
done

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

网卡配置文件`/etc/sysconfig/network-scripts/ifcfg-网卡名`
DEVICE                  #网卡名
BOOTPROTO               #ip地址分配方式:dhcp、static
HWADDR                  #MAC地址
NM_CONTROLLED=yes       #network manager参数
ONBOOT=                 #网卡是否开机激活
TYPE=                   #网络类型
IPV6INIT=no             #禁止IPV6
USERCTL=no              #是否允许非root用户控制该设备,为no,只能root用户更改
IPADDR=                 #IP ADDR
GATEWAY=                #gateway地址
NETMASK=                #掩码
DNS1=                   #dns1地址
DNS2=                   #dns2地址

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

A.ifconfig eth0 IP/mask
B.ip addr add IP device eth0
C.Linux网络属性配置的tui(text user interface):system-config-network-tui
D.使用setup图形界面设置

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

netstat

netstat -tan   #查看当前系统网络连接情况
        -t tcp协议相关连接
        -u udp协议相关连接
        -l 监听状态的连接
        -a 所有连接
        -n 以数字显示ip和端口

route

route [-nee]
        -n  以数字显示ip和端口
        -ee 显示详细信息
        
route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    [root@itop ~]# route add -host 192.168.100.20 netmask 255.255.255.0 dev eth0
        
route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    [root@itop ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0

ss

[root@itop ~]# ss -tnl   #与netstat类似,数据量较大时ss更有优势

ifconfig

ifconfig 设备名称 up|down
        up 启动指定网络设备/网卡。
        down 关闭指定网络设备/网卡。

ifconfig 设备名称 ip地址  #配置设备ip地址

ifconfig 设备名称 mtu <字节数>
        设置网卡的最大传输单元 (bytes)

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

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@itop ~]#mount /dev/cdrom /mnt
[root@itop ~]#vim /etc/yum.repos.d/local.repo
[local]
name=local_repo
baseurl=file:///mnt 
enabled=1 
gpgcheck=0 
[root@itop ~]#yum clean all
[root@itop ~]#yum makecache

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开头的文件有$k个!"
echo "S开头的文件有$s个!"

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

(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;

#!/bin/bash
#
declare -i idsum=0
if [ $# -le 0 ];then
  echo "Usage: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 "$i don't exist "
  fi
done
echo "用户ID之和为$idsum"

14、写一个脚本

(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash
declare -i D=0
declare -i F=0
if [ $# -le 0 ];then
  echo "Usage:bash .sh directory|file  ..."
  exit 1
fi
for d in $@
do
  for i in `ls $d`
  do
    if [ ! -e $i ]; then
        echo "$i No such file!"
    continue 
    elif [ -d $i ]; then
        echo "$i is type directory!"
        let D++
    elif [ -f $i ]; then
        echo "$i is type file!"
        let F++
    else
        echo "$i is Other type!"
    fi
  done
done
echo "Directory count is $D"
echo "File count is $F"

15、写一个脚本

通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin/bash
#
if [ $# -lt 1 ];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`
    if [ $idnum -gt 500 ];then
       echo "$i user is ordinary user."
    else
         echo "$i is system user."
    fi
  else
    echo "$i don't exist"
  fi
done

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 num++
        fi
    fi
done
echo "Add $num 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 
}

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

(0)
N21_郁蓝N21_郁蓝
上一篇 2016-09-01
下一篇 2016-09-01

相关推荐

  • iptables

    Evernote Export   基于本机服务器的iptables: 创建、重命名、删除自定义chain ~]# iptables -N testchain ~]# iptables -nL Chain INPUT (policy ACCEPT) target     prot opt source    …

    Linux干货 2016-11-20
  • week3:cut,sort,grep等shell工具的应用及用户,组管理类命令

    1、列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次只显示一次即可    who | cut -d' ' -f1 | sort –u 2、取出最后登录到当前系统的用户相关信息    who | cut -d' ' -f1 | tail -1 | id 3、取出当…

    Linux干货 2016-11-20
  • Linux中正则表达式和grep的使用

    正则表达式在Linux经常配合grep,sed和awk等用于搜寻关键字。正则表达式分为正则表达式和扩展正则表达式: 一、正则表达式 1.1 元字符: .:匹配任意字符    []:匹配[]中的任意一个字符 [^]:匹配[]以外的任意字符 [:alpha:]大小写英文字母 [:digit:]:十进制数字 [:xdigit…

    Linux干货 2017-04-08
  • 正则表达式及其用法

    正则表达式及其用法 1.   什么是正则表达式 正则表达式是Global search REgular expression and Print out the line的缩写。是一类用字符所书写的模式,其中许多字符并不表示其字面意义,而是表达控制或通配等功能。 在Linux中,用正则表达式搜索文本的常用命令: grep: 使用基本正则表…

    Linux干货 2015-09-14
  • LAMP基于rsyslog+loganalyzer实现日志集中管理及分析

    前言 作为一名运维工程师,查看分析系统日志是每天必做的功课,但每次查看日志都得一台服务器一台服务器的看,几台服务器还可以这么对付,但如果管理成百上千台线上服务器,这种方法就捉襟见肘了。于是我们就需要用到日志服务器了,但是如何能让它更直观的显示呢?loganalyzer是一个不错的选择,本文将讲解如何使用rsyslog+loganalyze实现日志统一管理及分…

    Linux干货 2015-04-27
  • javascript快速入门

    标识符多了一个美元符号python中只有字母和下划线和数字,数字不能开头数据类型有number(整形和浮点型),boolean,string,null,undefined(声明未赋值),symbol(新引入),object类型(基本类型和特殊类型外的其他类型) 引入一个变量要先申明,var a,let b常量类型,声明时定义,python中不存在const …

    Linux干货 2018-01-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 22:50

    博客作业写得非常的好,32个赞,知识点总结的非常好。^-^