马哥教育网络班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模型),每一层的功能及涉及到的物理设备有哪些。
-
物理层
规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。在这一层,数据的单位称为比特(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
评论列表(1条)
写的很好,希望你这从Linux小白到大牛——与狼共舞的日子可以继续下去,期待你后面的作业