有问有答,50道保姆级运维面试题,包教包会

Posted 王大雏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有问有答,50道保姆级运维面试题,包教包会相关的知识,希望对你有一定的参考价值。

有问有答,50道保姆级运维面试题,包教包会

一、网络部分

1、三次握手、四次挥手分别解释一下过程以及为什么是四次挥手?

1、请求连接
2、响应请求连接
3、确认接受响应,建立连接
四次挥手:
1、请求释放
2、收到请求,响应等待
3、完成,响应接受释放
4、响应彻底释放

TCP三次握手

  • 1、PC1向PC2发送发送建立连接请求SYN报文,SYN控制位为1,其他五个控制位都为0.
  • 2、PC2收到了PC1的请求,回复了一个确认信息ACK报文,ACK控制位为1,其他五个控制位都是0,然后确认序列号是PC1的初始序列号+1;PC2也会向PC1发送请求建立的连接,SYN控制位为1,其他控制位为0,这两个部分一般合并在一个数据包中实现。
  • 3、PC1收到PC2的回复加请求,也会回复了一个ACK报文确认信息,完成了三次握手,在PC1和PC2之间建立了TCP连接。

四次挥手

  • 建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。
    • (1)PC1向PC2发送断开连接请求的TCP报文段,FIN=1,ACK=1;
    • (2)PC2回复PC1的请求,发送TCP报文段,ACK=1;
    • (3)PC2向PC1发送断开连接请求的TCP报文段,FIN=1,ACK=1;
    • (4)PC1回复PC2的请求,发送TCP报文段,ACK=1;
  • 既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

在这里插入图片描述
在这里插入图片描述

2、常用的TCP\\UDP端口号及其功能

在这里插入图片描述
在这里插入图片描述

3、BGP有哪几种类型,分别用于哪些场景?

按运行方式分为EBGP和IBGP。
EBGP

  • 运行与不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。

IBGP

  • 运行于同一AS内部的BGP称为IBGP。为了防止AS内部产生环路,BGP设备不将从IBGP对等体学习到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。

4、点到点与端到端通信

  • 下三层:点到点(物理层、数据链路层、网络层)
  • 上四层:端到端(应用层,表示层、会话层、传输层)

5、OSPF五包、七状态

  • OSPF的简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。

五包:
1.hello包——————————用于发现和维持邻居关系,选举DR和BDR
2.数据库描述包(DBD)————用于向邻居发送摘要信息以同步链路状态数据库
3.链路状态请求包(LSR)————在路由器收到包含新的DBD后发送,请求更详细的信息
4.链路状态更新包(LSU)————收到LSR后发送链路状态通告(LSA),LSA的集合体LSU
5.链路状态确认包(LSACK)———确认已经收到DBD/LSU,每个LSA需要被分别确认

七状态:
1.Down状态–——初始状态
2.Init状态————收到第一个hello包,只有对方的route id,进行回复,将自己的route id发送给对方
3.2way状态–——建立邻接关系,开始选举DR,BDR
4.ExStart状态——确认主从关系
5.Exchange状态–双方发送DBD数据库描述,并互相确认收到
6.Loading状态——LSR互相请求新链路状态的详细信息,LSU互相发送关于新链路的链路状态包,LSACK互相收到确认
7.Full状态————双方达成一致,进入收敛状态

6、二层交换机能做什么?

  • vlan控制服务器的网络接入、流量监控、实现网络隔离、QOS配置、流量优化等

7、IP地址的分类

  • A类地址范围:1.0.0.1~126.255.255.254 /8
  • B类地址范围:128.0.0.1~191.255.255.254 /16
  • c类地址范围:192.0.0.1~223.255.255.254 /24
  • D类地址范围:224.0.0.1~239.255.255.254 用于组播通信的地址。
  • E类地址范围:240.0.0.1~255.255.255.254 用于科学研究的保留地址。
  • 以127开头的IP地址都代表本机(广播地址127.255.255.255除外),127.0.0.1为本机回环地址169.254.0.0~169.254.255.255DHCP服务失效时分配的地址。

8、私有网络地址的分类

