1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥(network bridge)
网桥工作于物理层与数据链路层,在终端设备较多的局域网中可以用网桥设备将局域网分离为不同的冲突域(collision domain),减少网络冲突,提升网络传输效率
集线器(network hub)
集线器具有多个I/O端口,一个端口的输入信号会广播到其他所有端口,其工作在OSI模型的物理层,目前这种设备已经很少使用,而被网络交换机所取代
二层交换机(network switch)
采用包交换技术接收、处理、转发数据到目标设备,与集线器不同,交换机只转发数据到一个或多个需要接收数据在端口,工作于数据链路层,已是目前组网常用设备
三层交换机
合并路由功能的交换机,使用IP地址实现包转发,工作于数据链路层和网络层
路由
用于连接不同网络并根据路由表和路由策略提供路由转发功能工作于网络层
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
IP地址主要分为ABC三类网络
A类网络,网络位8位,主机位24位,起始地址0.0.0.0 结束地址 127.255.255.255
B类网络,网络位16位,主机位16位,起始地址128.0.0.0 结束地址 191.255.255.255
C类网络,网络位24位,主机位8位,起始地址192.0.0.0 结束地址 223.255.255.255
私网地址
A类网络,包含1个私网地址 起始地址10.0.0.0 结束地址10.255.255.255
B类网络,包含16个私网地址 起始地址172.16.0.0 结束地址17.31.255.255
C类网络,包含256个私网地址 起始地址192.168.0.0 结束地址192.168.255.255
子网掩码
用于与IP地址进行计算得到网络地址,以确定通信目标主机与源主机是否位于同一网络
其表示形式有点分十进制和网络位长形式
示例:C类网络主机地址192.168.0.10,其子网掩码可以表示为255.255.255.0或192.168.0.0/24
3、计算机网络的分层模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
TCP/IP模型分为四层
-
应用层(Application layer)
-
传输层(Transport layer)
-
因特网层(Internet layer)
-
链路层(Link layer)
OSI模型分为七层
-
应用层(Application layer)
-
表示层(Prsentation layer)
-
会话层(Session layer)
-
传输层(Transport layer)
-
网络层(Network layer)
-
数据链路层(Data link layer)
-
物理层(Physical layer)
物理层
定义数据连接的物理与电气规范,定义设备与物理传输介质(铜线、光纤、无线电)之间的关系,包括针脚、电压、阻抗、线缆规范、信号持续时间等特性,负责传输无结构在数据,传输模式有半双工和全双工,定义网络拓扑,这个层次不会涉及协议,网卡,中继器,集线器,调制解调器,光电转换器是这一层的常见设备
数据链路层
负责直连设备节点之间的数据传输及传输过程中物理层错误检查与流控,以数据帧为传输单元,根据MAC地址确定目标设备,这一层常见设备主要是交换机
网络层
根据路由表和路由协议选择传输路径,传输过程可能需要将数据分片,这一层的设备主要有路由器,三层交换机
传输层
在发送端负责切分应用层数据并创建数据包,接收端重组数据包,通过流控,错误控制,尽量保证数据可靠性,有些传输层协议面向连接,可以提供错包重传与传输成功确认机制。
会话层
负责建立、管理、结束本机与远程主机之间的连接
表示层
完成数据的格式化与加密等功能
应用层
负责标识通信伙伴,决定资源可用性,与同步通讯
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
通过设定网卡的IP地址、子网掩码、网关、DNS服务器可以将Linux主机接入网络
(1)新加的网卡,没有配置文件,从dhcp获取IP
dhclient eth1
(2)新加网卡,没有配置文件,命令设置IP、子网掩码、网关
# 设置ip
ifconfig eth1 192.168.35.130 netmask 255.255.255.0
# 设置网关
route add default gw 192.168.35.2
(3)新加网卡,没有配置文件,命令设置IP、子网掩码、网关
# 设置ip
ip address add 192.168.35.130/24 dev eth1
# 设置网关
ip route add default via 192.168.35.2
(4)配置文件 (静态地址)
# DEVICE=eth1
IPADDR=192.168.35.130
NETMASK=255.255.255.0
GATEWAY=293.168.35.2
ONBOOT=yes
(5)配置文件(动态获取IP)
DEVICE=eth1
BOOTPROTO=dhcp
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1、编辑配置文件并重启网络服务(重启系统有效)
2、命令设置(重启后无效,需要重新配置)
配置文件路径
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
NAME=eth1 友好名称
BOOTPROTO=none|bootp|dhcp (none指定静态ip,bootp、dhcp指定动态获取ip)
ONBOOT=yes|no 系统引导时是否启用网卡
IPADDR=192.168.35.140 ip地址
GATEWAY=192.168.35.2 网关
PREFIX=24 网络位长度
有三组命令可以配置网络
(1) ifconfig 设置 IP
route 设置路由
(2) ip address 设置 IP
ip route 设置路由
(3) nmcli 命令
同时设置ip和路由
~]# nmcli c modify eth1 ipv4.address 192.168.35.140/24 ipv4.gateway 192.168.35.2
设置动态获取ip
~]# nmcli c modify eth1 ipv4.method auto
设置静态ip
~]# nmcli c modify eth1 ipv4.method manual
(4) 通过界面设置
nmtui
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash
ip="192.168.0."
for i in {100..105};do
ping -c 1 -n -W 1 "$ip$i">/dev/null
if [ $? -eq 0 ]; then
echo -e "\033[32m $ip$i is online \033[0m"
else
echo -e "\033[31m $ip$i is offline \033[0m"
fi
done
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
NAME=网卡友好名称
IPADDR=IPV4地址
GATEWAY=网关
BOOTPROTO=none|dhcp|bootp
PREFIX=网络位长度
NETMASK=子网掩码
DEVICE=物理设备名
ONBOOT=yes|no 系统引导时是否启用网卡
MTU=最大传输单元
PEERDNS=yes|no 是否允许修改DNS文件 /etc/resolv.conf
DNS1=DNS1的ip地址
DNS2=DNS2的ip地址
HWADDR=MAC地址
MACADDR=指定MAC地址
IPV4_FAILURE_FATAL=yes|no 当设置yes时,如果dhclient失败,ifup立即结束
8、如何给网络接口配置多个地址,有哪些方式?
~]# nmcli c modify eth1 +ipv4.address 192.168.35.132/24 网卡从启后生效
~]# nmcli c up eth1
~]# nmcli d show eno33554984
~]# nmcli c modify eth1 -ipv4.address 3 删除ip地址 索引从0开始
(2) 使用ifconfig命令
设置或修改ip
~]# ifconfig eth1 192.168.35.138/24
添加多个ip
~]# ifconfig eno33554984:2 192.168.35.143 netmask 255.255.255.0
删除ip
~]# ifconfig eno33554984:2 down
(3) 使用ip命令
添加ip时指定label 以便ifconfig 命令可以识别
~]# ip addr add 192.168.35.142 broadcast 192.168.35.255 label eno33554984:0 dev eno33554984
删除ip
~]# ip addr del 192.168.35.150/32 dev eth1
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
- ifconfig route netstat
- ip ss
- nmcli
- nutui
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
使用rpm命令和yum命令
yum
查看yum源
yum repolist
安装程序包
yum -y install httpd
删除程序包
yum remove httpd-tools
查看程序包
yum info httpd
检查是否有升级程序包
yum check-update httpd-tools
升级程序包
yum update httpd-tools
列举程序包组
yum grouplist
yum group list hidden
查看包组信息
groupinfo "Basic Web Server"
安装包组
yum groupinstall "web-server"
删除包组
yum group remove web-server
rpm
查看程序包版本
rpm -q httpd
卸载程序包
rpm -e keepalived
安装程序包
rpm -ivh keepalived-1.2.13-8.el7.x86_64.rpm
查看程序包安装过程生成的文件
rpm -ql keepalived
查看指定文件属于哪个程序包
rpm -qf /usr/sbin/keepalived
查看未安装包的配置文件
rpm -qpc keepalived-1.2.13-8.el7.x86_64.rpm
查看程序包配置文件
rpm -qc keepalived
查看程序包帮助文档
rpm -qd bash
11、如何使用发行版光盘作为yum repository,请描述该过程。
# 挂载光盘
[root@localhost ~]# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
# 创建配置文件
vim /etc/yum.repos.d/cdrom.repo
…
[BaseCdRom]
name=Base from cd-rom
baseurl=file:///media/cdrom
gpgcheck=1
# 列出启用的yum仓库
[root@localhost ~]# yum repolist
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash
_listk() {
local files=($1/[kK]*)
local i
local -i j=0;
for i in ${files[@]};do
let j++
echo ${i}_STOP
done
return $j
}
_lists() {
local files=($1/[sS]*)
local i
local -i j=0
for i in ${files[@]};do
echo ${i}_START
let j++
done
return $j;
}
declare -i kn=0
declare -i sn=0;
for i in $@;do
echo $i;
_listk $i ;
kn+=$?;
_lists $i $sn;
sn+=$?
done
echo The number of files begin with 'k' is $kn
echo The number of files begin with 's' is $sn
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Please give one or more username as argument(s)" && exit 2
fi
param=$@
declare -a a_uid
str="(^${param// /\>)|(^}\>)"
a_uid=($(cat /etc/passwd | grep -E "$str" | cut -d: -f3))
declare -i sum=0;
for i in ${a_uid[@]};do
echo $i
sum+=$i
done
echo "The sum is $sum"
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash
function _ls_ftype {
files=($(ls $1))for f in ${files[@]};do
_ftype $1/$f
done
return ${#files[@]}
}
_ftype(){
if [ -b $1 ]; then
echo "$1 is block file"
elif [ -c $1 ]; then
echo "$1 is character file"
elif [ -f $1 ]; then
echo "$1 is regular file"
elif [ -p $1 ]; then
echo "$! is named pipe"
elif [ -d $1 ]; then
echo "$1 is a directory"
elif [ -S $1 ]; then
echo "$1 is socket"
elif [ -h $1 ]; then
echo "$1 is symbolic link"
else
echo "$1 unknow"
fi
}
declare -i num=0;
for i in $@;do
_ls_ftype $i
num+=$?
done
echo "Total $# directory, $num filetype displayed"
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash
declare -i uid_min=$(cat /etc/login.defs | grep -i "^uid_min" | grep -o "[0-9]\+$")
if [ $# -lt 1 ]; then
echo "Usage: $(basename $0) username" && exit 2
fi
declare -i user_id=$(cat /etc/passwd | grep "^$1\>" | cut -d: -f3)
if [ $user_id -eq 0 ];then
echo "User $1($user_id) is omnipotent administrative user"
elif [ $user_id -ge $uid_min ]; then
echo "User $1($user_id) is ordinary user"
else
echo "User $1($user_id) is system user"
fi
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash
declare -i k=0;
for i in {1..10};do
id "user$i" &> /dev/null
if [ $? -ne 0 ]; then
useradd "user$i" && echo "user$i" | passwd –stdin user$i > /dev/null && let k++
fi
done
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/bash
ip="192.168.0."
for i in {100..105};do
ping -c 1 -n -W 1 "$ip$i">/dev/null
if [ $? -eq 0 ]; then
echo -e "$ip$i is online"
fi
done
18、打印九九乘法表;
#!/bin/bash
for i in {1..9}; do
for (( j=1;j<=i;j++));do
echo -e -n "$i*$j=$(($i*$j)) "
done
echo
done
原创文章,作者:和风细雨,如若转载,请注明出处:http://www.178linux.com/68113
评论列表(1条)
写的很是不错呢