news 2026/1/7 11:59:26

从底层到应用:理解 TCP、UDP 和 HTTP 的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从底层到应用:理解 TCP、UDP 和 HTTP 的关系

目录

计网当中常见术语

TCP协议

核心特点:

TCP中几个常见术语:

传输过程

应用场景

UDP协议

核心特点:

应用场景

TCP和UDP对比

HTTP协议

一、HTTP 基础概念

二、HTTP 报文结构

三、HTTP 方法

四、HTTP 状态码

常用状态码详解:

五、HTTP 头部字段

六、HTTP 的核心机制

七、一次完整的 HTTP 通信流程

三种协议在网络中的位置


计网当中常见术语

  1. TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议

  2. UDP (User Datagram Protocol): 用户数据报协议, 是一种无状态连接协议, 用于网络中传输数据

  3. HTTP (HyperText Transfer Protocol): 超文本传输协议, 是一种无状态协议, 用于在客户端与服务器之间传输数据的协议 https://www.qianwen.com/share?shareId=2f62f3a5-6136-4013-9b5e-2bd47cbb871f

  4. IP地址 (Internet Protocol Address): 是互联网协议为每台联网设备分配的唯一数字标识符

  5. 域名 (Domain Name): 是人类可读的、便于记忆的字符串名称,用来代替复杂的 IP 地址 如www.example.com

  6. URL (Uniform Resource Locator): 统一资源定位符, 用于描述一个网络上的资源

  7. DNS (Domain Name System): 域名系统, 将主机名或域名转换为实际 IP 地址的工作

TCP协议

TCP (Transmission Control Protocol): 传输控制协议, 是一种有状态协议, 是计算机网络中一种面向连接的、可靠的、基于字节流的协议

核心特点:
  • 面向连接:通信前需三次握手建立连接,结束后四次挥手断开

  • 可靠传输:通过确认(ACK)、重传、校验和等机制确保数据不丢、不乱序

  • 流量控制 & 拥塞控制:防止发送太快压垮接收方或网络

  • 基于字节流:没有消息边界(需应用层自己拆包)

TCP中几个常见术语:

SYN同步标识

ACK确认标识

PSH有DATA传输

RST连接重置

SEQ数据包

FIN结束标识

传输过程

TCP每次传输信息连接和断开都需要确认, 也就是连接三次握手和断开四次握手

  • 建立连接三次握手

  1. 客户端发送SYN=1, SEQ=number (随机数字)报文给服务端, 客户端进入SYN_SEND状态
  2. 服务端收到SYN报文, SYN=1知道客户端要建立连接, 响应ACK NUMBER(客户端SEQ+1), SYN=1, ACK =1, SEQ=随机数字, 连接状态SYN_RECV状态
  3. 客户端收到SYN检查ACK NUMBER和ACK=1是否正确, 如果全部正确, 向服务端发送ACK NUMBER=服务端SEQ+1和 ACK=1, 服务器接收到后检查是否正确, 正确后建立连接, 连接状态进入ESTABLISHED
  • 断开连接四次挥手, 包含一次角色转换

  1. 主机A(主动方, Active Close)向主机B(被动方)发送FIN表示数据发送完成ACK=z, SEQ=x. 主机A进入FIN_WAIT1状态, 这个状态非常短暂. 之后等待对方发送确认ACK过程, 主机A收到ACK后进入FIN_WAIT2状态, 如果超时没有收到ACK直接进入CLOSED状态
  2. 主机B收到FIN后返回主机A内容ACK=x+1, SEQ=z, 主机B进入CLOSE_WAIT状态
  3. 主机B关闭连接发送给主机A内容ACK=x, SEQ=y. 主机A进入到TIME_WAIT状态, 处于这个状态后等待2个报文最大存活周期后进入 CLOSED状态, 此时主机B进入LAST_ACK状态
  4. 主机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 基础概念
  1. 什么是 HTTP

    • 定义:应用层协议,用于客户端(如浏览器)与服务器之间的通信

    • 特点:无状态、基于请求-响应模型、通常运行在 TCP 之上(默认端口 80)

  2. HTTP 与 HTTPS 的区别

    • HTTPS = HTTP + SSL/TLS(加密、身份认证、完整性保护)

  3. URI / URL 概念

    • URI(统一资源标识符)、URL(统一资源定位符)结构解析