1、A类私有地址
10.0.0.0~10.255.255.255 ( 10.0.0.0/8)
2、B类私有地址
172.16.0.0~172.31.255.255 (172.16.0.0/12)
3、C类私有地址
192.168.0.0-192.168.255.255 (192.168.0.0/16)

9、OSI七层模型和TCP/IP参考模型

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10、TCP/IP协议栈各层的主要协议

TCP (传输控制协议)协议应用的端口及其协议功能----传输更加稳定可靠
80 HTTP (超文本传输协议)用于浏览器和web服务器之间的请求和响应的交互
21 FTP (文件传输协议)用于控制连接FTP服务器
53 DNS (域名系统)用于连接DNS服务器
25 SMTP (简单邮件传输协议)用于发送邮件
110 POP3 (邮局协议版本3)用于接收邮件
22 SSH (安全外壳协议)用于计算机之间的远程加密登录
UDP (用户数据报协议)协议应用的端口及其协议功能----传输效率更高
69 TFTP (简单文件传输协议)用于小文件的传输
53 DNS (域名系统)用于解析DNS
111 RPC (远程调用协议)用于远程过程调用
161 SNMP (简单网络管理协议)用于网络设备的管理
123 NTP (网络时间协议)用于网络时间同步
IP (网际协议)协议及其功能
ARP (地址解析协议)用于在局域网中根据IP地址获取物理地址
RARP (逆地址解析协议)用于在局域网中通过ARP表根据物理地址请求IP地址
ICMP (网际控制报文协议)用于验证网络是否畅通
IGMP (网际组管理协议)用于主机与组播路由器之间组播通信

11、DHCP工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHC服务器回应应答消息给客户端的68号端口

第一步:客户端在网络中搜索服务器。

  • 客户端通过广播发送DHCP Discover报文寻找服务器端

第二步:服务器向客户端响应服务。

  • 服务器端通过单播发送DHCP Offer 报文向客户端提供IP地址等网络信息,从IP地址池中挑选一个尚未分配的IP地址分配给客户端

第三步:客户端向服务器发出服务请求。

  • 如果有多台DHCP服务器向该客户端发来DHCP-offer报文,客户端只接受第一个收到的DHCP-offer报文并提取IP地址,然后客户端通过广播发送DHCP Request报文告知服务器端本地选择使用该IP地址

第四步:服务器向客户端提供服务。

  • 服务器通过单播发送DHCP Ack报文告知客户端IP地址是合法可用的,并在选项字段中增加IP地址的使用租期信息

12、数据在TCP/IP协议栈中的封装与解封装

1、TCP/IP封装过程

  • 当软件进程的数据送到应用层时,应用层为数据加上本层的控制报头后,将其组织成应用层的数据服务单元,然后向下传输到传输层;
  • 传输层收到数据后,加上本层的TCP头部构成数据段,传输层将数据段送到网络层;
  • 网络层将收到的数据段加上IP头部,构成数据包,再将数据包送到数据链路层;
  • 数据链路层收到数据包,加上MAC头部信息,构成数据链路层的数据帧,送至物理层;
    物理层将以比特流的方式通过传输介质传输出去。

2、TCP/IP解封装过程

  • 当物理层传输的比特流到达目的节点时,从物理层依次上传,先由物理层传输到数据链路层;
  • 数据链路层收到数据服务单元后,拆掉MAC头部,就是所谓的报头,上传至网络层;
  • 网络层收到后将数据服务单元的IP头部脱掉,上传至传输层;
  • 传输层再将数据拆掉TCP头部后传输至应用层,再恢复为原有数据。

在这里插入图片描述

13、交换机的工作原理

  • 交换机可以根据MAC地址智能地转发数据帧,交换机存储的MAC地址表将MAC地址和交换机的接口编号对应在一起,每当交换机收到客户端发送的数据帧时,就会根据MAC地址表的信息判断该如何转发。
  • 交换机转发数据帧的过程如下:
    (1)初始状态
    (2)MAC地址的学习
    (3)广播未知数据帧
    (4)接收方回应信息
    (5)交换机实现单播通信

14、路由器的工作原理

  • 根据路由表(在路由器中维护的路由条目的集合)进行转发数据
  • 特点:转发过程中目标IP地址始终不变,MAC地址一直在变

