首页 > 代码库 > 马哥linux第八周作业
马哥linux第八周作业
1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
集线器:物理层设备,多端口,无法隔离冲突域,用于连接主机。
将多个网络连接起来,使之能够互访的设备叫网桥。
多端口网桥称为交换机
二层交换机:数据链路层设备,多端口,与网桥相比,交换机可识别MAC地址,根据MAC地址转发数据,可隔离冲突域,用于在路由设备与主机之间架设,接入层与汇聚层皆可使用。
三层交换机:相当于是带路由功能的二层交换机,工作在网络层,有更高的带宽,可做核心层使用,用于大中型网络的路由交换。
路由器:网络层设备,在各局域网,城域网之间传递数据,根据IP地址转发数据,可隔离广播域,用于核心层。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
IP地址分类有A类、B类、C类、D类、E类;
A类:IP范围0.0.0.1-127.255.255.255,子网掩码255.0.0.0。A类地址分配给规模特别大的网络使用,A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络
B类:IP范围128.0.0.1-191.255.255.255,子网掩码255.255.0.0。B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
C类:IP范围192.0.0.1-223.255.255.255,子网掩码255.255.255.0。C类地址分配给小型网络. C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。
D类:D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。D类地址范围:224.0.0.1-239.255.255.254 。D类地址用于多点播送。D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。
E类:保留地址。
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI七层模型从低到高分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等;
数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输;
网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择;
传输层:定义了一些传输数据的协议和端口号,如www端口为80,ftp端口为20、21等;
会话层:通过传输层建立数据传输的通路;
表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取;
应用层:为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
TCP/IP模型分为四层,从高到低为应用层、传输层、互联网络层、网络接口层;
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等;
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收;
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP);
网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
配置文件: /etc/sysconfig/network-scriptes/ifcfg-IFACE (IP.MASK, GW, DNS 相关配置文件)
/etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE:此配置文件应用到的设备
HWADDR:对应设备的MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议:常用的dhcp, static, none, bootp
NM_CONTROLLED: NM为networkmanager的简写。此网卡是否接受NM控制 Centos6建议为no
ONBOOT:在系统引导时是否激活此设备: YES|NO
TYPE:接口类型。常见:Ethernet, Bridge
UUID:设备的唯一标示
IPADDR:指明Ip地址
NETMASK:子网掩码
GATEWAY:默认网关
DNS1:第一个DNS服务器指向
DNS2: 第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS: 如果BOOTPROTO的值为dhcp,是否允许dhcp server 分配的dns服务器指向信息直接覆盖至/etc/resolv
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1)ifconfig命令
ifconfig 网卡设备 IP地址 netmask 子网掩码
该命令即时生效,但在重启后失效。
2)ip 命令
ip addr add 192.168.100.101/24 dev eth0
此处ip需跟后缀,表示子网掩码。24即为255.255.255.0
3)配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eht0
配置详见第四题。
4)nmcli 命令
nmcli connection add type ethernet con-name NAME_OF_CONNECTION ifname interface-name ip4 IP_ADDRESS gw4 GW_ADDRESS
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
for i in {1..254};do ping -c 1 -w 1 172.16.250.$i &> /dev/null; if [ $? -eq 0 ];then echo -e "\033[32m $172.16.250.$i is online\033[0m" else echo -e "\033[31m $172.16.250.$i is offline\033[0m" fi done
echo进行颜色输出的时候,要使用参数-e
格式:echo -e “\033[字背景颜色;字体颜色m”
一共有8种字体颜色可供选择,它们分别是30 (黑色)、31 (红色)、32 (绿色)、33 (黄色)、34 (蓝色)、35 ( 紫红色)、36 (青色)和37 (白色)
对于底色也有8种颜色可供选择,只需要将字体颜色的3修改为4即可,例如40、41、42、43、44、45、46、47。
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
IP,MASK,GW,DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-*
路由相关配置文件:/etc/sysconfig/network-scripts/route-* (该文件需要自己创建)
/etc/sysconfig/network-scripts/ifcfg-*
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分配的dns服务器指向信息直接覆盖/etc/resolv.conf
/etc/sysconfig/network-scripts/route-*
两种风格:
1、TARGET via GW
192.168.0.0/24 via 172.16.0.1
2、每三行定义一条路由
ADDRRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
8、如何给网络接口配置多个地址,有哪些方式?
1)ifconfig命令
ifconfig IFACE_ALIAS IP
如:ifconfig eth0:0 192.168.100.110
2)ip addr命令
ip addr add IP dev IFACE
如:ip addr add 192.168.100.110 dev eth0
3)配置文件 etc/sysconfig/network-scripts/ifcfg-网卡设备:n
示例:
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.100.110
PREFIX=24
GATEWAY=192.168.100.2
DNS1=192.168.100.2
4)nmcli命令
示例:nmcli connection modify eth0 +ipv4.addresses "192.168.100.110/24"
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifconfig命令:
ifconfig 显示所有网卡的IP地址
ifconfig eth0 显示指定的网卡IP地址
ifconfig eth0 down/up 关闭或启用指定的网卡
ifconfig eth0:1 ip_address/mask up/down 配置子接口的IP地址,并启用或关闭
IP命令
常用的IP子命令 {link | addr | route }
ip link
show {up|down} 查看状态属于是up或down的接口
set {up|down|arp on|arp off |mtu|mac_address|..}设置接口的二层属性
ip addr
add {dev|local|broadcast|..} 添加IP地址。例如ip addr add dev eth1:2 local 192.168.1.102/24
delete 删除接口的IP地址。ip addr delete dev eth1 192.168.1.103/24
show 查看接口的IP地址
ip route
ip route add 添加路由。
ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0
ifconfig命令:
ifconfig 显示所有网卡的IP地址
ifconfig eth0 显示指定的网卡IP地址
ifconfig eth0 down/up 关闭或启用指定的网卡
ifconfig eth0:1 ip_address/mask up/down 配置子接口的IP地址,并启用或关闭
IP命令
常用的IP子命令 {link | addr | route }
ip link
show {up|down} 查看状态属于是up或down的接口
set {up|down|arp on|arp off |mtu|mac_address|..}设置接口的二层属性
ip addr
add {dev|local|broadcast|..} 添加IP地址。例如
ip addr add dev eth1:2 local 192.168.1.102/24
delete 删除接口的IP地址。
ip addr delete dev eth1 192.168.1.103/24
show 查看接口的IP地址
ip route
add 添加路由。例如
ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0
所有目的地址是192.168.1.0/24的数据包,其下一跳地址(gateway)为172.16.1.1,并且从本机eth0 接口发送出去。
delete 删除路由
show 查看路由表
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
1. rpm
rpm -i 安装指定rpm程序包
rpm -e 卸载指定程序
rpm –test 测试安装
rpm –nodeps 忽略依赖关系
rpm –replacepkgs 重新安装
rpm –nosignature:不检查来源的合法性
rpm –upgrage 安装有旧程序包,则升级,如果不存在旧版程序包,则安装
rpm –freshen:安装有旧程序包时,则升级,如果不存,则不执行升级操作
rpm -q{l | c } 显示指定程序是否安装\安装生成的文件\配置文件
2. yum
yum install 安装指定程序
yum remove 卸载指定程序
yum update 升级指定程序
yum groupinstall 安装组程序包
yum groupupdate 升级组程序
yum groupremove 卸载组程序
yum info 查看指定程序的信息
11、如何使用发行版光盘作为yum repository,请描述该过程。
mount /dev/cdrom /mnt #挂载光盘至特定目录
vim /etc/yum.repos.d/centos.repos 创建或修改该目录下以.repos为后缀的文件
[cdrm]
name=cdrm 名称
baseurl=file:///mnt/ 路径
cost=1 成本
gpgcheck=0 不检查
enabled=1 开启
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
declare -i numk=0 declare -i nums=0 for i in `ls /etc/rc.d/rc3.d | grep "^K"`;do echo "$i stop" let numk++ done for i in `ls /etc/rc.d/rc3.d | grep "^S"`;do echo "$i start" let nums++ done echo "$numk files stopped \n" echo "$nums files started \n"
for i in `ls /etc/rc.d/rc3.d | grep "^K"`: 将所有rc3.d目录下的文件通过筛选出K开头的文件,然后循环处理。``为反引号
declare -i 声明变量为整数
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
declare -i sum=0 if [ $# -le 0 ];then #$#表示所传参数个数, le:小于等于 echo "Please input at least one user name" exit 1 fi for i in $@;do #$@表示所有参数 if id $i &> /dev/null;then let sum+=$(id -u $i) #id -u $i: 显示$i的用户id echo "$i : does not exist!" fi done
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
if [ $# -lt 1 ];then echo "please input at lease one directory" exit1 fi declare -i f=0 declare -i d=0 ls -l $* for i in $*;do for n in $(ls $i);do if [ -f $i/$n ] ;then let f+=1 elif [ -d $i/$n ]; then let d+=1 fi done done echo "$f files, $d directories."
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
if [ $# -eq 0 ];then echo "Please input user name " exit 1 fi if id $1 &> /dev/null;then if [ $(id -u $1) -ge 1000 ];then #$(id -u $1) 表示执行id -u $1操作后的结果 echo "$1 is general user" elif [ $(id -u $1) -eq 0 ];then echo "$1 is root user" else echo "$1 is system user" fi else echo "$1 not exist" fi
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
declare -i i=1 declare -i sum=0 if [ $UID -ne 0 ];then # $UID -ne 0 检测执行用户是否为root echo "Only root user can create users" exit 1 fi while [ $i -le 10 ];do if id user$i &> /dev/null;then echo "user$i exists" else useradd user$i && echo "user$i" | passwd --stdin user$i &> /dev/null suc_add_user=(${suc_add_user[*]} user$i) let sum++ fi let i++ done echo "$sum users added"
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
for i in {1..254}; do ping -c 1 -w 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ]; then echo "172.16.250.$i is online !" fi done
18、打印九九乘法表;
for ((i=1;i<=9;i++));do for((j=1;j<=i;j++));do echo -e -n "$j*$i=$(($i*$j))\t" done echo "\n" done
马哥linux第八周作业