1. 请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥:工作在OSI模型的数据链路层,将两个局域网连起来,根据MAC地址来转发帧。它可以有效地连接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于连接数量不多的、同一类型的网段,它可以扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。集线器:主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,它工作于OSI模型中的“物理层”,因为采用“广播”模式,所以很容易产生“广播风暴”,大部份集线器已被交换机取代。
二层交换机: 工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发展已经比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中,能够隔离冲突域和有效抑制“广播风暴”的产生。
三层交换机:具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。
路由器:其功能是决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。其工作模式与二层交换机相似,但路由器工作在OSI模型的第三层——网络层,这个区别决定了路由和交换机在传递包时使用不同的控制信息,实现功能的方式就不同。适用于局域网间互联,局域网与城域网互联互通。
2. IP地址的分类有哪些?子网掩码的表示形式及其作用
3.计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
4. 如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
1.编辑/etc/sysconfig/network-scripts/ifcfg-eno16777728,此为centos7系统,名称可能有所不同,centos6系统为ifcfg-eth0
~]# cat ifcfg-eno16777728
TYPE=Ethernet #指明接口类型,常见的有Ethernet,Bridge,可忽略不写;
BOOTPROTO=static #激活此接口时使用什么协议来配置接口属性,这里为静态
IPV6INIT=yes #是否初始化IPV6
NAME=eno16777728
DEVICE=eno16777728
ONBOOT=yes #在系统的引导过程中,是否激活此接口
IPADDR=192.168.137.70 #IP地址
NETMASK=255.255.255.0 #掩码
GATEWAY=192.168.137.1 #网关
DNS1=210.21.196.6 #主DNS
DNS2=119.233.255.229 #备DNS
2.重启网络
~]# systemctl restart network.service
5.为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1.临时修改,只在此shell中和子shell中运行,下次登录失效
]# ifconfig eno16777728 192.168.137.71/24
2.编辑配置文件
~]# cat ifcfg-eno16777728
DEVICE=eno16777728
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.70
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=210.21.196.6
DNS2=119.233.255.229
6. 写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash
#
IP=172.16.250
for i in {1..254};do
if ping -c 1 -w 1 $IP.$i &>/dev/null;then
echo -e "\033[32m $IP.$i is online. \033[0m"
else
echo -e "\033[31m $IP.$i is off. \033[0m"
fi
done
7. 详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
ifcfg-接口名配置文件
DEVICE
:此配置文件对应的设备的名称;ONBOOT
:在系统的引导过程中,是否激活此接口;UUID
:此设备的唯一标识;IPV6INIT
:是否初始化IPV6BOOTPROTO
:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;TYPE
:指明接口类型,常见的有Ethernet,Bridge;DNS1
:第一dns服务器指向;DNS2
:备用dns服务器指向;DOMAIN
:DNS搜索域;IPADDR
:配置ip地址;NETMASK
:子网掩码;centos7支持使用PREFIX以长度方式指明子网掩码;GATEWAY
:默认网关;USERCTL
:是否允许普通用户控制此设备;PEERDNS
:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的dns服务器指向;默认为允许:yesNM_CONTROLLED
:是否使用NetworkManager服务来控制接口;HWADDR
:设备的mac地址;
8. 如何给网络接口配置多个地址,有哪些方式?
1.临时生效
# ifconfig eno16777728:0 192.168.137.71/24 up
2.修改配置文件生效
~]# cat ifcfg-eno16777728:0
DEVICE=eno16777728:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.137.71
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=210.21.196.6
DNS2=119.233.255.229
9. 常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifconfig命令
:接口及地址查看和管理ifconfig [INTERFACE]
ifconfig interface [aftype] options |address
ifconfig IFACE IP/MASK [up]
ifconfig IFACE IP netmask NETMASK
route命令
:路由查看及管理
查看路由:route -n
添加:route -add [-net|-host] target [netmask NM] [gw GW] [[dev]if]
删除:
route del [-net|-host] target [gw GW] [netmask Nm] [[dev]if]
netstat命令:
显示路由:netstat -rn
-r
:显示内核路由表-n
:数字格式显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--listening|-l] [--raw|-w] [--all|-a] [--numeric|-n] [--extend|-e] [--program|-p]
-t
:TCP协议的相关连接,连接均有其状态;FSM(finate state macheine);-u
:udp相关的连接-w
:raw socket相关的连接-l
:处于监听状态的连接-a
:所有状态-n
:以数字格式显示IP和port-e
:扩展格式-p
:显示相关的进程及PID常用组合:
-tan -uan -tnl ,unl,tunlp
显示接口的统计数据:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
所有接口:
netstat -i
指定接口:netstat -I<iface>
ifup/ifdown命令:
注意:通过配置文件来识别接口并完成配置;
iproute2家族:
ip命令:
show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT={link|addr|route|netns}
ip OBJECT:
ip link
:network device configurationip link set
– change device attributesdev NAME (default)
:指明要管理的设备,dev关键字可省略;up and down
multicast on
或multicast off
启用或关闭多播功能;ip link show - display device attributes
ip link help
显示简要使用帮助
ip netns list
列出所有的netnsip netns add NAME
创建指定的netnsip netns del NAME
删除指定的netnsip netns exec NAME COMMAND
在指定的netns中运行命令ip address add -add new protocol address
ip addr add IFADDR dev IFACE
[label NAME]
:为额外的地址指明接口别名
ip address delete
删除指定接口地址;ip address flush
清空地址别名;
ip route { add | del | change | append | replace |monitor } ROUTE
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ss命令:
ss [options] [ FILTER ] [EXPRESSION]
选项:-t
:tcp协议的相关连接-u
:UDP相关的连接;-w
:raw socket相关连接-l
:监听状态的连接-a
:所有状态连接;-n
:数字格式-p
:相关的程序及PID-e
:扩展格式信息;-m
:内存用量-o
:计时器信息
10. Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
rpm安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -ivh package_file
GENERAL OPTIONS:
-v
:详细信息-vv
:更加详细信息
[install-options]
:-h
:hash marks
输出进度条,每个#
表示2%
的进度;--test
:测试安装,检查并报告依赖关系及冲突消息等;--nodeps
:忽略依赖关系;不建议;--replacepkgs
:重新安装注意:rpm可以自带脚本
四类:--noscripts
preinstall
:安装过程开始之前运行的脚本,%pre,--nopre
postinstal
l:安装过程完成之后运行的脚本,%post,--nopost
preuninstall
:卸载过程真正开始执行之前运行的脚本,%postun,--nopreun
postuninstall
:卸载过程完成之后运行的脚本,%postun,--nopostun
--nosignature
:不检查包签名信息,不检查来源合法性;--nodigest
:不检查包完整性信息;
rpm升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升级或安装
-F:升级
rpm -Uvh package_file...
rpm -Fvh package_file...
--oldpackage
:降级;--force
:强制升级或降级;注意:
不要对内核做升级操作;Linux支持多内核并存,因此,直接安装新版内核;
如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名
(filename.rpmnew)
后提供;
rpm卸载
rpm {-e|--erase} [--allmatches] [--nodeps][--noscripts][--test] PACKAGE_NAME ...
--allmatches
:卸载所有匹配指定名称的程序包的各版本;--nodeps
:忽略依赖关系;
–-test
:测试卸载,dry run 模式
rpm查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
:PACKAGE_NAME
:查询指定的程序包是否已经安装,及其版本;-a,--all
:查询所有已经安装过的包;-f,FILE
:查询指定的文件由哪个程序包安装生成;-p,--package PACKAGE_FILE
:用于实现对未安装的程序包执行查询操作;--whatprovides CAPABILITY
:查询指定的CAPABILITY
由哪个程序包提供;--whatrequires CAPABILITY
:查询指定的CAPABILITY
被哪个包所依赖;
[query-options]
:--changelog
:查询rpm
包的changelog
;-l,--list
:程序包安装生成的所有列表;-i,--info
:程序包相关的信息,版本号、大小、所属的包组,等;-c,--configfiles
:查询指定的程序提供的配置文件;-d,--docfiles
:查询指定的程序提供的文档;--provides
:列出指定的程序包提供的所有的CAPABILITY;-E,--requires
:查询指定的程序包的依赖关系;--scripts
:查看程序包自带的脚本片段;用法:
-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE,-qpi PACKAGE_FILE,-qpl PACKAGE_FILE,-qpc PACKAGE_FILE...
rpm校验
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ包来源合法性验证和完整性验证:
来源合法性验证:
完整性验证:获取并导入信任的包制作者密钥:
对于centos发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-xxx
验证:
1. 安装此组织签名的程序时,会自动执行验证;
2. 手动验证:rpm -K package_file
数据库重建
rpm管理器数据库路径:
/var/lib/rpm/
查询操作:通过此处的数据库进行;获取帮助:
centos:man rpm
centos:man rpmdb
rpm {--initdb|--rebuilddb}
--initdb
:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;--rebuilddb
:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
yum
命令的用法:
yum [options] [command] [package ...]
显示仓库列表
repolist [all|enabled|disabled]
显示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|insitalled|updates} [glob_exp1] [...]
安装程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...]
重新安装升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...]
降级检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] [...]
查看程序包
information
info [...]
查看指定的特性(可以是某文件哪个程序包所提供)是由:
rpm -qf
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb| plugins | all ]
构建缓存:
makecache
搜索:
search string1 [string2] [...]
以指定的关键字搜索程序包名已summary
(摘要)信息;查看指定包所依赖的
capabilities
:deplist package1 [package2] [...]
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
centos6以后可忽略localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
yum
命令行选项:--nogpgcheck
:禁止运行gpg check
;-y
:自动回答为“yes
”;-q
:静默模式;--disablerepo=repoidglob
:临时禁用此处指定的repo;--enablerepo=repoidglob
:临时启用此处指定的repo;--noplugins
:禁用所有的插件;
yum
的repo
配置文件中可用的变量:$releasever
:当前OS的发行版的主版本号;$arch
:平台类型;$basearch
:基础平台;$YUM0-YUM9
例如:http://mirrors.magedu.com/centos/$releaserver/$basearch/os
创建YUM仓库:
createrepo [options] <directory>
11. 如何使用发行版光盘作为yum repository,请描述该过程。
1.挂载光盘
mount -r /dev/cdrom /mnt/
2.创建本地yum仓库
~]# cat isodata.repo
[isodata]
name=isodata
baseurl=file:///mnt/
enable=1
gpgcheck=0
12. 写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash
#
declare -i k_file=0
declare -i s_file=0
for i in $(ls /etc/rc.d/rc3.d/ |grep ^K);do
echo "$i stop"
let k_file++
done
for i in $(ls /etc/rc.d/rc3.d/ |grep ^S);do
echo "$i start"
let s_file++
done
echo "There are $k_file at the beginning of K"
echo "There are $s_file at the beginning of S"
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数
(2) 计算此些用户的ID之和
#!/bin/bash
#
declare -i sum=0
if [ $# -lt 1 ];then
echo "Usage:$basename $0 username1 username2 ..."
exit 3
fi
for i in $*;do
if id $i &> /dev/null;then
let sum=$sum+$(id -u $i)
else
echo "user $i is not existed!"
exit 5
fi
done
echo "The sum of the uid for these users is $sum"
14. 写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash
#
declare -i sum=0
for i in $*;do
echo $i
for file in $i/*;do
[ -f $file ] && echo "$file is a common file."
[ -d $file ] && echo "$file is a directory." && let sum++
[ -c $file ] && echo "$file is a Character device file."
[ -L $file ] && echo "$file is a symbolic link file"
done
done
echo "The $* directory have $sum."
15. 写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash
#
if [ $# -ge 2 -o $# -lt 1 ];then
echo "Usage:basename $0 USER"
exit 3
fi
if id $1 &>/dev/null;then
if [[ $(id -u $1) -ge 500 ]];then
echo "$1 is common user"
fi
else
echo "$1 user is not exists"
fi
16. 写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash
#
declare -i sum=0
for i in user{1..10};do
if id $i &>/dev/null;then
echo "$i is exists."
else
useradd $i &>/dev/null
echo "$i" |passwd --stdin $i &>/dev/null
let sum++
fi
done
echo "Add user $sum."
17. 写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/bash
#
IP=172.16.250
for ((i=20;i<=100;i++));do
if ping -c 1 -w 1 $IP.$i &>/dev/null;then
echo "The $IP.$i is online."
fi
done
18. 打印九九乘法表;
#!/bin/bash
#
for ((i=1;i<=9;i++));do
for ((j=1;j<=$i;j++));do
let sum=$i*$j
echo -en ""$i"X"$j"=$sum "
done
echo ""
done
原创文章,作者:N22-白蚁,如若转载,请注明出处:http://www.178linux.com/64115
评论列表(1条)
赞,写的不错~IP地址分类可以补充一下私有地址段。