15、VRRP工作原理

  • 消除单点故障,起双机热备份作用

16、NAT工作原理

  • NAT用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信
  • 静态NAT:实现公网地址和私网地址的一对一转换
  • 动态NAT:多个私网IP地址对应多个公网IP地址,基于地址池一对一映射

17、动态路由静态路由

  • 动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

    • 度量值:跳数、带宽、负载、时延、可靠性、成本
    • (1)距离矢量路由协议:根据跳数来选择,跳数越少越好。RIP、IGRP(思科私有协议),BGP(高级距离矢量路由协议)
    • (2)链路状态路由协议:OSPF、IS-IS(大型网络公司)
  • 静态路由是由管理员在路由器中手动配置的固定路由,路由明确地指定了包到达目的地必须经过的路径,除非网络管理员干预,否则静态路由不会发生变化。

18、RIP原理

  • RIP的度量值与更新时间
    (1)RIP度量值为跳数
    最大跳数为15跳,16跳不可达(最多16个路由器)。
    (2)RIP更新时间
    每个30s发送路由更新消息,UDP520端口
    (3)RIP路由更新消息
    发送整个路由表信息

  • RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hopcount)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。

  • 水平分割、毒性逆转

20、ping命令使用的是什么网络协议

icmp(Internet Control Message
Protocol)(Internet控制消息协议)的缩写,是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

21、ARP欺骗

  • ARP协议是地址解析协议,是一种将ip地址转换成Mac地址的协议。
  • ARP欺骗的原理是通过伪造正确主机的ip地址,与其他主机通信,从而修改ARP缓存表,导致其他主机发送给正确主机的数据包发送给另外一台由攻击者控制的主机,可以实现对数据的截取和监听。
  • 解决办法:
    1)绑定ip与Mac地址。在/etc/hosts里面写上局域网内所有ip和Mac地址的对应关系,执行ARP -f,这样每次重启后,都会重新绑定Mac地址。
    2)dhcp snooping技术,网上设备可借由dhcp保留网上各计算机的Mac地址,在伪造的ARP数据包发出时即可侦测到。

22、简述DNS解析过程

  • DNS即域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。平时我们访问域名,都是要解析成具体的ip才能访问。
  • 域名解析过程
    • ①在本地浏览器输入一个域名www.baidu.com,此时,你的电脑发出一个DNS请求到本地的DNS服务器。本地DNS服务器一般是你的网络接入服务器,如,中国电信,中国移动等
    • ②DNS请求到达本地DNS服务器之后,本地DNS服务器查询他的缓存记录,如果缓存中有记录,直接返回结果;如果没有,本地服务器向DNS根服务器发起查询请求。
    • ③根服务器没有记录具体的域名和ip地址的对应关系,而是告诉本地DNS服务器,你可以到相应的**.com域服务器进行查询。
    • ④本地DNS服务器继续向.com域服务器发出请求,域服务器收到请求后,也不会直接返回域名和ip地址的对应关系,而是告诉本地DNS服务器,域名的解析服务器**.baidu.com的地址。
    • ⑤本地DNS服务器向域名解析服务器发出请求,这时可以收到域名与ip的对应关系,本地DNS服务器不仅要把ip地址返回给电脑,还需要把这个对应关系保存到缓存中,以备下次使用,加快网络访问速度。

二、Linux

1、简单说说dhcp交互过程中四种报文

  • discover
  • offer
  • request
  • ack

2、你一般使用shell脚本做什么

  • 巡检
  • 自动化部署
  • 日志分割
  • 耦合服务,例:rsync+inotify

3、阿里云仓库做yum源

  • 第一步:将我们创建的local.repo文件移动到repo.bak目录下(也可以是别的备份目录)
  • 第二步:将可以连外网的系统打开,执行wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 将阿里云镜像下载到/etc/yum.repos.d/目录下
  • 第三步:刷新缓存, yum claen all && yum makecache #清理缓存并且生成新的缓存
    然后就可以直接用阿里云仓库里的软件包安装文件了,都是最新的软件包,但是必须有网的环境下才可以使用。如果想在没有网的情况下也能使用yum仓库里的软件,就需要将阿里云仓库下载到本地,占用空间较高。

