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

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

	网桥:是连接两个局域网的基于MAC地址数据存储转发设备,工作于数据链路层
	集线器:所有端口处于同一个广播域和冲突域中,带宽共享,工作于物理层
	二层交换机:多端口网桥,一个端口一个冲突域,默认所有端口位于同一个广播域中,可以划分vlan,隔离广播域,带宽独享
	三层交换机:具有路由功能的二层交换机
	路由器:连接不同网段的设备,负责不同网段之间数据通信

	二层交换机一般用于接终端设备,三层交换机用于汇聚层,核心层,路由器用于不同网段之间数据通信

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

	IP地址分类:
		A类:
			第一段为网络号,后三段为主机号
			网络号:
				0 000 0000 - 0 111 1111:1-127
			网络数量:126,127
			每个网络中的主机数量:2^24-2
			默认子网掩码:255.0.0.0,/8
				用于与IP地址按位进行“与”运算,从而取出其网络地址;
					1.3.2.1/255.0.0.0 = 1.0.0.0
					1.3.2.1/255.255.0.0= 1.3.0.0	
			私网地址:10.0.0.0/255.0.0.0
		B类:
			前两段为网络号,后两段为主机号
			网络号:
				10 00 0000 - 10 11 1111:128-191
				网络数:2^14
				每个网络中的主机数量:2^16-2
				默认子网掩码:255.255.0.0,/16
				私网地址:172.16.0.0-172.31.0.0								
		C类:
			前三段为网络号,最后一段为主机号
			网络号:
				110 0 0000 - 110 1 1111:192-223
			网络数:2^21
			每个网络中的主机数量:2^8-2
			默认子网掩码:255.255.255.0,  /24
		D类:组播
			1110 0000 - 1110 1111:224-239
		E类:科研
			240-255

	子网掩码的表示形式:
		1.通过与IP地址格式相同的点分十进制表示,如255.255.255.0
		2.在IP地址后“/”加1-32的数字,1-32的数字表示子网掩码中网络标识位的长度,如192.168.0.0/24

	子网掩码的作用:
		1.用于标识IP的网络位和主机位
		2.用于划分子网

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

	OSI七层模型:
		物理层:为数据端设备提供原始比特流的传输的通路(如:集线器、网线等)
		数据链路层:在通信的实体间建立数据链路连接(如:网桥、二层交换机等)
		网络层:为数据在结点之间传输创建逻辑链路,并分组转发数据(如:路由器,三层交换机,防火墙)
		传输层:提供应用进程之间的逻辑通信(如:TCP,UDP,进程,PORT,Socket)
		会话层:建立端连接并提供访问验证和会话管理(如:服务器验证用户登录,断点续传)
		表示层:提供数据格式转换服务(如:URL加密、口令加密、图片编解码)
		应用层:为操作系统或网络应用程序提供访问网络服务的接口(如:telnet,ftp,http,snmp)

	TCP/IP模型:
		应用层:对应于OSI模型的应用层,会话层,表示层
		传输层:对应于OSI模型的传输层
		网络互联层:对应于OSI模型的网络层
		网络接口层:对应于OSI模型的数据链路层和物理层

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

	[root@test ~]# ifconfig
	eth0      Link encap:Ethernet  HWaddr 00:0C:29:A2:C0:D7  
	[root@test ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
	TYPE=Ethernet
	DEVICE=eth0
	NAME="eth0"
	BOOTPROTO=none
	ONBOOT=yes
	IPADDR=X.X.X.X
	NETMASK=X.X.X.X
	GATEWAY=X.X.X.X
	DNS1=X.X.X.X
	[root@test ~]# service network restart 

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

	1.[root@test ~]# ifconfig eth0:0 192.168.3.4/24

	2.[root@test ~]# ip addr add 192.168.3.5/24 broadcast 192.168.3.1 dev eth0:0

	3.[root@test ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

	4.setup - Network configration - Device configration

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

	[root@test tmp]# vim ping.sh
	#!/bin/bash

	ip='192.168.2'
	for i in {1..250};do
	        ping -c 3 -w 3 $ip.$i &>/dev/null
	        result=$?
	        if [ $result -eq 0 ];then
	                echo -e "\033[32m $ip.$i is up \033[0m"
	        else
	                echo -e "\033[31m $ip.$i is down \033[0m"
	        fi
	done

	[root@test tmp]# bash ping.sh  

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

	/etc/sysconfig/network-scripts/ifcfg-IFACE:
	DEVICE:此配置文件应用到的设备
	HWADDR:对应的设备的MAC地址
	BOOTPROTO:激活此设备时使用的地址配置协议,常用的有dhcp,static,none
	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、如何给网络接口配置多个地址,有哪些方式?

	[root@test tmp]# ifconfig eth0:2 192.168.4.4
	[root@test tmp]# ip addr add 192.168.5.5/24 dev eth0 label eth0:3

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

	ifcfg命令家族: ifconfig, route, netstat
			
	ifconfig命令:接口及地址查看和管理
		ifconfig  [INTERFACE]
			# ifconfig -a:显示所有接口,包括inactive状态的接口;
		
		ifconfig interface [aftype] options | address ...
			# ifconfig  IFACE  IP/MASK  [up|down]
			# ifconfig  IFACE  IP  netmask  NETMASK  
			
			options:
				[-]promisc
			
			注意:立即送往内核中的TCP/IP协议栈,并生效;
				
	route命令:路由查看及管理
	
		路由条目类型:
			主机路由:目标地址为单个IP;
			网络路由:目标地址为IP网络;
			默认路由:目标为任意网络,0.0.0.0/0.0.0.0
			
		查看:
			# route  -n
		添加:
			route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]
			
				示例:route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1
				            route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1  
				            route add  default  gw 192.168.10.1  
				            
		删除:
			route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]
				
				示例: route  del  -net  10.0.0.0/8  gw 192.168.10.1
					     route  del  default
					     
	netstat命令:
		Print network connections, routing tables, interface statistics, masquerade connections, and multicast  memberships
		
		显示路由表:netstat  -rn
			-r:显示内核路由表
			-n:数字格式
			
		显示网络连接:
			netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]   [--extend|-e[--extend|-e]]  [--program|-p]
				-t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);
				-u:UDP相关的连接
				-w:raw socket相关的连接
				-l:处于监听状态的连接
				-a:所有状态
				-n:以数字格式显示IP和Port;
				-e:扩展格式
				-p:显示相关的进程及PID; 
				
			常用组合:
				-tan,  -uan,  -tnl,  -unl,  -tunlp
							
			传输层协议:
				tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;
				udp:无连接的协议;直接发送数据报文;
				
		显示接口的统计数据:
			netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]
				
			所有接口:
				netstat  -i
			指定接口:
				netstat  -I<IFace>
				
	ifup/ifdown命令:
		注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;

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 命令实施软件包管理
	 	repolist [all|enabled|disabled]

	显示程序包:list
		yum list [all | glob_exp1] [glob_exp2] […]
		yum list {available|installed|updates} [glob_exp1] […]

	安装程序包: 
		install package1 [package2] […]
		reinstall package1 [package2] […] (重新安装)

	升级程序包:
		update [package1] [package2] […]
		downgrade package1 [package2] […] (降级)

	检查可用升级:
		check-update

	卸载程序包:
		remove | erase package1 [package2] […]

	查看程序包information:
		info […]

	查看指定的特性(可以是某文件)是由哪个程序包所提供:
		provides | whatprovides feature1 [feature2] […]

	清理本地缓存:
		clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

	构建缓存:
		makecache

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

	[root@centos7 /]# mount /dev/cdrom /mnt/cdrom
	[root@centos7 /]# vim /etc/yum.repos.d/cdrom.repo
	[cdrom]
	name=centos7cdrom
	baseurl=file:///mnt/cdrom
	gpgcheck=0
	enabled=1
	[root@centos7 /]# yum clean all
	[root@centos7 /]# yum makecache

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

	[root@localhost tmp]# vim rcd.sh
	#!/bin/bash

	declare -i i=0
	declare -i j=0

	for src1 in /etc/rc.d/rc3.d/K*;do
	        echo $src1
	        $src1 stop
	        let i++
	        echo $i
	done

	/etc/init.d/network restart

	for src2 in /etc/rc.d/rc3.d/S*;do
	        echo $src2
	        $src2 start
	        let j++
	        echo $j
	done

	echo "K start file total:$i"
	echo "S start file total:$j"

	[root@localhost tmp]# bash rcd.sh

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

	[root@test tmp]# vim idsum.sh

	#!/bin/bash

	for i in $*;do
	        id $i &> /dev/null
	        if [ $? -ne 0 ];then
	                echo "$i not exists"
	                exit 32
	        else
	                let idsum+=`id -u $i`
	        fi
	done
	echo "idsum:$idsum"

	[root@test tmp]# bash idsum.sh test4 test2 test3


