第八周作业-关于网络

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

网桥: 又称为桥接器,一种网络装置,负责网路桥接。网桥将网络的多个网段在数据链路层(OSI的第二层)链接起来。网桥根据MAC地址转发帧,它主要用来链接两个LAN, 是本地通讯限制在各自的本网段内。

集线器(Hub):是指将多条以太网络双绞线链接在一起的一个设备,它运作在OSI模型中的第一层,它会将收到的所有信号进行放大,从而扩大网络的传输距离。因为它采用的是广播模式,很容易产生广播风暴,大部分集线器已经被交换机取代。

二层交换机:顾名思义,二层交换机工作OSI模型的第二层,二层交换机的技术已经比较成熟,二层交换机工作在数据链路层,通过MAC地址进行转发,并且将这些MAC地址与对应的端口记录在MAC地址表中,它可以隔离广播风暴的产生。

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

路由器:其功能是决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。其工作模式与二层交换机相似,但路由器工作在OSI模型的第三层——网络层,这个区别决定了路由和交换机在传递包时使用不同的控制信息,实现功能的方式就不同。适用于局域网间互联,局域网与城域网互联互通。

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

A类IP地址:网络号00000000 --> 01111111, 因此地址范围0.0.0.0 -- 127.0.0.0,网络数: 127个,默认子网掩码255.0.0.0,用作大型网络

B类IP地址:网络号10000000 00000000--> 10111111 11111111, 因此地址范围128.0.0.0 -- 191.255.0.0,网络数: 2^14, 默认子网掩码255.255.0.0, 用作中型网络

C类IP地址:网络号11000000 00000000 00000000 --> 11011111 11111111 11111111地址范围192.0.0.0 -- 223.255.255.0,默认子网掩码255.255.255.0, 用作小型网络

D类是组播地址:地址范围224.0.0.0 -- 239.255.255.255

E类作为保留研究:地址范围240.0.0.0 -- 255.255.255.255

特殊地址: 127.0.0.1 -- 127.0.0.255(本地环回)

链路本地: 169.254.0.0(主机请求无法被分配,自动生成的地址)

子网掩码,目前有两种表示方式:一种是用32位数字表示;另一种,则是在每个IP地址后面追加网络地址的位数,用“/”隔开。

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

OSI TCP/IP
应用层 针对特定应用(http,FTP,DNS) 应用层
表示层 将数据转化为网络标准数据 应用层
会话层 通信管理,负责建立或断开连接 应用层
传输层 建立管理两个节点的数据传输,负责数据可靠地传输 传输层
网络层 管理地址和路由 网络层
数据链路层 通信实体间建立数据链路链接,用MAC地址封装 网络接口层
物理层 数据原始比特流传输 网络接口层

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

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #这是centos7的网卡配置

~]# cat ifcfg-eno16777736 
TYPE=Ethernet #指明接口类型,常见的有Ethernet,Bridge;
BOOTPROTO=static #激活此接口时使用什么协议来配置接口属性,这里为静态,动态的话填写dhcp
DEFOUTE=yes #将该接口设置为默认路由,no为不要设置为默认路由
IPV4_FAILURE_FATAL=no
IPV6INIT=yes     #是否初始化ipv6
IPV6NAME=eno16777728
NAME=eno16777736
ONBOOT=yes ? #在系统的引导过程中,是否激活此接口
IPADDR=192.168.137.70             #IP地址
NETMASK=255.255.255.0           #掩码
GATEWAY=192.168.137.1            #网关
DNS1=210.21.196.6 #主DNS
DNS2=119.233.255.229 #备DNS2.
重启网络~]# systemctl restart network.service

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

临时修改方式
]# ifconfig eno16777736 192.168.112.11/24    #ifconfig命令
]# ip addr add 192.168.112.11/24 dev eth0  #ip命令

编辑配置文件
~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

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

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

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

网络接口配置文件:/etc/sysconfig/network-scripts/ifcfg-eno16777736
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=               #掩码
DNS2=                      #dns2地址
DNS1=                      #dns1地址

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