4、统计出/var/log目录中子目录的大小

du -h --max-depth=1/var/log/

5、冒泡排序,直接排序

冒泡排序

  • 大的上浮,相邻的两个元素进行比较,比前一个数值大就交换位置,否则位置不变,最终先择出降序顺序

直接排序

  • 选择一个值假设为最大值,将所有制与之比较,比假设值大就交换位置,否则位置不变,最后选择出降序位置

希尔排序

  • (Shell Sort)是插入排序的一种算法,是对直接插入排序的一个优化,也称缩小增量排序。
  • 希尔排序是将待排序的数组元素 按下标的一定增量分组 ,分成多个子序列,然后对各个子序列进行直接插入排序算法排序;然后依次缩减增量再进行排序,直到增量为1时,进行最后一次直接插入排序,排序结束。

6、linux系统启动过程

  • 引导过程:开机自检、mbr引导、grub菜单、linux内核、init进程初始化
  • 启动过程:加载bios、读取mbr、boot loader 、加载内核、用户init根据inittab文件设定运行级别
init进程指向rc.sysinit > 启动内核 > 指向不同运行级别的脚本程序 > 指向/etc/rc.d/rc.local > 指向/bin/login程序,进入登录状态

7、检测端口占用情况命令

netstat -nautp | grep ……
ss -nautp | grep ……

8、查询日志的方式

cat
vim
systemctl status
journal -u 指定查看服务日志
journal -xe 查看系统日志
tail -f ……

9、常用的查看系统硬件资源的命令

磁盘占用:df -hT
内存信息:free -m或者cat /proc/meminfo
cpu占用:cat /proc/cpuinfo
i/o信息:iostat istop

10、tcpdump可以获取哪些信息

  • tcpdump可以抓取经过该机器所有网卡的数据包头信息,它允许我们编写bool表达式对抓取的数据包进行过滤,可以通过指定过滤条件对网卡、端口、ip地址以及协议等进行过滤,获取我们对我们有用的信息。

11、服务器性能分析命令有哪些

  • top命令(面试问参数解释)
  • 查看系统运行级别runlevel
    • load average:0.09,0.05,0.01
    • 三个数分别代表不同时间段系统平均负载(一分钟、五分钟、十五分钟)

12、你常用的抓包工具

wireshark
tcpdump

13、linux常见运维命令

free -m、ss、iostat、iotop、lsof
free -m 查看内存信息

  • ss 是 socket statistics 的缩写。顾名思义,ss 命令可以用来获取socket 统计信息,它可以显示和netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

  • iostat 主要用于输出磁盘IO 和 CPU的统计信息。
    iostat属于sysstat软件包。可以用yum install sysstat 直接安装。

  • iotop是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息,也是需要安装的,yum -y install iotop

  • lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

14、shell脚本常问

  • 冒泡排序,思路

  • shell脚本如何开启多进程、多线程运行

  • 遍历一个指定目录下的所有文件并打印

find xxx -type f
  • 过滤日访问量最多的ip来源,前十个计数并打印
cat xxx | awk '{print$x}' | sort |uniq -c | sort -nr | head -10

15、数据库备份如何备份

  • 每天零点crontab定时计划任务定时备份,数据大用xtrbacke,一半用 mysql自带的mysqldump

16、如何查看Linux系统当前的状态,cpu内存的使用情况及负载

系统 
# uname -a # 查看内核/操作系统/CPU信息 
# head -n 1 /etc/issue # 查看操作系统版本 
# cat /proc/cpuinfo # 查看CPU信息 
# hostname # 查看计算机名 
# lspci -tv # 列出所有PCI设备 
# lsusb -tv # 列出所有USB设备 
# lsmod # 列出加载的内核模块 
# env # 查看环境变量 

资源 
# free -m # 查看内存使用量和交换区使用量 
# df -h # 查看各分区使用情况 
# du -sh # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg # 查看系统负载 

17、如何使用iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.16.1:80

18、编写shell脚本,将当前目录下大于10K的文件转移到/tmp目录下

#!/bin/bash
for Filename in $(ls -l |awk '$5 > 10240 {print $9}')
do
mv $Filename /tmp
done

