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

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

  网桥从一个局域网接收MAC帧,拆封、校对、校验之后,按另一个局域网的格式重新组装,发往它的物理层。由于网桥是链路层设备,因此不处理数据链路层以上层次协议所加的报头。

  集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层。

 二层交换机指的就是传统的工作在OSI参考模型的第二层–数据链路层上交换机,主要应用于小型的局域网中,主要功能包括物理编址、错误校验、帧序列以及流控。

 三层交换机主是二层交换机与路由器的合体,支持物理层,数据链路层及网络层协议。三层交换机支持路由功能、支持网络层的很多协议等,支持多VLAN的设置与IP地址配置!支持安全功能等

 路由器是连接因特网中各局域网、广域网的设备,路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。

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

E类:
240-255

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

   OSI参考模型

   物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,该层会使用到网线,光纤等等。

   数据链路层OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。工作在该层的设备一般为交换机,集线器等等。

  网络层OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。

  传输层OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。该层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。

  会话层OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。

  表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。

  应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。

    TCP/IP参考模型

  网络接口层包括用于协作IP数据在已有网络介质上传输的协议。它定义像地址解析协议这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。 

  网络层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议,负责数据的包装、寻址和路由。同时还包含网间控制报文协议用来提供网络诊断信息。

传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议提供可靠的数据流运输服务,UDP协议提供不可靠的用户数据报服务。

应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括FingerWhoisFTP(文件传输协议)GopherHTTP(超文本传输协议)Telent(远程终端协议)SMTP(简单邮件传送协议)IRC(因特网中继会话)NNTP(网络新闻传输协议)等。


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

