面试的开胃小菜1
NGINX和阿帕奇的区别:
性能和高并发处理:Nginx在性能和高并发处理方面(短时间能能支持大量访问请求的情况)具有优势。Nginx使用异步事件驱动的架构,可以处理大量并发连接,并在高负载情况(任务过多,导致队列长度过大)下表现出色,适合处理高流量的网站和应用程序。Apache则使用多线程模型,每个连接通常使用一个线程,因此在高并发环境下可能会出现性能瓶颈。
内存消耗:Nginx通常比Apache占用更少的内存,这意味着在资源有限的环境中,如容器化部署中,Nginx可能是更好的选择。
配置和模块化:Apache的配置文件通常更为复杂,需要较长的学习曲线,而Nginx的配置相对简单和直观。Nginx还以其高度的模块化和灵活性而闻名,可以通过添加第三方模块来扩展其功能。
功能和用途:Apache在处理动态内容和处理复杂的URL重写等方面较为强大,适合传统的Web应用程序。Nginx则在处理静态内容、反向代理、负载均衡和高并发请求等方面表现出色,适合用于高性能的Web服务器、反向代理服务器和负载均衡服务器。
docker和虚拟化的区别
传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有如下显著优势:
- Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快得多;
- Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器
- Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新;
- Docker通过
Dockerfile
支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。 - Docker容器除了运行其中的应用外,基本不消耗额外的系统资源,在保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要启用N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离得“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。
ansible的模块
声明:
1 | /etc/ansible/hosts目录下 |
ansible参数说明:
1 | -a MODULE_ARGS:指定模块的参数 |
user :
1 | ansible‐doc ‐s user #查看模块的参数 |
group
1 | #设置系统组 |
command
默认使用的模块(可默认不写)
1 | ansible -a "touch /root/ansible.txt" all_servers |
插一句:
Raw模块与command模块在Ansible中的主要区别体现在它们的执行方式和适用场景上。
- 执行方式:Raw模块允许在远程主机上直接执行任意的命令,不受Python环境的限制。它通常用于无法安装Python的系统,如网络设备等。而command模块在远程主机上执行命令时,会先使用Python的subprocess模块,通过shell环境来执行命令。
- 适用场景:Raw模块主要用于执行一些低级的、复杂的SSH命令,这些命令可能不适合通过command模块执行。而command模块则更适用于执行简单的、不需要管道符或重定向功能的命令。
1 | ansible all_servers -m raw -a "touch /root/ansible.txt" |
shell
调用bash执行命令
但是某些复杂的操作即使使用shell也可能会失败
解决方法:将操作写到脚本中,通过script模块
1 | ansible -m shell -a "find / -name ansible.txt" all_servers |
script
1 | chdir参数: 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到 chdir 参数指定的目录中。 |
copy
1 | backup:在覆盖之前,将源文件备份,备份文件包含时间信息。 |
file
1 | force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no |
1 | 创建目录 |
yum
1 | conf_file #设定远程yum安装时所依赖的配置文件。如配置文件没有在默认的位置。 |
service
1 | ansible-doc -s service |
selinux
1 | selinux模块针对selinux的修改操作是针对配置文件进行修改的 |
setup
1 | ansible -m setup node1 #获取远程主机的详细信息 |
讲一下OSI
七层模型 详细讲述数据是什么形式流通的 每一层负责干什么
第一层:物理层
- 数据形式:物理层负责原始比特流的传输,处理传输介质上的物理信号。
- 职责:提供通信介质和机械、电气、功能的规程,确保在通信介质之间进行可靠的位的发送和接收。
第二层:数据链路层
- 数据形式:数据链路层将比特流组织成帧,实现数据的帧封装和解封装,保证数据的可靠传输。
- 职责:确定传输信息帧的格式,检测物理层发生的差错,确保数据帧无差错地在两个相邻节点之间传输。
第三层:网络层
- 数据形式:网络层将数据包(或报文分组)从源节点发送到目的节点。
- 职责:提供建立、保持和终止网络的连接,负责路由选择和转发,确保数据包能够正确地从源地址传输到目的地址。
第四层:传输层
- 数据形式:传输层将来自会话层的数据分割成较小的单元,称为段(segment),并进行重新组装。
- 职责:对通信的双方提供服务,确保数据的可靠、经济地传输,实现数据的分段和重组,以及流量控制和差错控制。
第五层:会话层
- 数据形式:会话层数据主要关注会话的建立、管理和终止。
- 职责:负责在两个用户进程之间建立、管理和终止会话,同步不同设备上的各种应用之间的对话,并管理对话中的数据交换。
第六层:表示层
- 数据形式:表示层处理数据的表示方式,如数据格式的转换、加密和解密等。
- 职责:处理有关字符集、数据编码的转换,执行信息的压缩、加密、解密等功能,以确保发送方和接收方能够正确地解释所传输的信息。
第七层:应用层
- 数据形式:应用层数据是用户产生的具体数据,如电子邮件、网页请求等。
- 职责:通过应用程序间的交互来完成特定的网络应用,服务内容取决于网络的用途。应用层协议定义了应用进程之间的交互规则,为不同的网络应用提供服务。
在OSI模型中,数据的流通从应用层开始,逐层向下传递,经过表示层、会话层、传输层、网络层、数据链路层,最后到达物理层进行传输。在接收端,数据则按照相反的顺序,从物理层开始逐层向上解析和处理,最终到达应用层供用户使用。这种分层结构使得每一层都能专注于完成自己的任务,同时与其他层保持清晰的接口,便于网络的扩展和维护。
讲一下交换机
交换机是一种用于电信号转发的网络设备,其核心功能是根据通信两端传输信息的需要,自动完成信息交换,把要传输的信息送到符合要求的相应路由上。
交换机通常具有多个端口,可以连接多台设备,如计算机、服务器、网络打印机等,实现数据的传输和交换。它内部有一个MAC地址表,记录了网络中所有MAC地址与该交换机各端口的对应信息。当交换机收到数据时,会检查其目的MAC地址,并根据MAC地址表将数据从目的主机所在的接口转发出去。如果数据帧中的目的MAC地址不在MAC地址表中,则会向所有端口转发,这个过程称为泛洪。
交换机可以根据不同的需求进行配置,支持带宽控制、流量管理、VLAN等功能,从而有效地管理网络资源和提升网络性能。在企业网络、商务大厦网络、酒店宽带网络等场景中,交换机都扮演着重要的角色。
此外,交换机有多种类型,如以太网交换机、电话语音交换机、光纤交换机等,以满足不同网络环境和应用需求。
交换机和路由器的区别是什么?
路由器可以给你的局域网自动分配IP,虚拟拨号,就像一个交通警察,指挥着你的电脑该往哪走,你自己不用操心那么多了,交换机只是用来分配网络数据的。
路由器可以把一个IP分配给很多个主机使用,这些主机对外只表现出一个IP。
交换机可以把很多主机连起来,这些主机对外各有各的IP。
交换机工作在中继层,根据MAC地址寻址。
路由器工作在网络层,根据IP地址寻址,可以处理TCP/IP协议,而交换机不可以。
路由器提供了防火墙的服务,交换机不能提供该功能。路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴(广播(一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点)在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪)。
- 简单的说路由器专管入网,交换机只管配送,路由就是给你找路让你上网的,交换机只负责开门,交换机上面要没有路由你是上不了网的。
DNS
是干什么的 你有部署过DNS
服务器吗?
DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的,又名“域名解析服务器”.
部署过
blog.guixiang.top
解析ip
文本三剑客讲一下
awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。
详细查看知识集锦2
shell用法
Linux网络管理的所有命令 每个命令干什么的
Linux 网络管理命令包括:
ifconfig: 用于查看和配置网络接口的配置信息。
route: 用于查看和配置路由表。
netstat: 用于查看网络连接和统计信息。
nslookup: 用于查询域名解析。
ping: 用于测试主机间网络连通性。
traceroute: 用于查看数据包在网络中传递的路径。
iptables: 用于配置防火墙规则。
ip: 是iproute2Linux 网络管理命令有很多,常用的有:
ifconfig: 查看和配置网络接口的信息。
netstat: 查看网络连接状态和统计信息。
ping: 检测主机之间的网络连通性。
route: 查看和配置路由表。
traceroute: 查看数据包在网络中传输的路径。
nslookup
: 查询域名服务器(DNS)信息。dig: 查询DNS信息。
host: 查询DNS信息。
nmap
: 扫描网络主机的开放端口。arp
: 查看和管理arp
缓存。
tcp ip
三次握手四次挥手讲清原理 发送什么包
TCP四次挥手是TCP连接释放的过程,确保双方都能够安全地关闭连接,而不会导致数据包丢失或混乱。以下是TCP四次挥手的详细过程:
第一次挥手:客户端向服务器发送一个FIN数据包(FIN=1,seq=u),表示主动断开连接,不再向服务器发送数据,但仍可以接收数据。此时,客户端进入FIN_WAIT1状态。
第二次挥手:服务器收到FIN断开请求后,发送一个ACK响应报文(ACK=1,ack=u+1),表示同意断开请求。此时,服务器进入CLOSE_WAIT状态,客户端收到ACK报文后,由FIN_WAIT_1转换成FIN_WAIT_2状态。
第三次挥手:服务器发送FIN报文给客户端(FIN=1,seq=w),表示服务器也准备关闭连接。此时,服务器进入LAST_ACK状态,等待客户端的确认。
第四次挥手:客户端收到FIN报文后,发送一个ACK响应报文给服务器(ACK=1,ack=w+1),表示已经收到服务器的关闭请求。然后,客户端进入TIME_WAIT状态,等待2MSL(最长报文段寿命)时间后,如果没有收到服务器的报文,则证明对方已正常关闭,客户端的连接最终关闭。服务器在收到ACK报文后,关闭连接。
需要注意的是,四次挥手的每一步都有其独特的目的,确保数据在关闭过程中能够被完整传输,同时也允许延迟的数据包在关闭后仍然能够被接收
tcp和udp的区别
TCP是面向连接的,UDP是无连接的
TCP是可靠的,UDP是不可靠的
TCP是面向字节流的,UDP是面向数据报文的
TCP只支持点对点通信,UDP支持一对一,一对多,多对多
TCP报文首部20个字节,UDP首部8个字节
TCP有拥塞控制机制,UDP没有
TCP协议下双方发送接受缓冲区都有,UDP并无实际意义上的发送缓冲区,但是存在接受缓冲区