19、在11月份内,每天的早上6点到12点,每隔2小时执行一次usr/bin/httpd.sh怎么实现

0 6-12/2 * 11 * /usr/bin/httpd.sh

20、使用netstat和awk命令统计下网络连接数:

[root@zmedu-17 ~]# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\\t",state[key]}'
ESTABLISHED      3

补充:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

21、在linux下,假设nginx日志的路径为opt/logs/access.logs,日志不能自动分割,请写出一个简单的脚本,让日志每天能够定时自动分割

#! /bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
minute=$(date -d "1 minute ago" +"%Y%m%d-%H:%M")
 
mkdir -p $base_path/$log_path
echo $base_path/access.log
mv $base_path/access.log $base_path/$log_path/access_$minute.log
echo $base_path/$log_path/access_$minite.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

#crontab -l
* * 1 * * eck_nginx_log.sh

22、写出raid的几种模式,以及他们的特点

名称特点
raid0提高读写性能,最少两块容量为N的硬盘,容量为2N
raid1提高数据安全性,提高读取性能,不能提高写入性能,2003自带raid1功能,最少两块容量为N的硬盘,容量为N
raid10先提高安全性,再提高性能,最少4块容量为N的硬盘,容量为2N,RAID10比RAID01在安全性方面要强(体现在容错率上)
raid01先提高性能,再提高安全性,最少4块容量为N的硬盘,容量为2N
raid5提升安全性,安全性低于raid10(三块盘的情况下),大文件读写没有优势,小文件读写能力低于raid10,最低三块盘,容量为2快盘
RAID0 ,由一块盘或者多快盘组合起来的一块盘,缺点是没有冗余,坏掉了数据就没了
RAID1: 由两块盘组成的,一块盘写入信息,用一块盘做备份, 缺点; 成本较高,一份数据分两份写
RAID5: 由三块盘组成的,损失一块盘,不影响使用。 缺点: 读的性能较好,写的性能稍差

23、写一个脚本,查找15天前以png结尾的文件并删除

#!/bin/bash
find /picture/*.png* -type f  -mtime +15 -exec rm  {} \\;

24、Linux如何挂载windows下的共享目录?

mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456

linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号。

25、如何查看/var/log目录下的文件数?

ls /var/log/ -1R | grep “-” | wc -l

26、如何查看Linux系统每个ip的连接数?

netstat -n | awk ‘/^tcp/ {print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn

27、软链接与硬链接的区别

  • 软连接当做是 windows系统里的 快捷方式。
  • 硬链接 就好像是 又复制了一份,举例说明:
ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。
ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了。不可以用了。

28、保存当前磁盘分区的分区表

dd 命令是以个强大的命令,在复制的同时进行转换

dd if=/dev/sda of=./mbr.txt bs=1 count=512

29、如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找?

  • 以下操作全部在命令行状态操作,不要在编辑状态操作。
  • 在文本里 移动到想要复制的行 按yy 想复制到哪就移动到哪,然后按P 就黏贴了
  • 删除行 移动到改行 按dd
  • 删除全部 dG 这里注意G一定要大写
  • 按行查找 :90 这样就是找到第90行
  • 按字母查找 /path 这样就是 找到path这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。

30、在1-39内取随机数

expr $[RANDOM%39] +1

RANDOM随机数

%39取余数范围0-38

31、显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行

grep “^#{1,}[^]” /etc/inittab

TCP/OSI
三次握手、四次挥手
路由器
交换机
DHCP
VRRP
NAT
动态路由静态路由

开机步骤
文件访问
命令
grep
ls
选项
iostat
查看磁盘空间是否满了?并查出哪个文件膨胀了?
删除文件后,空间未被释放
怎么处理?两种方式,冒险,安全

以上是关于有问有答,50道保姆级运维面试题,包教包会的主要内容,如果未能解决你的问题,请参考以下文章

LMKD十 有问有答 - FAQ

有问有答 | 算法和数据结构精华问答

Rust 有问有答之 use 关键字

Rust 有问有答之 use 关键字

Solr的知识点学习(Solr有问有答哦)

有问必有答!身为Android开发者,想进入小米需要做什么准备?