OSI 七层模型:应、表、会、传、网、据、物
TCP/IP 四层模型:应、传、网、网络接口层
TCP 和 UDP 的区别是什么?
TCP 面向连接,保证数据的可靠、有序传输,但效率较低。
UDP,无连接, 速度快,适合对实时性要求高、容忍数据丢失的应用。
三次握手、建立连接时
- 第一次握手:客户端发送一个 SYN 请求报文,客户端进入 SYN_SEND 状态
- 第二次握手:服务端收到 SYN 后,回复一个 SYN-ACK 报文,服务端进入 SYN_RECV 状态
- 第三次握手:客户端收到 SYN-ACK 报文后,发送一个 ACK 确认报文,客户端和服务端都进入ESTABLISHED 状态
四次挥手、断开连接
- 第一次挥手:客户端发送 FIN 报文,客户端进入 FIN-WAIT-1
- 第二次挥手:服务端收到 FIN 报文,回复一个 ACK,表示收到客户端的请求。服务端进入 CLOSE-WAIT 状态,客户端进入 FIN-WAIT-2 状态。
- 第三次挥手:服务端发送 FIN 报文,表示准备断开连接。服务端进入 LAST-ACK 状态
- 第四次挥手:客户端收到服务端的 FIN 报文,发送 ACK,表示双方连接关闭。 客户端进入TIME-WAIT状态,服务端进入CLOSE 状态。此时如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后客户端也可以关闭连接了。
TCP 的可靠性机制
- 序号和确认机制:确保数据包按顺序到达并得到确认。
- 超时重传:当数据包未被确认时,超时后会重新发送。
- 拥塞控制:包括慢启动、拥塞避免、快重传等机制,防止网络过载。
TCP 流量控制和拥塞控制的区别是什么?
- 流量控制:通过 滑动窗口 实现,是发送方和接收方之间的协调,防止接收方被过载。
- 拥塞控制:防止网络中发生拥塞,它通过 慢启动、拥塞避免、快速重传、快速恢复 等机制动态调整发送速率,确保网络不会过载。
HTTP 和 HTTPS 的区别
HTTP 是明文传输的协议,安全性低,而 HTTPS 则通过 SSL/TLS 加密确保数据的安全传输。默认使用端口 80
而 HTTPS 则通过 SSL/TLS 加密传输。通过证书验证服务器的身份,受搜索引擎青睐。默认使用端口 443
HTTPS 是 HTTP 的安全版本,使用 SSL/TLS 加密,提供数据传输的保密性、完整性和身份认证。
HTTP 1.0、1.1、2.0 和 3.0 的区别
- HTTP/1.1 引入了长连接和管道化,允许多次请求复用同一连接。
- HTTP/2.0 支持多路复用、头部压缩,使用二进制传输,减少延迟。
- HTTP/3.0 基于 UDP 的 QUIC 协议,实现了更快速的连接和数据传输。
HTTP常见的状态码
-
1xx:信息响应
- 100 Continue:请求部分已接收,继续发送其余部分。
-
2xx:成功
- 200 OK:请求成功,服务器已返回所请求的数据。
- 201 Created:请求成功,并创建了新资源。
-
3xx:重定向
- 301 Moved Permanently:资源已永久移动到新位置。
- 302 Found:资源暂时移动到新位置。
-
4xx:客户端错误
- 400 Bad Request:请求语法错误。
- 401 Unauthorized:请求未授权。
- 403 Forbidden:服务器拒绝请求。
- 404 Not Found:请求资源不存在。
-
5xx:服务器错误
- 500 Internal Server Error:服务器内部错误。
- 502 Bad Gateway:网关或代理服务器错误。
DNS 是什么?DNS 查询过程是怎样的?**
-
DNS 将人类可读的域名转换为机器可读的 IP 地址,是互联网的核心服务之一。
-
IP 协议 负责数据包的路由和传输,IPv4 地址空间有限,IPv6 是解决 IP 地址枯竭的重要方案。
DNS 查询过程:
- 用户在浏览器中输入域名,操作系统检查本地 DNS 缓存。
- 如果缓存中没有结果,向本地域名服务器(ISP 提供的 DNS 服务器)发起查询。
- 本地域名服务器检查自己的缓存,如果没有找到,则向 根域名服务器 发起查询。
- 根域名服务器回复本地域名服务器,告知其
.com顶级域的服务器 IP 地址。 - 本地域名服务器向
.com顶级域服务器查询,获取对应的 权威 DNS 服务器 的 IP 地址。 - 本地域名服务器向权威 DNS 服务器查询该域名,获得最终的 IP 地址。
- 本地域名服务器将结果返回给客户端,客户端通过该 IP 地址访问网站。
什么是 CDN?它如何加速网络访问?
- CDN(内容分发网络) :- CDN 通过分布式缓存将内容缓存到全球范围内的多个节点上,利用就近访问机制来提升网站的加载速度,减轻源服务器压力。
CDN 加速机制:
- 就近访问:用户访问网站时,DNS 将用户请求路由到离用户最近的 CDN 节点,减少了数据传输的物理距离,从而加速响应时间。
- 缓存机制:CDN 节点会缓存静态资源,如图片、视频、CSS 文件等,减少源站服务器的压力,提高资源的响应速度。
- 负载均衡:CDN 分布式的节点架构可以均衡大量用户的请求,避免单一服务器过载。
WebSocket 与 HTTP 的区别
都是基于TCPTCP的应用层协议。
- WebSocket 更适合实时、频繁双向通信,而 HTTP 适合传统的请求-响应模式。
- HTTP:无状态,每次请求都是独立的。WebSocket:持久连接,状态保持,适合实时数据传输。
- HTTP:网页加载、API 请求等。WebSocket:实时聊天、游戏、股票行情推送等需要频繁通信的应用。
Cookie 和Session的区别
-
存储位置:
- Cookie:存储在客户端(浏览器),每次请求都会自动携带。
- Session:存储在服务器端,客户端通过
SessionID来识别。
-
安全性:
- Cookie:安全性较低,可能被窃取或篡改,适合存储不敏感信息。
- Session:安全性较高,数据保存在服务器端。
-
生命周期:
- Cookie:可以设置长期有效。
- Session:通常随浏览器会话结束而失效。
-
容量:
- Cookie:通常限制在 4KB。
- Session:没有严格的大小限制,取决于服务器资源。
什么是 ARP 协议?它的工作原理是什么?
-
NAT(网络地址转换) :用于将内部私有 IP 地址转换为公共 IP,通常用于家庭路由器和防火墙。
-
ARP(地址解析协议,数据链路层) :在局域网中将 IP 地址转换为 MAC 地址,用于设备通信。
ARP 的工作原理:
- 当主机 A 想与同一局域网内的主机 B 通信时,A 需要知道 B 的 MAC 地址。
- A 发送一个 ARP 请求广播包,询问谁拥有目标 IP 地址。
- 所有接收到 ARP 请求的主机都会检查请求包中的 IP 地址,如果 IP 地址与自己的相同,则回复自己的 MAC 地址。
- 主机 A 接收到回复后,将 IP 地址和 MAC 地址映射缓存到本地的 ARP 缓存表中,以后可以直接使用。
NAT 的作用:
- 节省 IPv4 地址:通过 NAT,多个设备可以共享一个公网 IP,减缓了 IPv4 地址耗尽的问题。
- 隐藏内部网络:内部私有 IP 地址不会暴露给公网,增加了安全性。
- 端口转发:NAT 可以将外部请求转发到内网中的特定主机和端口。
什么是长连接和短连接?
- 短连接:每次通信都建立和断开连接,常用于 HTTP 1.0 协议。通信完成后,连接立即关闭。
- 长连接:建立连接后保持连接,多个请求可以复用同一个连接,常用于 HTTP 1.1 和 WebSocket 等协议。
访问网页的全过程包括以下步骤:
- 输入 URL:浏览器解析用户输入的 URL。
- DNS 解析:通过 DNS 获取域名对应的 IP 地址。
- TCP 连接:浏览器根据 IP 地址与服务器建立 TCP 连接(三次握手)。
- 发送 HTTP/HTTPS 请求:浏览器发送 HTTP 或 HTTPS 请求获取网页内容。
- 服务器响应:服务器处理请求并返回响应。
- 渲染网页:浏览器解析响应内容,加载资源并渲染页面。
常见的网络攻击包括:
- DDoS(分布式拒绝服务攻击) :攻击者通过大量请求使服务器资源耗尽,导致服务不可用。
- SQL 注入:攻击者通过输入恶意 SQL 代码,操控数据库。
- XSS(跨站脚本攻击) :在网页中注入恶意脚本,窃取用户数据。
- CSRF(跨站请求伪造) :利用用户的身份认证发起未授权请求。
- 中间人攻击:攻击者在用户与服务器间拦截和篡改通信数据。