[root@6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
  1 DEVICE=eth0
  2 HWADDR=00:0C:29:88:B2:2C
  3 TYPE=Ethernet
  4 UUID=05cb76db-70e8-49f6-9b1d-f754c47a28f6
  5 ONBOOT=yes
  6 IPADDR=192.168.1.118
  7 NETMASK=255.255.255.0
  8 GATEWAY=192.168.1.1
~
[root@6 ~]# service network restart
正在关闭接口 eth0:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0: Determining if ip address 192.168.1.118 is already in use for device eth0...
                                                           [确定]

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

  1. 编辑配置文件修改网络参数,永久生效

  2. 使用ifconfig命令来指定,重启失效

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

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

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

#!/bin/bash
for((i=1;i<254;i++))
do
	ping -c 1 172.168.250.$i &>/dev/null
	if [ $? -eq 0 ];then
		echo -e "\033[32m 172.168.250.$i is up \022[0m"
	else
		echo -e "\033[31m 172.168.250.$i is down \022[0m"

	fi
done

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

  1 DEVICE=eth0    //设备名称
  2 HWADDR=00:0C:29:88:B2:2C    //mac地址
  3 TYPE=Ethernet    //网络接口类型
  4 UUID=05cb76db-70e8-49f6-9b1d-f754c47a28f6
  5 ONBOOT=yes    //是否开机启动
  6 IPADDR=192.168.1.118    //ip地址
  7 NETMASK=255.255.255.0    //子网掩码
  8 GATEWAY=192.168.1.1    //网关

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

1.ip addr add 
2.编辑配置文件,重启生效
3.setup

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

netstat命令:
-t: tcp协议相关。-u: udp协议相关。-w: raw socket相关。-l: 处于监听状态。-a: 所有状态。-n: 以数字显示IP和端口。-e:扩展格式
-p: 显示相关进程及PID。
ss命令

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

    rpm
    安装:
        rpm {-i|--install} [install-options] PACKAGE_FILE ...
            -v: verbose
            -vv: 
            -h: 以#显示程序包管理执行进度;每个#表示2%的进度
            rpm -ivh PACKAGE_FILE ...   
      升级:      
            upgrage:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
            freeshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
            rpm -Uvh PACKAGE_FILE ...
            rpm -Fvh PACKAGE_FILE ... 
      查询:
        rpm {-q|--query} [select-options] [query-options]

        [select-options]
            -a: 所有包
            -f: 查看指定的文件由哪个程序包安装生成
      卸载:
        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
    yum
     显示仓库列表:
      yum repolist [all|enabled|disabled]

    显示程序包:
        list
            # 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 [...]

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

1.将光盘挂载到指定的目录
[root@6 ~]# mount /dev/cdrom /mnt    
2.创建配置文件
[root@6 mnt]# cat /etc/yum.repos.d/cdrom.repo 
	[cdrom]
name=cdrom
basurl=file:///mnt
enable=1
gpgcheck=0

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

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

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

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

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

#!/bin/bash
cd /etc/rc.d/rc3.d
for i in $(ls K*);do
	echo "$i start"
	let i++
done

for j in $(ls S*);do
	echo "$j stop"
	let j++
done

echo "$i,$j"

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

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

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

  1 #!/bin/bash
  2 declare -i j=0
  3 
  4 for i in $*;do
  5     userid=$( id -u ${i} ) 
  6     j+=$userid
  7     let i++
  8 done
  9

14、写一个脚本

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

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

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

#!/bin/bash

declare -i f=0
declare -i d=0
declare -i c=0
declare -i s=0
declare -i b=0
declare -i o=0

read -p "input file path " file
for i in 'ls $file';do
	if [ -d $file ];then
		echo "$file is directory"
		let d++
	elif [ -f $file ];then
		echo "$file is file"
		let f++
	elif [ -s $file ];then
		echo "$file is socket"
		let s++
	elif [ -b $file ];then
		echo "$file is bolck"
		let b++
	elif [-c $file ];then
		echo "$file is char"
		let c++	
	else
		let o++	
	fi	
done
echo "directory $d"
echo "file $f"
echo "socket $s"
echo "block $b"
echo "char $c"
echo "other $c"

15、写一个脚本

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

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

  1 #!/bin/bash
  2 if [ $# -eq 0 ];then
  3     echo "plesae input username"
  4 fi
  5 let a=$(id -u $1)
  6 if [ $a -ge 500 ];then
  7     echo "this is user"
  8 else
  9      echo "this is system user"
 10 fi

16、写一个脚本

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

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

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

  1 #!/bin/bash
  2 declare -i i=0
  3 for((i=1;i<11;i++))do
  4     if id user$i &> /dev/null;then
  5         echo "user$i is exist"
  6         continue
  7     else
  8         useradd user$i
  9         echo "user$i" | passwd --stdin$i &> /dev/null
 10         let i++
 11     fi
 12 done
 13 echo "add $i user"

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

#!/bin/bash
for((i=20;i<100;i++))
do
	ping -c 1 172.168.250.$i &>/dev/null
	if [ $? -eq 0 ];then
		echo  "172.168.250.$i is up "

	fi
done

18、打印九九乘法表;

  1 #!/bin/bash
  2 for((i=1;i<10;i++))
  3 do
  4     for((j=1;j<=$i;j++))
  5     do
  6         echo -e -n "$j*$i= $(($i*$j))\t"
  7     done
  8     echo
  9 done

以上

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

(0)
N21_619463772N21_619463772
上一篇 2016-10-24
下一篇 2016-10-24

相关推荐

  • M22 用户、组学习总结

    Linux系统的登录方式是通过账号和密码。每一个登录账号都有一个主组可能有附加组。Linux内的文件和目录都有所有者和属组,只有相应权限的账户可以对其进行操作,下面我对用户权限相关内容进行了总结。   1、  用户ID,每个用户具有相应的ID号码,主要分为两类:系统ID和用户ID,在Centos6中系统ID为1-499,用户ID >…

    2017-02-22
  • 文件查找工具之——find

        前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具 一、首先我们先要了解文本搜索和文件查找的区别     文本…

    Linux干货 2015-07-06
  • mongodb数据库切分

    前言:  相信维护过有大数据的MySQL的运维人员一定对sharding这个非常了解,MySQL数据库切分自身没有工具需要借助第三方工具进行;MySQL切片是一件非常头疼而又难做的一件事,一旦切分错误,不仅不能优化数据库,反而会加剧数据库负载;mongodb相对于MySQL来说,数据库切分是mongodb与生俱来的功能,mongodb会自动切分数据…

    Linux干货 2015-09-05
  • 网络21期第十周博客作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) Centos6启动流程:       POST加电自检 —> BOOT Sequence —> 加载内核启动系统    &n…

    Linux干货 2016-09-15
  • mysql 备份脚本的编写

        最近在为做一些边边角角的工作,现在有一个需求要每天把mysql的数据库dump出来到备份机器上面去. 看似简单的任务也潜在了很多的需求,整理如下:     自动运行-crontab      脚本的环境变量设置-由于通过crontab 启动执…

    Linux干货 2015-12-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-25 12:43

    网络部分可以更详细一些,还有下次ctrl+c,ctrl+v的时候,请调整好统一的格式