1.OSI七层模型
| |
| OSI 层 | 核心功能 | 关键设备 / 组件 |
|---|---|---|
| 应用层 | 提供应用程序之间的通信 | 浏览器、FTP客户端、SMTP客户端 |
| 表示层 | 数据的表示和转换 | 加密、压缩 |
| 会话层 | 管理会话连接 | 会话ID |
| 传输层 | 端到端通信 | TCP、UDP |
| 网络层 | 跨网络路由与 IP 地址识别 | 路由器、交换机 |
| 数据链路层 | 帧传输与 MAC 地址识别 | 网卡、交换机 |
| 物理层 | 比特流传输 | 网线、光纤 |
2.http1.1 和http2 区别
| 特性 | HTTP/1.1 | HTTP/2 |
|---|---|---|
| 传输开销 | 文本传输,开销较大 | 二进制流传输,开销更小 |
| 多路复用 | 顺序加载资源,某个资源阻塞会影响后续资源 | 单个 TCP 连接上可以同时发送多个数据流,互不阻塞 |
| 服务器推送 | 不支持 | 支持,服务器可在客户端请求之前推送内容 |
| 标头压缩 | 不压缩或简单压缩,冗余信息多 | 使用 HPACK 压缩,减少冗余,提高加载速度 |
3.TCP 的链接状态

