1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥:网桥是工作在数据链路层的设备。用于将两个LAN连接在一起并按照Mac地址转发数据。网桥保存着所有与它相连的主机的Mac地址表和端口号并具有学习功能。当网桥收到某个数据包后,能根据目的主机的Mac地址再选择从哪个端口进行转发。因此,网桥具有2个冲突域,1个广播域。一般用Hub和网桥的端口相连,Hub再连接多台主机构成子LAN。
集线器(Hub):集线器是工作在物理层的设备。中继器用于连接两个网络结点之间物理信号的双向转发工作,而集线器相当于是多个端口的中继器。假设有四台主机通过集线器进行网络连接,它们之间就可以通过集线器通信。集线器的工作原理如下:当A需要发送数据给B时,由于Hub是底层设备,它没有Mac地址表,因此Hub会向所有连接到它的网络设备进行广播发送,因此集线器有一个广播域,一个冲突域。集线器的另一个缺点是,它只能工作在半双工模式下。比如当A向Hub发送数据要求转发给B时,C就不能给Hub发数据,同样当Hub在进行广播时,也不能接收数据。
二层交换机:二层交互机的工作原理类似于网桥,不同之处在于网桥只有2个端口,而交换机最少也有4个端口,还有24,48端口的交换机。多台主机可以直接与交换机连接而不用借助于Hub的帮助。同样的,交换机有Mac地址和端口的对应表。能根据Mac地址进行数据转发,因此交换机有1个广播域和N个冲突域,N为端口号。其次,交换机的转发性能和价格远远低于网桥,因此二层交换机被广泛使用。
三层交换机:VLAN在传统二层交换机的基础上多了VLAN功能,能够自主划分广播域(每个VLAN就是一个广播域),并且可以配置IP地址,方便远程管理。三层交换机又比VLAN多了路由的功能,它数据网络层设备。工程中,有时候需要将IP地址和Mac绑定,这就需要使用三层交换机。它能够IP地址进行数据转发。
路由器:路由器是一种连接多个网段的网络层设备。它能够为不同网段中的两台主机提供信息转发功能,路由器不是一个纯硬件的转发设备,而是软硬结合的智能设备,可以通过各种路由协议来连接不同网段,通过路由器就能构建一个更大的网络。路由器具有判断网络地址和选择路径的功能,可以在复杂的网络环境中建立灵活的连接。路由器的每一个端口是一个单独的广播域和冲突域。使用路由器将LAN连接入WAN是最普遍的方式。每个LAN可以有自己的拓扑结构,传输介质等,他们通过路由器连入大网络中彼此又保持独立。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
A类地址:第一个字节表示网络位,后三个字节表示主机位。第一个字节的范围是0~127。0和127被保留,因此A类地址共有126个。每个网段最多可有2^24 – 2台主机。
B类地址:前两位字节表示网络号。第一个字节范围128~191表示B类网络地址。每个B类网络地址最多可有2^16 – 2台主机。
C类地址:前三位表示网络号。第一个字节的范围192~223表示C类网络地址。每个C类地址最多可有2^8 – 2台主机。
D类地址:第一位字节的范围224~239,用于组播地址
E类地址:第一位字节的范围240~255,用于科研
私有IP地址:A类地址中的10.0.0.0/8。B类地址中的172.16.0.0/16~172.31.255.255/16,共16个网段。C类地址中的192.168.0.0/24~192.168.255.255/24,共256个网段。
子网掩码是用于判断网段的。例如192.168.1.1/24和192.168.2.1/24它们都是C类网络且网段不同,因此属于不同的冲突域广播域。但如果这样表示192.168.1.1/22和192.168.2.1/22,那它们就都属于192.168.0.0/22这个网段,属于一个子网。
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI模型从上至下分为:应用层,表示层,会话层,传输层,网络层,数据链路层和物理层。基本设计思想上一层调用下一层提供的服务,每层独立设计协议,独立实现,只需同一调用接口。数据传输时,源主机和目标主机之间的通信是相同层之间的通信。
TCP/IP模式是实际模型。分为四层,应用层,传输层,网际层和网络访问层,分别与OSI模型中的层次对应。应用层是用户空间的层次,常见的应用层协议有DNS,HTTP,SMTP,FTP等。传输层协议有TCP和UDP,网络层主要进行IP寻址,使用路由器和网关。网络访问层是底层,用于解决主机接入网络和01数据流如何编码如何传输等底层问题。
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
为了将虚拟机连入网络,首先要查看本地实体机的IP地址及网关地址,DNS地址。
通过windows控制面板查看本地连接的网络属性,找到本机IP为192.168.1.3,DNS服务器与网关均为192.168.1.1。
网络连接模式选择桥接模式,安装完虚拟机后。配置本机的网络属性配置文件/etc/sysconfig/network-scripts/eno-eth0。如下所示:
TYPE=Ethernet
PEERDNS=no
IPV6INIT=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
UUID=2c854f49-191e-4760-a5aa-f5acfc07384b
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.1.67
PREFIX=24
GATEWAY=192.168.1.1
DNS=192.168.1.1
NM_CONTROLLED=no
再配置DNS服务器地址和实体机相同,编辑/etc/resolv.conf。添加一条记录为:
nameserver 192.168.1.1即可。
配置好这两个文件后,还需确保防火墙,selinux,NetworkManager处于关闭状态。分别使用 :
]# service iptables stop
]# chkconfig iptables off (关闭并禁用防火墙)
编辑/etc/sysconfig/selinux,确保SELINUX的值为disabled(关闭selinux)
使用 ]# chkconfig –list NetworkManger 确保NetworkManager是否禁止开机自启
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
可以通过网络相关命令或者修改配置文件来为Linux系统配置网络信息。使用命令行配置立即生效,但重启后无效,修改配置文件不会立即生效,但重启网络服务后永久有效。
网络配置相关命令主要有ifcfg家族,可以用ifconfig配置IP地址和子网掩码,用route配置网关和本地路由表,用netstat命令查看网络连接状态。另外还有iproute2家族,可用ip addr配置ip地址和子网掩码,用ip route配置网关路由,用ip link配置接口信息,还能用ss命令查看网络连接状态和统计数据。
配置文件主要在/etc/sysconfig/network-scripts和/etc/resolv.conf中进行配置,前者配置网卡接口的ip地址,掩码,网关等信息,后者配置DNS信息。
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
``` #!/bin/bash # for i in `seq 254`;do if ping -c 1 -W1 172.16.250.$i &> /dev/null;then echo -e "\033[32m 172.16.250.$i is online. \033[0m" else echo -e "\033[31m 172.16.250.$i is not online. \033[0m" fi done ```
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
以本机所用的配置为例:
TYPE=Ethernet
PEERDNS=no
IPV6INIT=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
UUID=2c854f49-191e-4760-a5aa-f5acfc07384b
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.1.67
PREFIX=24
GATEWAY=192.168.1.1
DNS=192.168.1.1
NM_CONTROLLED=no
其中最重要的是ONBOOT和BOOTPROTO,前者表示开机自动激活此接口,后者表示采用什么协议配置激活此网络接口,一般用none或者dhcp。如果选择了dhcp(自动分配机制),那么ip地址,网关,掩码等信息就不需要给出了。反之则需要手动给出,为了固定ip地址,一般都选择none。另外关闭NM_CONTROLLED是为了防止NetworkManager服务随意修改参数,DEFROUTE表示采用默认路由。
8、如何给网络接口配置多个地址,有哪些方式?
能用ip addr命令或者ifconfig命令,修改配置文件也能为接口配置多个地址。
例如
]# ip addr add 192.168.100.10/24 dev eth1
]# ip addr add 172.16.100.10/16 dev eth1 label eth1:0
]# ifconfig eno16777736:0 172.16.100.10/16
首先为接口配置了地址192.168.100.10/24这个ip地址。随后可以用ip addr 或者ifconfig命令为接口再配置一个地址,此时需要给接口一个Label eth1:0
另外可以复制一份已有的配置文件 /etc/sysconfig/network-scripts/ifcfg-eno16777736为 /etc/sysconfig/network-scripts/ifcfg-eno16777736:0。随后进入修改对应的IP地址和掩码即可。注意BOOTPROTO一定不能为dhcp,另外DEVICE名也需要相应的修改。
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifconfig命令:接口及地址查看和管理
# ifconfig -a:显示所有接口,包括inactive状态的接口
# ifconfig INTERFACE IP/MASK [up|down] :配置接口地址
e.g. ]# ifconfig eno16777736 192.168.1.67/24 up
route命令:路由查看及管理
# route -n:查看本机路由条目
e.g. ]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno16777736
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
添加路由信息:
]# route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
表示要到达10.0.0.0/8这一网段要先通过192.168.10.1这一跳
添加默认网关:
]# route add default gw 192.168.10.1
删除路由条目:
]# route del -net 10.0.0.0/8 gw 192.168.10.1
]# route del default
ip命令:
]# ip addr add 192.168.100.10/24 dev eth1:为接口新加一个地址
]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1
表示要到192.168.0.0/24这一网段需要经过10.0.0.1这一跳
]# ip route add default via 10.0.0.1 dev eth1:添加默认网关
ss命令和netstat命令
常用组合: netstat -tan(显示连接、监听状态的tcp连接), -uan, -tnl(显示监听状态的tcp), -unl, -tunlp(显示监听状态的tcp,udp连接和它们的相关进程)
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
CentOS使用yum作为前台的包管理工具:
]# yum repolist 查看本机可用的yum仓库。
]# yum list [installed] GLOB 查看某程序包是否安装
]# yum install 安装
]# yum info 查看已安装程序包的相关信息
]# yum upgrade 升级,一般不升级,可能导致系统不可用。如需其他版本直接安装即可
]# yum remove 删除某程序包,依赖于此程序包的软件也会被删除,慎用
]# yum {grouplist,groupinstall} 安装程序包组
]# yum clean all yum工具没法用时一般可以清理一下本地缓存文件
e.g. 本机的epel yum仓库配置
name=aliyun.epel
baseurl=http://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
也可以使用rpm命令进行程序包的安装,查询等管理。
安装通用命令格式:rpm -ivh PACKAGE_FILE …
升级命令:rpm -Uvh PACKAGE_FILE ..
更多情况下用rpm命令进行查询程序包的相关信息。
rpm -qa: 查询已经安装了的程序包
e.g. ]#rpm -qa | grep "^m" 模糊查找以m开头的包
rpm -qf :查询指定文件由哪个程序包生成
e.g. ]# rpm -qf /etc/fstab
rpm -qi:查询已安装程序包的相关信息
e.g. ]# rpm -qi bash
11、如何使用发行版光盘作为yum repository,请描述该过程。
先挂载光盘 ]# mount -r /dev/cdrom /media/cdrom
在/etc/yum.repos.d目录下新建一个repo文件为dvd.repo:
[CentOS7]
name=dvd.repo
baseurl=file:///media/cdrom/
gpgcheck=0
用 yum repolist 验证挂载成功
源标识 源名称 状态
CentOS7 dvd.repo 3,723
base/7/x86_64 CentOS-7 – Base 9,007
epel aliyun.epel 10,681
extras/7/x86_64 CentOS-7 – Extras 392
updates/7/x86_64 CentOS-7 – Updates 2,529
repolist: 26,332
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
``` #!/bin/bash # declare -i Kstart=0 declare -i Sstart=0 for file in /etc/rc.d/rc3.d/*;do if [[ $(basename $file) =~ "K" ]];then let Kstart++ echo -e "$(basename $file)\033[31;1m Stop \033[0m" fi if [[ $(basename $file) =~ "S" ]];then let Sstart++ echo -e "$(basename $file)\033[32;1m Start \033[0m" fi done echo "This directory has $Kstart file start with K and $Sstart files start with S" ```
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
``` #!/bin/bash # declare -i sum=0 for i in $*;do id=$(id -u $i) &> /dev/null sum=$[$sum+$id] done echo "The id_sum of this users is $sum." ```
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
``` #!/bin/bash # declare -i sub_dir=0 declare -i normal_file=0 declare -i block_file=0 declare -i char_file=0 declare -i link_file=0 declare -i num=0 for dir in $*;do echo -e " \033[31m DIR $dir \033[0m:" for file in $dir/*;do if [ -d $file ];then echo -e "\t$(basename $file) is sub_dir" && let num++ elif [ -b $file ];then echo -e "\t$(basename $file) is block_file" && let num++ elif [ -c $file ];then echo -e "\t$(basename $file) is char_file" && let num++ elif [ -h $file ];then echo -e "\t$(basename $file) is link_file" && let num++ elif [ -f $file ];then echo -e "\t$(basename $file) is normal_file" && let num++ else echo -e "\t$(basename $file) is Unknown type file" && let num++ fi done done echo "We give script $# dir and we get $num files-type details. " ```
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
``` #!/bin/bash # if [ $(id -u $1) -ge 500 ];then echo "Normal user." fi ```
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
``` #!/bin/bash # declare -i sum=0 for i in `seq 10`;do if ! id user$i &> /dev/null;then useradd user$i echo "user$i" | passwd --stdin user$i let sum++ fi done echo "We add $sum users this time." ```
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
``` #!/bin/bash # for i in `seq 20 100`;do if ping -c 1 -W1 172.16.250.$i &> /dev/null;then echo -e "\033[32;1m 172.16.250.$i is online. \033[0m" fi done ```
18、打印九九乘法表;
``` #!/usr/bin/python # for i in range(1,10): for j in range(1,10): print("%-2d * %-2d = %-2d" % (i,j,i*j),end=" ") print("\n") ```
原创文章,作者:上海-brown,如若转载,请注明出处:http://www.178linux.com/52984
评论列表(1条)
完成的非常好,给出了详细操作步骤,脚本思路清晰,能把排版在完善一下就更完美了,加油!