首页 > 代码库 > 第八周作业
第八周作业
1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。
二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发展已经比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。
三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。
路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
1. A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
2. B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
3. C类IP地址 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
4. D类地址用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5. E类IP地址 以“llll0”开始,为将来使用保留。
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255 B类地址:172.16.0.0~172.31.255.255 C类地址:192.168.0.0~192.168.255.255A类地址的第一组数字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。
B类地址的第一组数字为128~191。
C类地址的第一组数字为192~223。1.掩码255.0.0.0:/8(A 类地址默认掩码)2.掩码255.255.0.0:/16(B 类地址默认掩码)3.掩码255.255.255.0:/24(C 类地址默认掩码)
子网掩码又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
物理层 ---利用传输介质为数据链路层提供物理连接/网卡,网线,集线器
数据链路层 ---负责建立和管理节点间的链路/网桥,交换机
网络层 ---该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接/路由器
传输层 ---传输层提供会话层和网络层之间的传输服务
会话层 ---向两个实体的表示层提供建立和使用连接的方法
表示层 ---对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层
应用层 ---是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
修改网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
根据所在网络的网关配置ip等相关信息
BOOTPROTO=static |dhcp 如才用dhcp则无需指定ip
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
ONBOOT=yes
GATEWAY=xxx.xxx.xxx.xxx
保存退出:wq
重启服务
service network restart
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1)使用命令ifconfig eth0 192.168.194.131 立即生效,但重启系统后失效
2)修改网卡配置需要重启后生效
3)使用图形界面 setup--网络配置 修改后重启服务
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash # for ((i=1;i<=254;i++)); do ping -w 1 -c 1 172.16.80.$i &>/dev/null if [ $? -eq 0 ];then echo -e "\e[1;32m 172.16.80.$i \e[0m" else echo -e "\e[1;31m 172.16.80.$i \e[0m" fi done
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
DEVICE=eth0 ---网卡设备名
TYPE=Ethernet ---接口类型
UUID=f12891d5-b39f-4203-8bdf-373151db701唯一标识
ONBOOT=yes ---开机激活
NM_CONTROLLED=yes ---是否接受NetworkManager服务脚本来配置此设备
BOOTPROTO=dhcp ---ip获取类型静态为static|none
HWADDR=00:0C:29:0D:17:94 ---MAC地址
PEERDNS=yes ---不接受DHCP服务器指派的DNS服务器地址
IPADDR=192.168.194.131 ---ip地址
NETMASK=255.255.255.0 ---子网掩码
GATEWAY= ---网关
8、如何给网络接口配置多个地址,有哪些方式?
]# ifconfig eth0:0 IP/mask 临时生效 ]# ip addr add IP/mask dev eth0:0 临时生效
配置文件 DEVICE=eth0:0 保存退出,永久生效。
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法
Ping 用来测试网络连同性的。。Ping IP
Traceroute 用来路由跟踪,看经过的路由。 Traceroute IP
route 路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标:192.168.0.0 网关:172.16.0.1
~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由,网关:172.16.0.1
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
~]# route add default gw 172.16.0.1
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
~]# route del -host 192.168.1.3
目标:192.168.0.0 网关:172.16.0.1
~]# route del -net 192.168.0.0 netmask 255.255.255.0
netstat和ss命令:用来查看当前主机的开放端口。
格式:ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度;每个#表示2%的进度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test: 测试安装,但不真正执行安装过程;dry run模式;
--nodeps:忽略依赖关系;
--replacepkgs: 重新安装;
--nosignature: 不检查来源合法性;
--nodigest:不检查包完整性;
--noscipts:不执行程序包脚本片断;具体分为以下四类:(可单独选择某类)
%pre: 安装前脚本; --nopre
%post: 安装后脚本; --nopost
%preun: 卸载前脚本; --nopreun
%postun: 卸载后脚本; --nopostun
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrage:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
freeshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
其他选项与上面安装一样
--oldpackage:降级;
--force: 强行升级;
注意:
(1)uname -r 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
-i: 安装包信息
-l:所有文件
-c:配置文件
-d:文档帮助信息
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
11、如何使用发行版光盘作为yum repository,请描述该过程。
1)挂载光盘到指定目录
mount /dev/cdrom /mnt
2)创建配置文件
vim /etc/yum.repos.d/mysoft.repo
[soft] ---指定容器名称
name=mysoft ---容器描述
baseurl=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 # s=0 k=0 cd /etc/rc3.d/ for i in $(ls *) ;do if [[ $i = S* ]] ;then echo $i start let s++ elif [[ $i = K* ]] ;then echo $i stop let k++ fi done echo " S* is $s" echo " K* is $k"
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash # for i in $*; do id $i &>/dev/null if [ $? -ne 0 ] ;then echo "not user!! quit" break else let sumuid+=$(id -u $i) fi done echo “uid sum $sumuid”
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash declare -i b=0 declare -i c=0 declare -i s=0 declare -i p=0 declare -i f=0 declare -i h=0 if [ $# -lt 1 ];then echo "Please give at least a directory" else for i in $@;do for n in $(ls $i);do cd $i if [ -b $n ];then echo "$n is block device file" let b++ elif [ -c $n ];then echo "$n is character device file" let c++ elif [ -S $n ];then echo "$n is socket file" let s++ elif [ -p $n ];then echo "$n is name pipes file" let p++ elif [ -h $n ];then echo "$n is symbolic link file" let h++ elif [ -d $n ];then echo "$n is diretory" let d++ elif [ -f $n ];then echo "$n is ordinary file" let f++ else echo "$n is other file" fi done done fi echo ============================================== echo "The directory is $d" echo "File type is block $b" echo "File type is character $c" echo "File type is link $h" echo "File type is file $f" echo "File type is socket $s" echo "File type is pipes $p"
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash # i=$(id -u $1) id $i >/dev/null 2>&1 if [ $? -eq 0 ];then if (( i>=500 ));then echo "this user is general user" else echo "this user is system user" fi else echo "is not user" fi
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash # user=0 for (( i=1;i<=10;i++));do id user$i &>/dev/null if [ $? -ne 0 ];then useradd user$i echo "Success add user user$i" let user++ else echo "user$i is here" fi done echo "add users $user"
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/bash # for ((i=20;i<=100;i++));do ping -w 1 -c 1 172.16.250.$i &>/dev/null if [ $? -eq 0 ];then echo "172.16.250.$i online" fi done
18、打印九九乘法表;
#/bin/bash # i=1 j=1 for i in {1..9};do for j in $(seq 1 $i);do echo -e -n "${i}X${j}=$[$i*$j]\t" done echo done
第八周作业