4.为什么TCP是三次握手
因为三次握手才能保证双方具有接收和发送的能力。
为什么不是 2 次握手
假设需要两次
- 客户端发送 SYN
- 服务器返回 ACK
- 假设网络拥塞中存在延迟或丢包,一个 旧的 SYN 报文残留在网络中。
- 服务器收到残留 SYN,误认为客户端要建立新连接,返回 ACK。
- 客户端收到 ACK,误以为连接已建立,继续发送数据。
- 服务器收到数据,误以为是新连接的流量,错误处理。
为什么不是 4 次或更多?
3 次已经足以建立连接,4 次或更多次握手会增加复杂性和资源浪费
5.DNS 解析流程
- 本地host 映射(优先级最高,如果有记录直接返回)
- 客户端缓存(浏览器缓存、IOS缓存)
- DNS Resolver(/etc/resolv.conf 指定了系统查询的 DNS 服务器(通常是本地路由器或运营商 DNS))
- DNS 迭代查询流程(根域名服务器 -> 顶级域名服务器 -> 权威域名服务器(例如route 53))
- 返回客户端
6.cookie、session、token
- 存储位置不同
- Cookie、Token 存储在客户端,Session存储在服务端
- 数据安全性不同
- Cookie 存储在客户端,容易被窃取,不安全
- Session 存储在服务器端,通过一个 Session ID 在客户端和服务器之间进行关联,可以避免敏感数据直接暴露
- Token 通常使用加密算法生成,有效期较短且单向不可逆,可以提供较高的安全性。
- 跨域支持不同 Cookie 、Session是不支持跨域传输的但 Token 可以轻松实现跨域。因为 Token 是存储在客户端的 localStorage 或者作为请求头的一部分发送到服务器的,所以不同的域名 Token 信息传输通常是不受影响的
- 状态管理不同
- Cookie 是在客户端存储的,客户端可以直接操作 Cookie 进行状态管理。
- Session 是在服务器端存储的,服务器通过 Session ID 来识别不同的用户会话。
- Token 是在客户端生成的,客户端需要在每次请求中携带 Token 进行身份验证。
- 应用场景不同
- Cookie 通常用于存储用户登录状态、记住用户偏好、保持登录状态。
- Session 适用于需要在服务器端存储用户状态的场景,购物车、表单提交等需要跟踪用户状态的场景。
- Token 适用于需要在客户端和服务器之间进行身份验证的场景,例如 API 访问控制、单点登录(SSO)、移动应用认证等。
7.http 状态码和原因
一些高频考察的状态码
301 Moved Permanently:请求的资源已被永久移动到新的位置。常用于域名切换
302 Found:临时重定向,请求的资源临时移动到新的位置。(浏览器常用于登录跳转)。
403 Forbidden。权限不足、有 Token 但没有权限。
404 Not Found。请求的资源不存在。
502 Bad Gateway。上游服务(Nginx → 应用)返回无效响应。
504 Gateway Timeout。上游服务响应太慢(Nginx → 后端 timeout)。
8.linux 网络丢包排查
排查链路: 应用 → 系统 → 网络栈 → 网卡 → 云侧 → 外部链路
应用层是否丢包
- 检查应用日志,查看是否有异常或错误信息。(超时、链接失败、接口qps 突增)
- 模拟客户端curl/wget 直接测试
- 通过 tcpdump 抓包验证 sudo tcpdump -i eth0 host
-w app.pcap
系统层是否丢包
检查网卡统计,ethtool -S eth0
指标 含义 说明 rx_dropped接收丢包 NIC 或内核队列满 rx_errors接收错误 CRC、帧错误 tx_errors发送错误 没发出去 rx_no_bufferring buffer 不够 压力大常见 rx_over_errors接收队列溢出 系统瓶颈 检查 Linux 网络栈层丢包 netstat -s
检查内核参数
1 2 3 4 5sysctl net.core.rmem_default sysctl net.core.wmem_default sysctl net.core.netdev_max_backlog sysctl net.ipv4.tcp_rmem sysctl net.ipv4.tcp_wmem
网卡队列(Ring buffer)丢包 ethtool -g eth0
cpu/中断
- 检查网卡的配置参数,确保没有设置错误导致丢包。
- 可以使用工具如
ethtool来查看网卡的统计信息,确认是否有丢包情况。
网络路径丢包(云侧常见) mtr -rwzbc 100
目标端丢包(对方入口打满)
| |
9. 长连接、短连接、WebSocket区别和使用场景
短连接 客户端与服务器之间的连接在每次请求完成后立即关闭。这种方式在 HTTP/1.0 中是默认行为。
- 一次性请求的情况,比如获取静态资源(HTML、CSS、图片等)。
- 对于不频繁交互的应用,短连接简单易用。
长连接 是指在一次 TCP 连接中,可以进行多次请求和响应,而不需要频繁地建立和关闭连接。这在 HTTP/1.1 中是默认行为。
- 需要频繁交互的应用,例如在线聊天、实时更新的数据流(mysql、redis等)等。
- 适合需要保持会话的场景,如电子商务网站中的购物车操作
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,允许服务器主动向客户端发送数据。支持双向通信。
- 实时应用,如在线游戏、股票行情、社交媒体即时消息等。
- 需要即时反馈的应用,例如协作编辑工具、在线客服等。
- IoT(物联网)设备之间的实时通信。
10. MAC地址IP地址如何转换
ARP作用就是通过ip地址查找后转换成MAC地址,通过ARP高速缓存表存储对应关系
二层设备,发送数据帧 1、源主机先发送广播帧,将自己的IP地址和MAC地址带上,并且带上需要查找的IP地址 2、其他主机接收到后如果发现IP地址就是自己,就需要返回自己的IP地址和MAC地址,单播发送给源主机,并且在自己的高速缓存表中记录源主机的对应关系 3、源主机接收到后在高速缓存表中记录
11. lvs、nginx、haproxy区别和使用场景
- lvs 是基于 IP 层的负载均衡器,工作在 OSI 模型的第 4 层(传输层),主要用于负载均衡 TCP 和 UDP 流量。
- nginx 是一个高性能的 Web 服务器和反向代理服务器,也可以用作负载均衡器。它工作在 OSI 模型的第 7 层(应用层),主要用于处理 HTTP 和 HTTPS 请求。
- haproxy 是一个开源的负载均衡器,工作在 OSI 模型的第 7 层(应用层),主要用于负载均衡 HTTP 和 HTTPS 请求。
