从Linux小白到大牛——与狼共舞的日子8

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

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


  • 网桥是第2层的设备,它设计用来创建两个或多个LAN分段。其中,每一个分段都是一个独立的冲突域。网桥设计用来产生更大可用宽带。它的目的是过滤LAN的通信流,使得本地的通信流保留在本地,而让那些定向到LAN其他部分(分段)的通信流转发到那里去。每一台网络设备在NIC(网络接口卡)中都有一个惟一的MAC(介质访问控制)地址。网桥会记录它每一边的MAC地址,然后基于这张MAC地址表作出转发决策。

  • 集线器是物理层的共享设备,不能识别MAC地址和IP地址,局域网内数据包在HUB上是以广播的方式传播的,由每一台终端通过验证数据报头的MAC地址来确定是否接收。如果传输过程中发生碰撞,则需要重新发送数据!它的工作模式是半双工的,同一时刻只能有两个端口传送数据,所有端口共享带宽。

  • 交换机工作在数据链路层,交换机内部会形成一个端口和MAC地址的MAC表,通过数据报的MAC地址将数据发往指定的端口,因此交换机可用于划分数据链路层的的冲突域。交换机的工作模式有全双工,半双工和全双工/半双工自适应的工作模式。

  • 二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。

  • 三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。 传统交换技术是在OSI网络标准模型第二层–数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。

  • 路由器工作在网络层,负责两个局域网之间按帧传输数据,路由器通过比对路由表将每一帧传到指定的目的地,路由器的工作模式是全双工的。

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


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

E类:
   240-255

子网掩码是一个32位地址,是与IP地址结合使用的一种技术。
它的表示形式有两个:
  (1)通常的表示方式,如:255.255.255.0
  (2)类似192.168.100.0/24,表示子网掩码是24位,子网掩码为:255.255.255.0,
     用二进制表示为:11111111 11111111 11111111 00000000
它的主要作用有两个:
  (1)用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
  (2)用于将一个大的IP网络划分为若干小的子网络。

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


从Linux小白到大牛——与狼共舞的日子8 从Linux小白到大牛——与狼共舞的日子8

  • 物理层

规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。在这一层,数据的单位称为比特(bit)。

  • 数据链路层

在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。

  • 网络层

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。

  • 传输层

为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。

  • 会话层

在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。

  • 表示层

主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。

  • 应用层

为操作系统或网络应用程序提供访问网络服务的接口。

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


1.用ifconifg命令查看网卡的名称

[root@localhost ~]# ifconfig
eth0  Link encap:Ethernet  HWaddr 00:0C:29:4E:BB:E3  
  inet addr:192.168.82.56  Bcast:192.168.82.255  Mask:255.255.255.0
  inet6 addr: fe80::20c:29ff:fe4e:bbe3/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:51915 errors:0 dropped:0 overruns:0 frame:0
  TX packets:34677 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000 
  RX bytes:72165204 (68.8 MiB)  TX bytes:2462902 (2.3 MiB)

loLink encap:Local Loopback  
  inet addr:127.0.0.1  Mask:255.0.0.0
  inet6 addr: ::1/128 Scope:Host
  UP LOOPBACK RUNNING  MTU:16436  Metric:1
  RX packets:16 errors:0 dropped:0 overruns:0 frame:0
  TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0 
  RX bytes:960 (960.0 b)  TX bytes:960 (960.0 b)

2.编辑对应的网卡的配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=00:0c:29:4e:bb:e3
    TYPE=Ethernet
    UUID=90cb3cf8-0779-4ca4-9ef1-c4260e416318
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    IPADDR=192.168.82.56
    NETMASK=255.255.255.0
    GATEWAY=192.168.81.1
    DNS1=202.106.0.20

3.重启网络服务

[root@localhost ~]# service network restart

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


1.命令行中修改
[root@localhost ~]# ifconfig eth0 192.168.82.56 netmask 255.255.255.0
[root@localhost ~]# route add default gw 192.168.82.1

2.图形化中修改
[root@localhost ~]# system-config-network-tui
[root@localhost ~]# setup

3.修改配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=00:0c:29:4e:bb:e3
    TYPE=Ethernet
    UUID=90cb3cf8-0779-4ca4-9ef1-c4260e416318
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    IPADDR=192.168.82.56
    NETMASK=255.255.255.0
    GATEWAY=192.168.81.1
    DNS1=202.106.0.20

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

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

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


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

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


DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的惟一标识;

IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;

USERCTL:普通用户是否可控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,
        是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;

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


1)使用ifconfig命令临时添加
[root@localhost ~]# ifconfig eth0:1 192.168.200.200 netmask 255.255.255.0

