TCP/IP、UDP、HTTP、HTTPS、WebSocket 一文讲解

在当今互联网世界中,数据通信是所有应用运行的基础。无论是打开网页、发送消息还是视频通话,背后都依赖于各种网络协议的协同工作。其中,TCP/IP、UDP、HTTP、HTTPS 和 WebSocket 是最为核心的几种协议。本文将围绕它们的概念、特性和适用场景,进行一次系统而通俗的讲解。


一、TCP/IP:互联网的基础通信协议

1.1 什么是 TCP/IP?

TCP/IP 是“Transmission Control Protocol/Internet Protocol”的缩写,中文翻译为“传输控制协议/网际协议”。它不仅仅是两个协议,而是一个协议族(Protocol Suite),由一系列用于计算机之间通信的协议构成。
我们可以将 TCP/IP 理解为“互联网的语言”,它定义了数据如何从一台计算机传输到另一台计算机,是现代互联网通信的基础架构


1.2 TCP/IP 的四层模型

TCP/IP 协议族采用的是一种四层模型(不同于 OSI 七层模型),每一层都承担不同的通信职责:

TCP/IP 层次对应 OSI 层功能简介
应用层应用层、表示层、会话层提供网络服务接口(如 HTTP、FTP、DNS)
传输层传输层提供端到端的数据传输(如 TCP、UDP)
网络层网络层实现寻址与路由(如 IP、ICMP)
网络接口层数据链路层、物理层管理物理网络接口(如 Ethernet、Wi-Fi)

1.3 各层协议详解

1.3.1 应用层
  • 功能:与用户直接交互,提供应用服务。

  • 常见协议

    • HTTP/HTTPS:浏览网页

    • FTP:文件传输

    • SMTP/POP3/IMAP:电子邮件

    • DNS:域名解析

1.3.2 传输层
  • 功能:实现不同主机之间的数据传输控制,确保完整性。

  • 代表协议

    • TCP(传输控制协议):面向连接、可靠传输、有序、校验等特性

    • UDP(用户数据报协议):无连接、快速、不可靠但效率高

1.3.3 网络层
  • 功能:确定数据从源地址到目标地址的路径。

  • 代表协议

    • IP(网际协议):提供逻辑地址(如 IPv4、IPv6)

    • ICMP:用于错误检测和网络诊断(如 ping 命令)

1.3.4 网络接口层
  • 功能:处理物理网络硬件和信号传输细节。

  • 协议/技术:Ethernet、Wi-Fi、光纤、PPP 等


1.4 TCP/IP 的核心协议机制

(1)IP:定位和传输

IP(Internet Protocol)是互联网协议的缩写,是网络中用于标识设备地址的协议。就像每个人有身份证,每台联网的设备都有一个唯一的 IP 地址

  • 作用:为每台设备分配一个唯一地址(如 192.168.0.1),负责寻找最优路径,将数据包从源地址传输到目标地址。

  • 特点:不保证数据可靠性、不保证顺序,需配合传输层使用。

🌐IPv4 与 IPv6 (IP地址的两种格式)
项目IPv4IPv6
地址长度32 位128 位
表示方式点分十进制(如 192.168.1.1)十六进制冒号分隔(如 2001:0db8::1)
地址数量约 42 亿(2³²)几乎无限(2¹²⁸)
是否枯竭✅ 已经枯竭❌ 尚未枯竭
是否需要 NAT需要(私网转公网)不需要(每台设备都有全球地址)
安全性较弱,需要额外协议(如 IPsec)内置 IPsec,安全性更强
速度一般理论上更快(依赖网络设施支持)
(2)TCP:可靠传输的基石

  2.1连接建立三次握手(Three-way Handshake)

重点:为啥需要三次握手?目的是客户端和服务端需要确保对方的接收和发送能力都正常。

✅ 第一次握手(Client → Server)
  • 客户端 A 向服务器 B 发送一个 SYN 报文(序列号 seq = x),表示请求建立连接。

✅ 第二次握手(Server → Client)
  • 服务器 B 收到后,向客户端 A 返回一个 SYN + ACK 报文(序列号 seq = y,确认号 ack = x + 1),表示“我收到你的请求,并同意建立连接”。

✅ 第三次握手(Client → Server)
  • 客户端 A 收到确认后,再发送一个 ACK 报文(确认号 ack = y + 1),表示“我也确认建立连接”,至此连接建立完成。

 2.2连接断开四次挥手(Four-way Handshake)

✅ 第一次挥手(Client → Server)
  • 客户端发送 FIN 报文,表示自己不再发送数据了,进入 FIN_WAIT_1 状态

  • 表示:我这边要关闭连接了,不再发送数据。(仍然可以接收消息)

