1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥:工作在OSI模型的数据链路层,将两个局域网连起来,根据MAC地址来转发帧,可以看作是一个“低层的路由器”(路由器工作在OSI模型的网络层,根据网络地址如IP地址进行转发)。它可以有效地联接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。
集线器:主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,属于OSI的第一层物理层设备,其工作方式采用“广播”模式,因此很容易产生“广播风暴”,大部份集线器已被交换机取代。适用于小型局域网主机互联。
二层交换机:工作于OSI模型的第二层,属于数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中,能够隔离冲突域和有效抑制“广播风暴”的产生。适用于中、小型局域网设备互联,或大型局域网接入层或汇聚层的设备接入。
三层交换机:具有部分路由器功能的交换机,其目的是加快大型局域网内部的数据交换,能够做到一次路由,多次转发。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。适用于中、大型局域网汇聚层或局域网出口。
路由器:其功能是决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。其工作模式与二层交换机相似,但路由器工作在OSI模型的第三层——网络层,这个区别决定了路由和交换机在传递包时使用不同的控制信息,实现功能的方式就不同。适用于局域网间互联,局域网与城域网互联互通。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用。
类别 | IP地址范围 |
子网掩码 | 作用 |
A类 | 1.0.0.0-127.255.255.255 | 255.0.0.0(/8) | 大型网络 |
B类 | 128.0.0.0-191.255.255.255 | 255.255.0.0(/16) | 中型网络 |
C类 | 192.0.0.0-223.255.255.255 | 255.255.255.0(/24) | 小型网络 |
D类 | 224.0.0.0-239.255.255.255 | 无 | 组播 |
E类 | 240.0.0.0-255.255.255.255 | 无 | 科研 |
3、计算机网络的分层模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI模型 | TCP/IP模型 | 功能 | 涉及协议或物理设备 |
应用层(Application Layer) | 应用层 | 访问网络服务的接口 | Telnet、FTP、HTTP、SNMP、DNS等 |
表示层(Presentation Layer) | 提供数据格式转换服务 | URL加密、口令加密、图片编解码等 | |
会话层(Session Layer) | 建立端连接并提供访问验证和会话管理 | 服务器验证用户登录、断点续传等 | |
传输层(Transport Layer) | 传输层 | 提供应用进程之间的逻辑通信 | TCP、UDP、SPX、进程、端口等 |
网络层(Network Layer) | 网络层 | 为数据在结点之间传输创建逻辑链路,并且组转发数据 | 路由器、多层交换机、防火墙,IP、IPX、RIP、DSPF等 |
数据链路层(Data Link Layer) | 网络接口层 | 在通信的实体间建立数据链路连接 | 网卡、网桥、二层交换机等 |
物理层(Physical Layer) | 为数据端设备提供原始比特流的传输的通路 | 中继器、集线器、网线、HUB,RJ-45标准等 |
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
#编辑网卡配置文件,以下以CentOS 7为例: [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #修改配置为手动指定ip地址,并设置ip地址、子网掩码、网关、DNS BOOTPROTO="static" IPADDR=192.168.0.86 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1 #重启网络服务即可 [root@localhost ~]# systemctl restart network.service
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
(1)使用命令行配置,立即生效
#设置ip地址、子网掩码、网关 1)ifcfg家族命令: ifconfig eth1 192.168.0.20 netmask 255.255.255.0 或 ifconfig eth1 192.168.0.20/24 route add default gw 192.168.0.1 2)iproute2家族命令: ip addr add 192.168.0.100/24 dev eth1 ip route add default via 192.168.0.1 #配置DNS服务器 编辑配置文件:/etc/resolv.conf nameserver 192.168.0.1
(2)修改网卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 #修改配置为手动指定ip地址,并设置ip地址、子网掩码、网关、DNS BOOTPROTO="static" IPADDR=192.168.0.86 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1 #重启网络服务即可 [root@localhost ~]# systemctl restart network.service
(3)使用图形化工具配置
CentOS 6:system-config-network(setup)
CentOS 7:nmtui
注意:修改完成后需要重启网络服务
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash for i in {1..254}; do if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then echo -e "\033[32m 172.16.250.$i \033[0m" else echo -e "\033[31m 172.16.250.$i \033[0m" fi done
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值。
ifcfg-IFACE配置文件参数:
DEVICE:此配置文件对应的设备名称
ONBOOT:在系统引导过程中,是否激活此接口
UUID:此设备的唯一标识
IPV6INIT:是否初始化IPV6
BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none
TYPE:接口类型,常见的有Ethernet,Bridge
DNS1:第一DNS服务器指向
DNS2:备用DNS服务器指向
DOMAIN:DNS搜索域
IPADDR:IP地址
NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码
GATEWAY:默认网关
USERCTL:是否允许普通用户控制此设备
PEERDNS:如果BOOTPROTO的值为"dhcp",是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许
HWADDR:设备的MAC地址
NM_CONTROLLED:是否使用NetworkManager服务来控制接口
8、如何给网络接口配置多个地址,有哪些方式?
(1)使用命令行配置,立即生效
~]# ip addr add 192.168.20.190/24 dev eno16777736 或 #为指定网卡添加别名 ~]# ip addr add 192.168.20.191/24 dev eth1 label eth1:0 或 ~]# ifconfig eth0:0 192.168.20.192/24
(2)添加网卡别名配置文件,需要重启网络服务
~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736:0 DEVICE="eno16777736:0" BOOTPROTO="static" IPADDR=192.168.0.22 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=192.168.0.1
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifconfig命令:接口及地址查看和管理
ifconfig -a:显示所有接口,包括inactive(非激活)状态的接口
ifconfig IFACE IP/MASK [up|down] 设置IP地址
~]# ifconfig eth1 192.168.100.20/24
ifconfig IFACE_LABEL IP/MASK 设置网卡别名地址
~]# ifconfig eth1:1 192.168.101.20/24
route命令:路由查看及管理
route -n:查看路由信息
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] 添加路由条目
~]# route add -net 10.0.0.1/8 gw 192.168.10.1 dev eth1
~]# 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:routing,显示内核路由表
-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协议的相关连接,连接均有其状态,此处仅显示ESTABLISHED(已建立的)连接状态;FSM(Finite State Machine)
-u:UDP协议的相关连接
-w:raw socket(裸套接字)相关的连接
-l:处于监听(LISTEN)状态的连接
-a:所有状态的连接
-n:以数字格式显示IP和Port
-e:扩展格式
-p:显示相关的进程及PID(只有root用户才能显示,普通用户显示为-)
常用组合:
-tan,-uan,-tnl,-unl,-tunlp
ifup/ifdown命令:
语法格式:ifup/ifdown IFACE 启用/禁用指定接口
注意:此命令通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置
ip命令:show / manipulate routing, devices, policy routing and tunnels
语法格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意: OBJECT可简写,各OBJECT的子命令也可简写
ip OBJECT:
ip link:network device configuration
ip link set – change device attributes
dev NAME (default):指明要管理的设备,dev关键字可省略
dev up/down:启用/禁用指定网卡
multicast on/multicast off:启用或禁用多播功能
name NAME:重命名接口
mtu NUMBER:设置MTU的大小,默认为1500
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间
~]# ip link set eth1 netns mynetns
ip link show – display device attributes
ip link help – 显示简要使用帮助
ip netns – manage network namespaces
ip netns list:列出所有的netns
ip netns add NAME:创建指定名称的netns
ip netns del NAME:删除指定名称的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
~]# ip netns exec mynetns ip link show
ip-address – protocol address management
ip address add – add new protocol address
ip addr add IPADDR dev IFACE
~]# ip addr add 192.168.10.100/24 dev eth1
[label NAME] 为额外添加的地址指明接口别名
~]# ip addr add 192.168.0.32/24 dev eno16777736 label eno16777736:0
[broadcast ADDRESS] 广播地址;会根据IP和NETMASK自动计算得到
[scope SCOPE_VALUE]
global:全局可用
link:接口可用
host:仅本机可用
ip address delete – delete protocol address
ip addr del IPADDR dev IFACE
ip address show – look at protocol addresses
ip addr show/list [IFACE] 显示指定接口的地址
ip address flush – flush protocol addresses 清空ip地址
ip addr flush dev IFACE
ip route – routing table management
ip route change – change route
ip route replace – change or add new one
ip route add – add new route
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
~]# ip route add default via 192.168.0.1 添加默认路由
ip route delete – delete route
ip route del TYPE PREFIX
~]# ip route delete 192.168.1.0/24
ip route show – list routes
ip route show TYPE PREFIX
ip route flush – flush routing tables 清空路由表
ip route flush TYPE PREFIX
ip route get – get a single route
ip route get TYPE PREFIX
~]# ip route get 192.168.0.0/24
ss命令:another utility to investigate sockets
语法格式:ss [options] [ FILTER ]
选项:
-t:tcp协议的相关连接
-u:udp协议的相关连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
TCP的常见状态:
TCP FSM:
LISTEN:监听
ESTABLISHED:已建立的连接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
~]# ss state time-wait
EXPRESSION:
dport(目标端口)=
sport(原端口)=
示例:'( dport = :ssh or sport = :ssh )'
~]# ss -tan '( dport = :22 or sport = :22 )'
~]# ss -tan state ESTABLISHED
nmcli命令:command‐line tool for controlling NetworkManager
语法格式:nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
connection – start, stop, and manage network connections
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
如何修改IP地址等属性:
nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
rpm命令:
安装:
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm -ivh PACKAGE_FILE …
GENERAL OPTIONS 通用选项:
-v:verbose,详细信息
-vv:更详细的输出
[install-options]
-h:hash marks输出进度条;每个#表示2%的进度
–test:测试安装不会真正安装,检查并报告依赖关系及冲突消息等
–nodeps:忽略依赖关系(不建议使用)
–replacepkgs:重新安装
–nosignature:不检查包签名信息
–nodigest:不检查包完整性信息
升级:
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:强制升级
卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts][–test] PACKAGE_NAME …
–allmatches:卸载所有匹配指定名称的程序包的各版本
–nodeps:忽略依赖关系
–test:测试卸载,dry run模式
yum命令:
安装程序包:
install package1 [package2] […]
reinstall package1 [package2] […] 重新安装
升级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] 降级程序包
卸载程序包:
remove | erase package1 [package2] […]
11、如何使用发行版光盘作为yum repository,请描述该过程。
(1)挂载光盘至本地某目录
~]# mount -r /dev/cdrom /media
(2)创建yum仓库配置文件
~]# vim /etc/yum.repos.d/cdrom.repo
[cdrom]
name=centos7 cdrom
baseurl=file:///media
enabled=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_files=0 declare -i S_files=0 for i in $(ls /etc/rc.d/rc3.d | grep "^K");do echo "$i"stop let K_files++ done for j in $(ls /etc/rc.d/rc3.d | grep "^S");do echo "$j"start let S_files++ done echo "K开头的文件有$K_files个" echo "S开头的文件有$S_files个"
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash declare -i id_sum=0 for i in $*;do if id $i &> /dev/null;then id_sum=$[$id_sum+$(id -u $i)] else echo "user $i is not existed!" exit 1 fi done echo "这些用户ID之和为:$id_sum"
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash declare -i dir_counts=0 declare -i file_counts=0 for i in $*;do echo "$i: " for filename in $i/*; do if [ -f $filename ];then echo "$filename common file" elif [ -d $filename ];then echo "$filename directory file" dir_counts+=1 continue elif [ -b $filename ];then echo "$filename block device file" elif [ -c $filename ];then echo "$filename character device file" elif [ -L $filename ];then echo "$filename symbolic link file" elif [ -p $filename ];then echo "$filename pipe file" elif [ -S $filename ];then echo "$filename socket file" else echo "$filename unknow" fi file_counts+=1 done done echo "一共有$dir_counts个目录" echo "一共有$file_counts个文件"
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名;
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash if id $1 &> /dev/null;then if [ $(id -u $1) -gt 500 ];then echo "$1 is common user!" fi else echo "user $1 is not existed!" fi
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash declare -i addsum=0 for i in $(seq 1 10);do if id user$i &> /dev/null;then echo "user$i is existed!" else adduser user$i echo "user$i" | passwd --stdin $i &> /dev/null addsum+=1 fi done echo "本次共添加了$addsum个用户"
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来。
#!/bin/bash for i in $(seq 20 100); do if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then echo 172.16.250.$i fi done
18、打印九九乘法表。
#!/bin/bash echo "-------------for-------------" for i in `seq 1 9`;do for j in `seq 1 $i`;do list_01=$[ $i * $j ] echo -n "$i*$j=$list_01 " done echo " " done echo "-------------while-------------" declare -i m=1 while [ $m -ge 1 -a $m -le 9 ];do declare -i n=1 while [ $n -ge 1 -a $n -le $m ];do list_02=$[ $m * $n ] echo -n "$m*$n=$list_02 " let n++ done let m++ echo " " done echo "-------------until-------------" declare -i x=1 until [ $x -lt 1 -o $x -gt 9 ];do declare -i y=1 until [ $y -lt 1 -o $y -gt $x ];do list_03=$[ $x * $y ] echo -n "$x*$y=$list_03 " let y++ done let x++ echo " " done
原创文章,作者:萝卜,如若转载,请注明出处:http://www.178linux.com/57505
评论列表(1条)
整体非常棒,尤其是后面脚本部分,另外对于网络方面,希望能对tcp/ip和osi有对比总结,并借助抓包工具做一分析,这部分在lvs内容中还是需要掌握的。