14、写一个脚本
   (1) 传递一些目录给此脚本;
   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

    [root@test tmp]# vim filetype.sh 
	#!/bin/bash
	declare -i dfile=0
	declare -i cmnfile=0
	declare -i lfile=0
	declare -i bfile=0
	declare -i cfile=0
	declare -i sfile=0
	declare -i ufile=0

	if [ $# -lt 1 ];then
			echo "At least input a directory"
	exit 1
	fi
	
	dfile=$(ls -l "$@" |grep ^d |awk '{print $NF}'|wc -l)
	cmnfile=$(ls -l "$@" |grep ^- |awk '{print $NF}' |wc -l)
	lfile=$(ls -l "$@" |grep ^l |awk '{print $NF}' |wc -l)
	bfile=$(ls -l "$@" |grep ^b |awk '{print $NF}'|wc -l)
	cfile=$(ls -l "$@" |grep ^c |awk '{print $NF}' |wc -l)
	sfile=$(ls -l "$@" |grep ^s |awk '{print $NF}' |wc -l)
	ufile=$(ls -l "$@" |grep -v ^[-dlbcst/]|grep ^[^[:space:]] |awk '{print $NF}' |wc -l)
	
	ls -l "$@"
	echo "The directory file total: $dfile"
	echo "The common file total:$cmnfile"
	echo "The symbolic link file total:$lfile"
	echo "The block special file total:$bfile"
	echo "The character special file total:$cfile"
	echo "The socket file total:$sfile"
	echo "The unkown file total:$ufile"
	[root@test tmp]# bash filetype.sh  /dev /tmp

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

	[root@test tmp]# vim usertype.sh

	#!/bin/bash
	id $1 &> /dev/null
	if [ $? -eq 0 ];then
	        if [ `id -u $1` -ge 500 ];then
	                echo "user is regular user"
	        else
	                echo "user is a system user"
	        fi
	else
	        echo "user is not exsits"
	fi
	[root@test tmp]# bash usertype.sh test3



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

	[root@test tmp]# vim adduser.sh
	#!/bin/bash
	declare -i j=0
	for i in {1..10};do
	        id user$i &> /dev/null
	        if [ $? -ne 0 ];then
	                useradd  user$i
	                let j++
	                echo "add user$i success"
	        else
	                echo "user$i exist"
	        fi
	done
	echo "add user total:$j"

	[root@test tmp]# bash adduser.sh

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

	[root@test tmp]# vim ping2.sh
	#!/bin/bash
	ip='172.168.250'
	for i in {20..100};do
	        ping -c 3 -w 3 $ip.$i &>/dev/null
	        result=$?
	        if [ $result -eq 0 ];then
	                echo -e "\033[32m $ip.$i is up \033[0m".
	      
	        fi
	done
	[root@test tmp]# bash -x ping2.sh

18、打印九九乘法表;

	[root@test tmp]# vim math99.sh

	#!/bin/bash
	for i in {1..9};do
	        for j in $(seq 1 $i);do
	                let sum=($i * $j)
	                echo -n -e "${j}x${i}=$sum\t"
	        done
	        echo
	done
	[root@test tmp]# bash  math99.sh

原创文章,作者:N22_上海_长清,如若转载,请注明出处:http://www.178linux.com/50521

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-25 13:26

    作业很工整,细节描述的很好