目录
计网当中常见术语
TCP协议
核心特点:
TCP中几个常见术语:
传输过程
应用场景
UDP协议
核心特点:
应用场景
TCP和UDP对比
HTTP协议
一、HTTP 基础概念
二、HTTP 报文结构
三、HTTP 方法
四、HTTP 状态码
常用状态码详解:
五、HTTP 头部字段
六、HTTP 的核心机制
七、一次完整的 HTTP 通信流程
三种协议在网络中的位置
计网当中常见术语
TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议
UDP (User Datagram Protocol): 用户数据报协议, 是一种无状态连接协议, 用于网络中传输数据
HTTP (HyperText Transfer Protocol): 超文本传输协议, 是一种无状态协议, 用于在客户端与服务器之间传输数据的协议 https://www.qianwen.com/share?shareId=2f62f3a5-6136-4013-9b5e-2bd47cbb871f
IP地址 (Internet Protocol Address): 是互联网协议为每台联网设备分配的唯一数字标识符
域名 (Domain Name): 是人类可读的、便于记忆的字符串名称,用来代替复杂的 IP 地址 如www.example.com
URL (Uniform Resource Locator): 统一资源定位符, 用于描述一个网络上的资源
DNS (Domain Name System): 域名系统, 将主机名或域名转换为实际 IP 地址的工作
TCP协议
TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议
核心特点:
面向连接:通信前需三次握手建立连接,结束后四次挥手断开
可靠传输:通过确认(ACK)、重传、校验和等机制确保数据不丢、不乱序
流量控制 & 拥塞控制:防止发送太快压垮接收方或网络
基于字节流:没有消息边界(需应用层自己拆包)
TCP中几个常见术语:
SYN同步标识
ACK确认标识
PSH有DATA传输
RST连接重置
SEQ数据包
FIN结束标识
传输过程
TCP每次传输信息连接和断开都需要确认, 也就是连接三次握手和断开四次握手
建立连接三次握手
- 客户端发送SYN=1, SEQ=number (随机数字)报文给服务端, 客户端进入SYN_SEND状态
- 服务端收到SYN报文, SYN=1知道客户端要建立连接, 响应ACK NUMBER(客户端SEQ+1), SYN=1, ACK =1, SEQ=随机数字, 连接状态SYN_RECV状态
- 客户端收到SYN检查ACK NUMBER和ACK=1是否正确, 如果全部正确, 向服务端发送ACK NUMBER=服务端SEQ+1和 ACK=1, 服务器接收到后检查是否正确, 正确后建立连接, 连接状态进入ESTABLISHED
断开连接四次挥手, 包含一次角色转换
- 主机A(主动方, Active Close)向主机B(被动方)发送FIN表示数据发送完成ACK=z, SEQ=x. 主机A进入FIN_WAIT1状态, 这个状态非常短暂. 之后等待对方发送确认ACK过程, 主机A收到ACK后进入FIN_WAIT2状态, 如果超时没有收到ACK直接进入CLOSED状态
- 主机B收到FIN后返回主机A内容ACK=x+1, SEQ=z, 主机B进入CLOSE_WAIT状态
- 主机B关闭连接发送给主机A内容ACK=x, SEQ=y. 主机A进入到TIME_WAIT状态, 处于这个状态后等待2个报文最大存活周期后进入 CLOSED状态, 此时主机B进入LAST_ACK状态
- 主机A收到后返回ACK=y+1, SEQ=x
应用场景
Web 浏览(HTTP/HTTPS 默认跑在 TCP 上)
邮件(SMTP、IMAP)
文件传输(FTP)
数据库连接(MySQL、PostgreSQL)
SSH、远程登录
UDP协议
UDP (User Datagram Protocol): 用户数据报协议, 是一种无状态连接协议, 用于网络中传输数据
核心特点:
无连接:直接发数据,无需握手
不可靠:不保证送达、不重传、可能丢包或乱序
头部小:仅 8 字节,开销低
支持广播/多播
保留消息边界:每个 UDP 包是独立的
应用场景
实时音视频(Zoom、微信语音、直播)
在线游戏(如 FPS 游戏的位置同步)
DNS 查询(域名解析)
DHCP(自动分配 IP)
IoT 设备上报(对丢包容忍度高)
TCP和UDP对比
TCP是数据安全可靠的, 但消耗高效率低; UDP不能保证数据完整可靠, 但简单高效
UDP相比于TCP传输速度高, 延迟低, 无连接状态
HTTP协议
一、HTTP 基础概念
什么是 HTTP
定义:应用层协议,用于客户端(如浏览器)与服务器之间的通信
特点:无状态、基于请求-响应模型、通常运行在 TCP 之上(默认端口 80)
HTTP 与 HTTPS 的区别
HTTPS = HTTP + SSL/TLS(加密、身份认证、完整性保护)
URI / URL 概念
URI(统一资源标识符)、URL(统一资源定位符)结构解析
二、HTTP 报文结构
请求报文(Request)组成
请求行(请求方法 + URL + HTTP版本)
请求头(Headers 用于描述请求的额外信息比如类型、长度、认证等)
空行
请求体(Body 请求内容,可选)
示例:
POST /api/login HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Content-Type: application/json Content-Length: 35 {"username": "Ryne", "password": "123"}响应报文(Response)组成
状态行(HTTP版本 + 状态码 + 状态描述)
响应头(Headers 用于传递服务器关于响应的元数据信息等)
空行
响应体(Body 响应内容)
示例:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 45 Set-Cookie: sessionid=abc123; HttpOnly {"message": "login success", "code": 0}
三、HTTP 方法
GET:获取资源
POST:提交数据
PUT:更新或创建指定资源
DELETE:删除资源
PATCH:部分更新
HEAD:只获取响应头(不返回 body)
OPTIONS:查询服务器支持的方法
四、HTTP 状态码
按类别:
| 分类 | 范围 | 含义 |
|---|---|---|
| 1xx | 100–199 | 信息性,表示请求已接收继续处理 |
| 2xx | 200–299 | 成功 |
| 3xx | 300–399 | 重定向 |
| 4xx | 400–499 | 客户端错误 |
| 5xx | 500–599 | 服务器错误 |
常用状态码详解:
成功类
200 OK:请求成功;
201 Created:资源已创建;
204 No Content:成功但无内容返回。
重定向类
301 Moved Permanently:永久重定向;
302 Found:临时重定向;
304 Not Modified:使用缓存,无需重新下载。
客户端错误
400 Bad Request:请求参数错误;
401 Unauthorized:未认证;
403 Forbidden:权限不足;
404 Not Found:资源不存在;
429 Too Many Requests:请求太频繁。
服务器错误
500 Internal Server Error:通用错误;
502 Bad Gateway:网关错误(上游服务异常);
503 Service Unavailable:服务器过载或维护;
504 Gateway Timeout:上游超时。
五、HTTP 头部字段
常见请求头(Request Headers)
| 字段 | 示例 | 说明 |
|---|---|---|
| Host | example.com | 请求目标主机 |
| User-Agent | Mozilla/5.0 | 客户端信息 |
| Accept | application/json | 希望返回的数据类型 |
| Authorization | Bearer token | 携带认证信息 |
| Cookie | userId=100 | 携带 Cookie |
| Content-Type | application/json | 请求体格式 |
| Referer | https://google.com | 来源页面(防盗链) |
常见响应头(Response Headers)
| 字段 | 示例 | 说明 |
|---|---|---|
| Content-Type | text/html | 返回内容类型 |
| Content-Length | 1024 | 返回体长度 |
| Cache-Control | max-age=3600 | 缓存策略 |
| Set-Cookie | session=abc123 | 设置 Cookie |
| Access-Control-Allow-Origin | * | 允许跨域访问 |
| ETag | "a1b2c3" | 内容唯一标识(缓存验证) |
特殊头部:
CORS 跨域相关:
Access-Control-Allow-Origin缓存控制:
ETag、Last-Modified、Cache-Control、Expires
六、HTTP 的核心机制
持久连接(Keep-Alive)
HTTP/1.1 默认开启,避免频繁建立 TCP 连接
缓存机制
强缓存(
Cache-Control、Expires)协商缓存(
ETag/If-None-Match、Last-Modified/If-Modified-Since)
Cookie 与会话管理
Cookie 如何通过
Set-Cookie和Cookie头传递安全属性:
HttpOnly、Secure、SameSite
内容协商(Content Negotiation)
通过
Accept、Accept-Language、Accept-Encoding实现
重定向与跳转
七、一次完整的 HTTP 通信流程
以浏览器访问网页为例:
DNS 解析
把域名解析为 IP 地址;
可能经过本地缓存、路由器缓存、DNS 服务器等多级解析
建立连接
HTTP/1.x:三次握手建立 TCP 连接;
HTTPS:建立 TCP 后还要进行 TLS 握手(证书验证、密钥交换)
发送 HTTP 请求
浏览器构造请求报文,包含方法、路径、头、体;
通过 TCP 发送给服务器
服务器处理请求
Web 服务器(如 Nginx)解析报文;
交给后端程序(如 Go、Node.js、Python)处理;
生成响应
返回响应
服务器返回状态码、响应头、响应体;
浏览器解析内容、执行脚本、加载资源
关闭连接或复用
HTTP/1.0 默认短连接;
HTTP/1.1 及以后支持持久连接(keep-alive)
三种协议在网络中的位置
| 层级 | 协议 | 功能 |
|---|---|---|
| 应用层 | HTTP、FTP、SMTP、DNS | 直接为用户提供服务 |
| 传输层 | TCP、UDP | 端到端通信(可靠/不可靠) |
| 网络层 | IP、ICMP | 寻址与路由 |
| 数据链路层 | Ethernet、Wi-Fi | 数据帧传输 |
| 物理层 | 电信号、光信号 | 比特流传输 |
HTTP 依赖于 TCP(可靠传输),而 HTTPS 则依赖于 TCP + TLS