二、HTTP 报文结构
  1. 请求报文(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"}
  2. 响应报文(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 状态码

按类别:

分类范围含义
1xx100–199信息性,表示请求已接收继续处理
2xx200–299成功
3xx300–399重定向
4xx400–499客户端错误
5xx500–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)

字段示例说明
Hostexample.com请求目标主机
User-AgentMozilla/5.0客户端信息
Acceptapplication/json希望返回的数据类型
AuthorizationBearer token携带认证信息
CookieuserId=100携带 Cookie
Content-Typeapplication/json请求体格式
Refererhttps://google.com来源页面(防盗链)

常见响应头(Response Headers)

字段示例说明
Content-Typetext/html返回内容类型
Content-Length1024返回体长度
Cache-Controlmax-age=3600缓存策略
Set-Cookiesession=abc123设置 Cookie
Access-Control-Allow-Origin*允许跨域访问
ETag"a1b2c3"内容唯一标识(缓存验证)

特殊头部:

  • CORS 跨域相关:Access-Control-Allow-Origin

  • 缓存控制:ETagLast-ModifiedCache-ControlExpires

六、HTTP 的核心机制
  1. 持久连接(Keep-Alive)

    • HTTP/1.1 默认开启,避免频繁建立 TCP 连接

  2. 缓存机制

    • 强缓存(Cache-ControlExpires

    • 协商缓存(ETag/If-None-MatchLast-Modified/If-Modified-Since

  3. Cookie 与会话管理

    • Cookie 如何通过Set-CookieCookie头传递

    • 安全属性:HttpOnlySecureSameSite

  4. 内容协商(Content Negotiation)

    • 通过AcceptAccept-LanguageAccept-Encoding实现

  5. 重定向与跳转

七、一次完整的 HTTP 通信流程

以浏览器访问网页为例:

  1. DNS 解析

    1. 把域名解析为 IP 地址;

    2. 可能经过本地缓存、路由器缓存、DNS 服务器等多级解析

  2. 建立连接

    1. HTTP/1.x:三次握手建立 TCP 连接;

    2. HTTPS:建立 TCP 后还要进行 TLS 握手(证书验证、密钥交换)

  3. 发送 HTTP 请求

    1. 浏览器构造请求报文,包含方法、路径、头、体;

    2. 通过 TCP 发送给服务器

  4. 服务器处理请求

    1. Web 服务器(如 Nginx)解析报文;

    2. 交给后端程序(如 Go、Node.js、Python)处理;

    3. 生成响应

  5. 返回响应

    1. 服务器返回状态码、响应头、响应体;

    2. 浏览器解析内容、执行脚本、加载资源

  6. 关闭连接或复用

    1. HTTP/1.0 默认短连接;

    2. HTTP/1.1 及以后支持持久连接(keep-alive)

三种协议在网络中的位置

层级协议功能
应用层HTTP、FTP、SMTP、DNS直接为用户提供服务
传输层TCP、UDP端到端通信(可靠/不可靠)
网络层IP、ICMP寻址与路由
数据链路层Ethernet、Wi-Fi数据帧传输
物理层电信号、光信号比特流传输

HTTP 依赖于 TCP(可靠传输),而 HTTPS 则依赖于 TCP + TLS

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/14 11:56:57

MCP 实现

MCP(Model Context Protocol)本质是标准化的 LLM 工具调用交互规范,核心目标是让 AI 工具(如 Claude Desktop、IDE 插件)安全、高效地调用封装了本地 / 远程资源的 “能力服务”,其实现逻辑与 Function Cal…

作者头像 李华
网站建设 2025/12/14 11:55:39

56、Unix系统中的进程通信:管道机制详解

Unix系统中的进程通信:管道机制详解 在Unix系统中,用户模式进程之间的同步和数据交换是一个重要的话题。用户模式进程需要依赖内核来实现进程间的同步和通信。虽然可以通过创建文件并使用VFS系统调用进行加锁和解锁来实现一定程度的同步,但这种方式涉及磁盘文件系统的访问,…

作者头像 李华
网站建设 2025/12/14 11:55:05

如何在 .NET 中使用 SIMD

什么是 SIMDSIMD(Single Instruction, Multiple Data) 译为 单指令多数据,是一种并行计算技术,允许单条指令同时对多个数据元素进行操作,从而提高计算效率。与 SIMD 相对的是 SISD(Single Instruction, Sin…

作者头像 李华
网站建设 2025/12/14 11:54:27

10级漏洞刚补完,React又报漏洞了

上周刚追完 10 级补丁,以为能喘口气了?还不行。 12 月 12 日,React 官方确认,研究人员在验证上周补丁时,竟又在 React Server Components(RSC)里发现了两处新漏洞。 过去一周,React2Shell 漏洞的余威仍在:服务器被劫持挖矿、云厂商紧急封禁、甚至引发 ;为了把风险压下…

作者头像 李华