当前位置: 首页 > news >正文

从底层到应用:理解 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

http://www.cnnetsun.cn/news/49284.html

相关文章:

  • 终极PHP调试解决方案:用symfony/debug实现高效错误处理
  • 智慧养老项目:当SpringBoot遇到硬件,如何优雅地处理异常与状态管理?
  • 5步轻松搞定AppSmith实时推送:告别消息延迟的终极指南
  • IOPaint终极指南:AI一键去除水印的完整解决方案
  • Windows更新后RDPWrap失效修复指南:快速恢复多用户远程桌面功能
  • GPU和TPU差异之联网
  • 解决 Oracle 监听外网 IP 及腾讯云防火墙配置
  • ORACLE解析游标生成JSON
  • AMD GPU并行通信技术:突破性性能优化实战指南
  • Everywhere AI助手:跨平台智能对话系统深度解析
  • 考古学开放数据中的Paradata研究——CAPTURE项目与文献综述解读
  • 论文解读|将1930年前所有阿拉伯期刊添加到Wikidata——学术众包项目Jarāʾid向数字公共领域的迁移
  • 5分钟掌握UpSetR:超越维恩图的集合交集可视化神器
  • 机构洗盘拼合指标绝无未来 源码分析
  • Android项目架构完整指南:模块化开发与Kotlin最佳实践
  • Horovod Process Sets:让千亿参数模型训练触手可及
  • 5步掌握Loco+Tauri:构建高性能跨平台桌面应用的终极指南
  • 如何在Zephyr RTOS中制定最佳编译策略?
  • 专业实验室改造,必须避开的5大坑
  • 千万注意!实验室装修这5个关键点不容忽视
  • 关于指纹浏览器
  • ModelScope 模型一键上线?FunModel 让你 5 分钟从零到生产
  • 云服务器与传统服务器
  • Step-Audio 2:颠覆性多模态音频AI如何重新定义人机交互?
  • 3步掌握OpenUSD在Blender中的高效应用方法
  • HeyGem.ai视频生成超时终极解决方案:从卡顿到流畅的完整优化指南
  • AI智能体测试终极指南:构建可靠质量保障体系
  • 通信基站抛物面天线检测--基于RPN与FPN的改进算法实现
  • CosyVoice ONNX模型部署终极指南:5大实战技巧快速掌握
  • 字节跳动开源Bamboo-mixer:AI驱动电解液研发革命,周期缩短60%