2)使用ifconfig命令临时添加
[root@localhost ~]# ip addr add 192.168.100.100/24 dev eth0 label eth0:0

3)创建配置文件方法
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1

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


  • ifconfig命令

               ifconfig [interface]           查看网络接口信息
               ifconfig IFACE [up|down]       打开或关闭网络接口
               ifconfig IFACE IP/mask [up]    修改接口ip信息并启用
    
               示例:   
               [root@localhost ~]# ifconfig -a
               [root@localhost ~]# ifconfig eth0 down
  • route命令

                route -n                  查看路由信息
                route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]
                                          添加路由信息
    
    
                示例:
                目标:192.168.200.200  网关:192.168.82.1
                [root@localhost ~]# route add -host 192.168.200.200 
                                    gw 192.168.82.1 dev eth0
    
                目标:192.168.200.0 网关:192.168.82.1
                [root@localhost ~]# route add -net 192.168.200.0 netmask 255.255.255.0 
                                    gw 192.168.82.1 dev eth0
                [root@localhost ~]# route add -net 192.168.200.0/24 
                                    gw 192.168.82.1 dev eth0
    
                默认路由,网关:192.168.82.1
                [root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.82.1
                [root@localhost ~]# route add default gw 192.168.82.1
    
                route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 
                                         删除路由信息
    
    
                示例:   
                目标:192.168.200.200  网关:192.168.82.1
                [root@localhost ~]# route del -host 192.168.200.200
    
                目标:192.168.200.0 网关:192.168.82.1
                [root@localhost ~]# route del -net 192.168.200.0 netmask 255.255.255.0
  • netstat命令:

                显示网络连接:
                        -t: tcp协议相关
                        -u: udp协议相关
                        -w: raw socket相关
                        -l: 处于监听状态
                        -a: 所有状态
                        -n: 以数字显示IP和端口;
                        -e:扩展格式
                        -p: 显示相关进程及PID
                显示路由表:
                    netstat  {--route|-r} [--numeric|-n]
                        -r: 显示内核路由表
                        -n: 数字格式
    
                显示接口统计数据:
                    netstat  {--interfaces|-I|-i} [iface] [--all|-a] 
                             [--extend|-e] [--program|-p] [--numeric|-n] 
    
                示例:
                打印网络接口信息
                [root@localhost ~]# netstat -i

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软件包管理:

yum repolist [all|enabled|disabled]
显示程序包:
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安装程序包: 
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安装)
升级程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] […]
查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
yum makecache

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


1.创建挂载的文件夹
[root@localhost ~]# mkdir /mnt/cdrom
2.挂载光盘到需要挂载到的文件夹
[root@localhost ~]# mount /dev/cdrom  /mnt/cdrom/
3.创建yum仓库的配置文件
[root@localhost ~]# vim /etc/yum.repos.d/iso.repo
    [cdrom]
    name=cdrom
    baseurl=file:///mnt/cdrom
    enabled=1
    gpgcheck=0
4.清理yum缓存
[root@localhost ~]# yum clean all
5.重建yum缓存
[root@localhost ~]# yum makecache

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

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

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

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

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


[root@localhost ~]# cat KandS.sh 
#!/bin/bash
#
declare -i Kcount=0
declare -i Scount=0
for i in `ls /etc/rc.d/rc3.d/ | grep ^K `;do
    echo $i stop
    let Kcount++
done
for i in `ls /etc/rc.d/rc3.d/ | grep ^S `;do
    echo $i start
    let Scount++
done
echo K:$Kcount
echo S:$Scount

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

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

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


[root@localhost ~]# cat countID.sh 
#!/bin/bash
#
declare -i idcount=1
if [ $# -le 0 ];then
    echo "Usage:$0:User1 User2 ...."
    exit 1
fi
for i in $*;do
    id $i &>/dev/null && let idcount+=$[`id -u $i`] || echo "No user:$i"
done
echo idcount:$[$idcount-1]


注:这题中root的id为0,let idcount+=$[`id -u $i`]后直接执行echo "No user:$i",
    所以只好让idcount先为1,最后算出id的和之后再减去1。

14、写一个脚本

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

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

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


[root@localhost ~]# cat filetype.sh 
#!/bin/bash
#
declare -i dcount=0
declare -i tycount=0
declare -i a=0
declare -i b=0
declare -i c=0
declare -i d=0
declare -i e=0
declare -i f=0
declare -i g=0
declare -i h=0
if [ $# -le 0 ];then
    echo "Usage:$0 dir1 dir2 ..."
    exit 1
fi
for i in $*;do
    [[ ! -d $i ]] && echo "$i not DIR,Usage:$0 dir1 dir2 ..." && continue
    for j in `ls $i`;do
        filetype=`ls -ld $i/$j | cut -c1`
        case $filetype in
        d) echo $i/$j is dir;let dcount++;let a=1 ;;
        l) echo $i/$j is link;  let b=1 ;;
        s) echo $i/$j is socket;let c=1 ;;
        b) echo $i/$j is banary;let d=1 ;;
        c) echo $i/$j is char;  let e=1 ;;
        p) echo $i/$j is pipe;  let f=1 ;;
        -) echo $i/$j is file;  let g=1 ;;
        *) echo $i/$j is other; let h=1 ;;          
        esac        
    done