✅ 第二次挥手(Server → Client)
  • 服务器收到后发送 ACK 确认,进入 CLOSE_WAIT 状态,客户端此时进入 FIN_WAIT_2

  • 表示:我知道了,但我还有数据没发完。

✅ 第三次挥手(Server → Client)
  • 服务器数据发完后,发送 FIN 报文,进入 LAST_ACK 状态

  • 表示:我这边也要断开连接了。

✅ 第四次挥手(Client → Server)
  • 客户端收到 FIN 后,发送 ACK 确认,进入 TIME_WAIT 状态,等待一段时间后完全关闭。

  • 表示:我知道了,咱俩断了!

🔚 最后服务器收到 ACK 后,进入 CLOSED 状态,连接彻底关闭。

 2.3核心功能

  • 重传机制:数据包丢失时自动重发

  • 有序传输:接收端按顺序组装数据

  • 流量控制:防止接收方处理不过来

  • 拥塞控制:避免网络阻塞


1.5 TCP/IP 的现实意义与作用

  • 构建互联网通信基础:所有 Web、邮件、FTP 等网络应用都基于 TCP/IP 协议运行。

  • 跨平台通信协议:不同操作系统、不同硬件设备只要遵守 TCP/IP 协议,就能互联互通。

  • 可扩展、可演化:随着 IPv6、QUIC 等新技术发展,TCP/IP 协议体系也在不断演进。


二、UDP:轻量级通信的利器

UDP(User Datagram Protocol)用户数据报协议

它是 TCP/IP 协议族中的一员,和 TCP 并列,都是传输层协议。

2.1 无连接

  • 发送数据前不需要建立连接

  • 只管发,像寄快递不用打电话确认你在不在家

2.2 头部开销小

  • UDP 报文头部只有 8 个字节, 对比 TCP 的 20 字节,整整轻了 60%

  • UDP 报文结构:

源端口号(2字节)

目的端口号(2字节)

长度(2字节)

校验和(2字节)

 2.3 不保证可靠

  • 不重传、不排序、不校验顺序,收不收得到看运气

  • 简洁快速,但可靠性需上层协议自己处理

2.4 更快更实时

  • 没有三次握手和挥手,发就完了

  • 适合对实时性要求高的应用(如语音、视频、直播、在线游戏)

🔧 UDP 的利器用途(应用场景)

应用场景原因
🎮 在线游戏快速响应、低延迟比可靠性更重要
📞 VoIP电话一点点丢包可以容忍,不能容忍延迟
📺 视频直播流畅 > 完整,允许偶尔丢帧
🔁 DNS 解析请求短小(UDP 512字节足够),失败再发一遍就行
📶 局域网广播可同时向多个设备发送数据,UDP 支持广播和多播
📤 自定义协议一些系统(如 QUIC)底层使用 UDP,自建可靠机制

📌 UDP vs TCP 对比总结:

特性TCPUDP
是否连接✅ 面向连接(需要三次握手)❌ 无连接
是否可靠✅ 保证顺序/无重传/无丢包❌ 不保证,可能丢包/乱序
开销大小❌ 头部大(20 字节)✅ 头部小(8 字节)
传输速度慢(有确认、拥塞控制)快(无确认、无控制)
实时性❌ 比较差✅ 非常好
应用场景文件传输、网页浏览等视频、语音、游戏、DNS等

🧠 补充:UDP 不可靠,那怎么用?

UDP 本身是不可靠,但你可以自己“加料”,比如:

  • 加序号字段,自己排序;

  • 加 ACK 字段,自己确认;

  • 加超时重传逻辑;

  • 这就是很多协议(如 RTP、QUIC)采用的策略。

 总结一句话,UDP是“不可靠的快递”,快得起飞,用好了就是搞实时通信的神奇!


三、HTTP:网页通信的核心协议

HTTP(HyperText Transfer Protocol),超文本传输协议,是浏览器和服务器之间进行数据通信的规则

它基于客户端-服务器(C/S)模型,是 Web 世界中最基础的协议,几乎所有网页请求(HTML、图片、视频、接口)都依赖它。

3.1 请求和响应报文格式

HTTP 请求报文的格式如下:

请求行  (请求方法、URL、协议版本)
请求头  (多个字段,键值对格式,描述客户端信息)
空行
请求体  (仅在POST、PUT等请求方法中有,包含实际提交的数据)

 ✅ 示例:

POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=admin&password=123

 HTTP 响应报文的格式如下:

状态行  (协议版本、状态码、状态描述)
响应头  (多个字段,键值对格式,描述服务端信息和相应内容)
空行
响应体  (HTML、JSON、文件等)

  ✅ 示例:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 137

<html>
  <head><title>Example</title></head>
  <body><h1>Hello, world!</h1></body>
</html>

3.2 常见的HTTP方法

