计算机网络(一)
网络分层模型
(1)OSI 七层模型
国际标准化组织提出的理论模型,从下到上依次为物理层(透明传输比特流)、数据链路层(帧编码与差错控制)、网络层(路由与寻址)、传输层(进程间通用数据传输)、会话层(管理应用程序会话)、表示层(数据编解码、加密压缩)、应用层(为用户提供服务)。模型概念清晰但复杂冗余,实用性较低。
(2)TCP/IP 四层模型
广泛应用的实际模型,是 OSI 模型的精简版,从下到上为网络接口层(对应 OSI 物理层 + 数据链路层)、网络层(路由寻址)、传输层(进程间通信)、应用层(对应 OSI 会话层 + 表示层 + 应用层)。该模型简洁实用,是互联网的核心架构基础。
(3)网络分层的核心意义
一是各层独立,仅需调用下层功能,无需关注实现细节;二是灵活性强,可独立替换某一层技术,不影响整体架构;三是化繁为简,将复杂网络问题拆解为边界清晰的小问题,便于设计、实现和标准化。
常见网络协议
(1)应用层协议
- HTTP:基于 TCP,用于 Web 浏览器与服务器间传输超文本,是网页访问的核心协议。
- SMTP/POP3/IMAP:SMTP 基于 TCP 负责邮件发送,POP3/IMAP 基于 TCP 负责邮件接收,IMAP 支持多设备同步等高级功能。
- FTP/SSH:FTP 基于 TCP 用于文件传输,明文传输不安全;SSH 基于 TCP 提供加密的远程访问和文件传输服务。
- DNS:基于 UDP,负责域名与 IP 地址的映射,是访问网络的基础协议。
- RTP:通常基于 UDP,提供实时数据传输功能,多用于音视频传输。
(2)传输层协议
- TCP:面向连接、可靠传输,通过三次握手建立连接、四次挥手关闭连接,支持流量控制和拥塞控制,适用于对可靠性要求高的场景(如文件传输、网页加载)。
- UDP:无连接、尽最大努力传输,不保证可靠性但高效轻便,适用于实时性要求高的场景(如音视频通话、DNS 查询)。
(3)网络层协议
- IP:定义数据包格式,负责跨网络路由和寻址,分为 IPv4 和 IPv6 两个版本。
- ARP:解决 IP 地址与 MAC 地址的转换问题,保障数据链路层传输。
- ICMP:传输网络状态和错误消息,用于网络诊断(如 Ping 工具)。
- NAT:实现局域网与广域网的地址转换,让局域网内主机共享公网 IP 访问互联网。
- 路由协议:OSPF(基于链路状态算法,考虑带宽、延迟)、RIP(基于距离向量算法,以跳数为度量)、BGP(用于路由域间交换可达性信息)。
HTTP 核心知识点
(1)输入 URL 到页面展示的全过程
- 浏览器通过 DNS 解析域名获取 IP 地址(查询浏览器、路由器、DNS 服务器缓存);
- 基于 IP 地址和端口号,与服务器建立 TCP 连接(涉及 ARP 地址转换、OSPF 路由选择);
- 浏览器通过 TCP 连接发送 HTTP 请求(携带 Cookie、请求头等信息);
- 服务器处理请求并返回 HTTP 响应;
- 浏览器解析 HTML 并渲染页面,同时请求页面中的图片、CSS、JS 等资源;
- 通信完成后关闭 TCP 连接。
(2)HTTP 状态码分类
- 1XX(信息性):请求正在处理(如 100 Continue);
- 2XX(成功):请求正常处理完毕(如 200 OK、206 Partial Content);
- 3XX(重定向):需附加操作完成请求(如 301 永久重定向、302 临时重定向);
- 4XX(客户端错误):服务器无法处理请求(如 404 资源不存在、403 权限不足);
- 5XX(服务器错误):服务器处理请求出错(如 500 内部错误、503 服务不可用)。
(3)HTTP 与 HTTPS 的核心区别
- 端口:HTTP 默认 80,HTTPS 默认 443;
- 安全性:HTTP 明文传输,无身份验证;HTTPS 基于 SSL/TLS 加密传输,支持身份验证,安全性更高;
- 资源消耗:HTTPS 加密解密过程消耗更多服务器资源;
- SEO:搜索引擎更青睐 HTTPS 网站,对排名更友好。
(4)HTTP 版本演进差异
- HTTP/1.0 vs HTTP/1.1:HTTP/1.0 为短连接,无 Host 头,不支持断点续传;HTTP/1.1 支持长连接、Host 头(支持虚拟主机)、range 头(断点续传),新增更多缓存策略和状态码。
- HTTP/1.1 vs HTTP/2.0:HTTP/2.0 支持多路复用(单连接并行传输多个请求)、二进制帧(替代文本格式,更高效)、头部压缩(HPACK 算法)、服务器推送(主动推送相关资源),解决了 HTTP/1.1 的应用层队头阻塞问题,但仍受 TCP 层队头阻塞影响。
- HTTP/2.0 vs HTTP/3.0:HTTP/3.0 基于 QUIC 协议(UDP 升级版),支持 0-RTT/1-RTT 连接建立、连接迁移、QPACK 头部压缩,彻底解决队头阻塞,加密覆盖整个数据包,安全性和性能更优。
(5)HTTP 无状态的解决方案
HTTP 本身不保存用户状态,需通过以下机制实现状态管理:
- Cookie + Session:服务器验证用户后创建 Session 并分配 SessionID,通过 Set-Cookie 响应头发送给浏览器;浏览器后续请求自动携带 SessionID,服务器通过该 ID 关联用户状态,Session 可存储在服务器内存、数据库或分布式缓存中。
- URL 重写:Cookie 禁用时,将 SessionID 附加在 URL 后传递,安全性低、影响 SEO,较少使用。
- Token 认证(如 JWT):服务器验证通过后返回签名 Token,客户端存储 Token,后续请求通过请求头携带,服务器解析 Token 获取用户信息,适用于前后端分离和微服务架构。
(6)GET 与 POST 的核心区别
- 语义:GET 用于获取 / 查询资源,POST 用于创建 / 修改资源;
- 幂等性:GET 是幂等的(多次执行结果一致),POST 非幂等;
- 参数位置:GET 参数通常在 URL 中,POST 参数多在请求体中;
- 缓存:GET 可被浏览器和代理缓存,POST 一般不缓存;
- 安全性:两者均为明文传输(HTTP 协议下),GET 参数暴露在 URL 中,安全性更低。
WebSocket 相关
(1)核心定义与应用场景
基于 TCP 的全双工通信协议,客户端与服务器仅需一次握手即可建立持久连接,双方可随时发送数据。适用于视频弹幕、实时消息推送、实时游戏、多用户协同编辑等场景。
(2)与 HTTP 的区别
- 通信方向:HTTP 是单向通信(客户端主动发起请求),WebSocket 是双向全双工通信;
- 协议前缀:HTTP 用 http:///https://,WebSocket 用 ws:///wss://(加密版);
- 开销:HTTP 每次请求需携带完整头部,开销大;WebSocket 连接建立后头部开销小,传输高效;
- 扩展:WebSocket 支持自定义子协议,可扩展压缩、加密等功能。
(3)与短轮询、长轮询的区别
- 短轮询:客户端定时发起 HTTP 请求,实时性一般,资源浪费严重;
- 长轮询:客户端发起请求后,服务器无数据时保持连接,有数据或超时后响应,实时性较好但服务器资源占用高;
- WebSocket:持久连接 + 双向通信,实时性强、资源效率高,是实时通信的最优方案。
其他核心网络技术
(1)SSE(Server-Sent Events)
基于 HTTP 长连接的单向通信技术,仅服务器向客户端推送数据,浏览器原生支持断线重连,实现简单,适用于流式响应场景(如大模型对话),仅支持文本传输。
(2)Ping 命令
基于 ICMP 协议的网络诊断工具,用于测试主机连通性和网络延迟。通过发送 ICMP Echo Request 报文,接收目标主机的 ICMP Echo Reply 报文,输出往返时间(RTT)、丢包率等信息,无响应可能表示连通性异常或目标主机禁用 ICMP 回复。
(3)DNS 系统
- 核心作用:解决域名与 IP 地址的映射问题,是访问网络的基础。
- 服务器层级:根 DNS 服务器(提供 TLD 服务器 IP)、顶级域 DNS 服务器(提供权威 DNS 服务器 IP)、权威 DNS 服务器(存储域名与 IP 映射记录)、本地 DNS 服务器(ISP 提供的代理服务器)。
- DNS 劫持:攻击者修改 DNS 解析结果,将域名指向错误 IP,导致用户访问异常网站,需通过使用可信 DNS 服务器、启用 DNS 加密等方式应对。