done
echo Dir count:$dcount
echo Filetype:$[$a+$b+$c+$d+$e+$f+$g+$h]

15、写一个脚本

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

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


[root@localhost ~]# cat user500.sh 
#!/bin/bash
#
[[ $# -le 0 ]] && echo "Usage:$0 Username1" && exit 1
id $1&>/dev/null && [ $[`id -u $1`] -ge 500 ] 
[ $? -eq 0 ] && echo $1 is common user. || echo $1 is sysuser or no user.

16、写一个脚本

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

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

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


[root@localhost ~]# cat useradd1.sh 
#!/bin/bash
#
declare -i usercount=0
for i in {1..10};do
    ! id user$i &>/dev/null && useradd user$i && echo user$i | passwd --stdin user$i &>/dev/null 
    [ $? -eq 0 ]&& let usercount=$usercount+1 && echo "user$i add." || echo "user$i exists."
done
echo Add user count:$usercount

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


[root@localhost ~]# cat ping2.sh 
#!/bin/bash
#
declare -i i=20
net=172.16.250
while [ $i -le 100 ];do
    if ping -c 1 -w 1 $net.$i &> /dev/null;then
        echo "$net.$i is up"
    fi
    let i++
done

18、打印九九乘法表;


[root@localhost ~]# cat 991.sh 
#!/bin/bash
for i in {1..9};do
    for j in $(seq 1 $i);do
        echo -n -e "$j*$i=$[$i*$j]\t "
    done
    echo
done

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

(0)
N21_孤狼N21_孤狼
上一篇 2016-11-14
下一篇 2016-11-14

相关推荐

  • Linux磁盘管理

    设备文件 一切皆文件 open(), read(), write(), close() 磁盘结构 磁盘接口类型 并行 IDE:133MB/s SCSI:640MB/s 串口 SATA:6Gbps SAS:6Gbps USB:480MB/s rpm rotationsper minute 硬盘每分钟转数 硬盘结构  图一…

    Linux干货 2016-08-30
  • Linux网络配置基础二(网络模块与nmcli命令)

    Linux网络配置基础二 相关命令 lsmod命令 lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。第一列:表示模块的名称第二列:表示模块的大小第三列:表示…

    Linux干货 2016-09-09
  • 10个有用的Linux命令面试问题及答案

    1. 如何暂停一个正在运行的进程,把其放在后台(不运行)? 答案:为了停止正在运行的进程,让其在后台运行,我们可以使用组合键 Ctrl+Z。 2. 什么是安装Linux所需的最小分区数量,以及如何查看系统启动信息? 答案:单独一个/root分区足以执行所有的系统任务,但是强烈建议安装Linux时,需要至少三个分区:/root,/boot,/swap。一个ID…

    2017-09-05
  • Cobbler实现多系统自动化安装

    Cobbler介绍:  Cobbler能够快速建立多系统同时安装的网络系统安装环境;传统的pxe+dhcp+tftp+kickstart仅能够提供单一系统安装,功能过于简单;如果遇到安装不同操作系统时就遇到瓶颈;而cobbler正好解决了这一问题。Cobbler是增强版的网络系统安装。 Cobbler由不同的组件配合完成系统安装,各组件之间配合如下…

    Linux干货 2015-08-11
  • linux文件系统创建

    件系统管理 格式化:低级格式化(分区之前,划分磁道)         高级格式化:在分区之后进行,创建文件系统         元数据(也是放在块上(block)):inode  &nbsp…

    Linux干货 2016-08-29
  • centos6,7分区,格式,挂载

     内核及文件系统的组成部分  文件系统驱动:   centos6如果使用xfs系统    yum -y install xfsprogs  文件系统管理工具   mkfs创建文件系统 mkfs.ext3   创建:mkfs.文件类型(ext2,ext3,xfs..)  …

    Linux干货 2016-08-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-16 15:44

    写的很好,希望你这从Linux小白到大牛——与狼共舞的日子可以继续下去,期待你后面的作业