方法作用
GET获取资源(最常用)
POST提交数据(如表单)
PUT更新资源
DELETE删除资源
HEAD获取响应头,不返回正文
OPTIONS查询服务器支持哪些方法
PATCH局部更新(比 PUT 灵活)

3.3 常见状态码

状态码含义
200OK,请求成功
301永久重定向
302临时重定向
400请求错误(客户端问题)
401未授权(需登录)
403禁止访问
404找不到资源
500服务器内部错误
503服务不可用(服务器超载等)

3.4 HTTP的特点

  • 无状态:每次请求独立不记录身份,需要 Cookie / Session 补充身份识别

  • 明文传输:数据裸奔,容易被窃听(用 HTTPS 加密解决)

  • 基于 TCP:通信底层依赖 TCP 三次握手

3.5 HTTP版本演进

版本特点
HTTP/1.0每个请求一个连接,头信息不支持持久连接
HTTP/1.1支持长连接、管道化、分块传输
HTTP/2二进制格式、多路复用、首部压缩,更高性能
HTTP/3基于 QUIC 协议,UDP 支持,抗丢包延迟更低

👉 现在主流已是 HTTP/2 和 HTTP/3,但服务器和浏览器需同时支持。


四、HTTPS:更安全的 HTTP

HTTPS(HyperText Transfer Protocol Secure)HTTP + SSL/TLS 的组合。

简单来说:

HTTPS = 用 SSL/TLS 加密的 HTTP

4.1 HTTP的三大问题(安全隐患)

问题风险举例
明文传输密码、隐私数据容易被窃听
无法校验身份容易遭受中间人攻击(MITM)
无完整性保护数据可被篡改

4.2 HTTPS握手流程

4.3 HTTPS 的核心技术组成

1. 对称加密
  • 双方使用相同密钥

  • 加解密速度快

  • 用于实际数据传输

2. 非对称加密(公钥/私钥)
  • 用公钥加密,用私钥解密(或反过来)

  • 安全但效率低

  • 用于传递对称密钥

3. 数字证书
  • 证明服务器身份的“身份证”

  • 由权威机构(CA)颁发

4.4 HTTPS 与 HTTP 的区别总结

对比项HTTPHTTPS
安全性❌ 明文传输✅ 加密传输、防篡改
端口默认 80默认 443
协议基于 TCP基于 TLS + TCP
性能快(无加密)稍慢(握手 & 加解密)
证书不需要需要 SSL 数字证书
浏览器标志普通,易受攻击🔒 小锁图标,安全连接

 HTTPS 是 HTTP 的加密安全版,通过加密通信、身份认证和数据完整性保护,让你的网络传输更安全、更可信!


五、WebSocket:实时双向通信的新标准

WebSocket 是 HTML5 提出的网络通信协议,它建立在 TCP 协议之上,可以在客户端和服务器之间建立长连接,并支持全双工通信(双向同时收发)

5.1 WebSocket 通信流程

1️⃣ 初始握手(仍是 HTTP 请求)

客户端发起连接:

GET   /chat   HTTP/1.1
Host: server.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xxxxxxxxxx==
Sec-WebSocket-Version: 13

服务器响应(同意升级协议):

HTTP/1.1   101   Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: yyyyyyyyyy==

握手成功后,协议升级,正式进入 WebSocket 通信阶段! 

2️⃣ 建立连接后,通信如下:

      双向实时数据流(不再重复握手)

客户端 <================================> 服务器

5.2  WebSocket 数据帧格式

WebSocket 不再传输完整 HTTP 报文,而是按帧发送,格式更紧凑。

  • 数据帧类型(Opcode)

    • 0x1: 文本

    • 0x2: 二进制

    • 0x8: 关闭连接

    • 0x9: Ping(心跳)

    • 0xA: Pong(回应心跳)

  • WebSocket 内建心跳机制,可自动维持连接活性。

5.3 HTTP vs WebSocket 的核心区别

对比项HTTPWebSocket
连接方式请求-响应,短连接单次握手,后续保持连接
通信方向单向(客户端请求,服务器响应)双向(客户端和服务器随时通信)
建立过程每次通信都重新连接一次连接后持续保持
实时性很好
协议端口80 / 443默认也是 80(ws)或 443(wss)
协议名称http / httpsws / wss(加密)

5.4 WebSocket 常见应用场景

场景描述
聊天室多人实时消息推送
实时通知系统用户登录、支付提醒等
在线游戏快速同步玩家状态
股票/币价推送实时数据流展示
协同编辑Google Docs 等实时文档协作
在线客服人机聊天

WebSocket 是一种轻量、高效的实时通信协议,适用于需要快速响应和持续连接的现代 Web 应用场景,是 HTTP 的有力补充! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值