# ip  addr  add  192.168.121.11/24 dev eno16777736:1
# ifconfig eth0:1
# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

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

 ifconfig 
    常见用法:
        查看网卡信息:ifconfig [interface]
        查看所有网卡信息:ifconifg -a
        开启或关闭网卡:ifconfig IFACE [up|down]
        配置网卡参数:ifconfig interface [aftype] options | address ...
        配置网卡IP地址:
            ifconfig IFACE IP/mask [up]
            ifconfig IFACE IP network MASK

 ip:显示/配置路由,接口,策略路由和隧道
        常见用法:
             网卡添加多一个IP地址,并设置别名为eth0:0
                 ip addr IPADDR/MASK dev eth0 label 'eth0:0'
            显示网卡设备的信息: ip addr show 
            清除IP地址信息:ip addr flush dev interface
            添加路由:ip route add TARGET via GW dev INTERFACE src SOURCE_IP
            删除单条路由: ip route del TARGET 


 route:路由管理命令
            查看路由条目:route -n
            添加路由条目:route add
            route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]
            删除路由:route del
            route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


netstat :显示网络连接、路由表、接口数据统计、伪装连接、组播成员关系
    常用选项:
                        -t : 显示TCP协议相关已建立的连接(ESTABLISHED)
                        -u : 显示UDP协议相关已建立的连接(ESTABLISHED)
                        -r : 显示raw socket(裸套接字)相关已建立的连接(ESTABLISHED)
                        -l : 处于监听状态的连接
                        -n : 以数字显示IP和协议端口(默认显示协议名称,如SSH)
                        -a : 显示所有状态的连接
                        -e : 扩展格式
                        -p : 显示相关进程及PID

常用组合:
                        -tan , -uan , -tnl, -unl,-tunlp

ss:网络状态查看工具
常见选项:
    -t : tcp协议相关
    -u : udp协议相关
    -w : 裸套接字相关
    -x : unix sock相关
    -l : listen状态的连接
    -a : 所有
    -n : 数字格式
    -p : 相关的程序及PID
    -e : 扩展的信息
    -m : 内存用量
    -o : 计时器信息
    常用组合:
                        -tan , -tanl , -tanlp , -uan,-tunlp

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

rpm包安装方式:
安装:rpm -ivh PACKAGE_FILE ...
升级:rpm -Uvh PACKAGE_FILE ...
卸载:rpm -e
查询:rpm -q
校验:rpm -V
数据库维护:--builddb, --initdb

Yum安装方式
显示程序包:list
安装程序包:install
卸载程序包:remove
升级程序包:update
检查可用升级:check-update
查看程序包:info
查看指定的特性:provides
清理本地缓存:clean
构建缓存:makecache

编译安装:
. /configure
make
makeinstall

12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
declare -i k=0,s=0
for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$");do
    echo "$i stop"
    let k++
done
for j in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$");do
    echo "$j start"
    let s++
done
echo "S开头的文件有$s个"
echo "K开头的文件有$k个"

13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;

#!/bin/bash
##
declare -i Sum=0
if [ $# -lt 1 ];then
        echo "请至少输入一个已存在的用户名"
        exit 1
fi
for user in $@;do
        if id $user &> /dev/null;then
                Sum=$[$Sum+$(id -u $user)]
        else
                echo "这个$user用户不存在"
                exit 2
        fi
done
echo "这些用户ID和为:$Sum."

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

#!/bin/bash
##
if [ $# -eq 0 ];then
        echo "至少需要一个用户名" 
        exit 1
fi
 
id=$(id -u $1)
 
if [ $id -ge 500 ]; then
        echo "login user"
else
        echo "system user"
fi

16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;

#!/bin/bash
##
declare -i i=0
for i in {1..10};do
        if id user$i &> /dev/null;then
           echo "user$i 已存在"
           continue
        else
           useradd user$i
           echo "user$i" |passwd --stdin user$i &> /dev/null
           let i++
        fi
done
echo "创建了$i个用户."

你可能感兴趣的:(第八周作业-关于网络)