计算机网络的相关内容
一、URI和URL是什么
1、URI(统一资源标识符)
- 核心作用:标识一个资源。 它就像一个事物的“身份证号”或“名字”,其首要任务是唯一地确定一个资源是什么。
- 范围:涵盖了所有用于标识资源名称或地址的字符串。
- 格式:
scheme:[//authority]path[?query][#fragment] scheme:方案,表示如何与资源交互,例如 http、https、ftp、mailto、file 等。 authority:通常包含用户信息、主机名和端口号。 path:资源的路径。 query:查询参数。 fragment:片段标识符,通常指向资源内部的某个部分。
2、URL(统一资源定位符)
- 核心作用: 定位一个资源。它不仅标识了资源是什么,更重要的是提供了在网络上找到并访问该资源的具体位置和方式。它就像一个事物的“家庭住址”。
- 范围:它是URL的一个特定类型,专门用于描述网络资源的访问位置和协议。
- 特点:URL必须包含足够的信息(如协议、主机地址、路径等)来让浏览器或其他客户端能够检索到该资源。
3、URI和URL的关系与区别
- URI(标识符):就像一个人的 “姓名”(例如:张三) 或 “身份证号”。它唯一地标识了这个人,但你无法仅凭名字就知道他在哪里。
- URL(定位符):就像一个人的 “家庭住址”(例如:北京市海淀区XX街道XX号)。这个地址不仅告诉了你这个人是谁(住在这里的人),还明确地指出了如何找到他。
特性 URI统一资源标识符 URL统一资源定位符 核心目的 标识资源 定位资源 范围 更广泛,是一个总称 是URI的一个子集 是否包含访问方式 不一定 必须包含访问协议和路径 例子 ISBN:978-3-16-148410-0(一本书的ISBN号)https://www.example.com/index.html
二、HTTP/HTTPS协议
1、超文本
(一)什么是超文本
核心定义:超越传统的文本
超文本是一种不是按顺序,线性的方式组织信息的文本,它包含了可以链接到其他文档或文本片段的超链接。
你可以把它想象成:
- 普通文本:像一本小说或一篇论文,你从第一页按顺序读到最后一页。信息是线性的、固定的。
- 超文本:像一本百科全书。当你在读一个关于“苹果”的词条时,里面可能会提到“乔布斯”,而“乔布斯”这个词被高亮或用下划线标出。你点击“乔布斯”,就立刻跳转到了关于史蒂夫·乔布斯的词条。在乔布斯的词条里,你又可以点击“苹果公司”再跳回去。信息是网状的、非线性的。
(二)超文本由什么组成
超文本主要由两个部分构成:
- 节点:就是一块块的信息内容,可以是一段文字、一张图片、一段视频或一个文件。
- 超链接:连接这些节点的“桥梁”。通常你在网页上看到的带下划线、颜色不同的可点击文字或图片,就是超链接。
最典型的例子:万维网
我们今天每天都在使用的互联网(万维网),就是超文本概念最宏大、最成功的实现。
- 每一个网页 就是一个超文本节点。
- 网页上的链接 让你可以从一个页面跳转到另一个页面,从一个网站跳转到另一个网站。
- 正是这种“链接”的存在,才构成了我们所说的“在网上冲浪”。
所以,简单来说:没有超文本,就没有我们今天所熟悉的网页和互联网浏览体验。
(三)超文本的影响
超文本的概念远早于互联网,但它彻底改变了我们获取和交互信息的方式:
- 非线性阅读:读者不再被动地接受作者安排的单一顺序,可以主动选择自己感兴趣的方向去探索。
- 信息关联:它将全球范围内分散的信息连接成了一个巨大的知识网络。
- 互动性:用户从“读者”变成了“参与者”,可以通过点击链接来主导信息的获取路径。
(四)总结
超文本就是“可以点击的文本”,它通过链接将不同的信息块相互连接,形成一个非线性的、网状的信息结构。它是整个万维网的基石。
2、HTTP(超文本传输协议)
主要用于将超文本数据从网络传输到本地浏览器,确保文档能够高效准确地传输。
(一)核心
“一问一答”:客户端(浏览器)发起一个请求,服务器处理并返回一个响应,然后连接通常就关闭了。
无状态:每个请求独立,需 Cookie/Session 维持状态。服务器不记得上一次的请求是谁发的。这就是为什么需要 Cookie/Session 等技术来维持状态。
问题:对于需要实时更新的应用(如聊天),只能通过 轮询 来模拟,即客户端不断地向服务器发 HTTP 请求问:“有新消息吗?” 这种方式效率低下,浪费资源。
明文传输:数据未加密,易被窃听。
请求-响应模型:客户端发起请求,服务器返回响应。
默认端口80。
(二)请求方式
GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。 响应状态码:200(成功)、404(未找到)、500(服务器错误)等。
- 2xx(成功):`200 OK`、`201 Created`。
- 3xx(重定向):`301 Moved Permanently`、`304 Not Modified`。
- 4xx(客户端错误):`404 Not Found`、`403 Forbidden`。
- 5xx(服务端错误):`500 Internal Server Error`。
3、HTTPS(安全超文本传输协议)
(一)核心机制
- 加密传输:通过 SSL/TLS 协议加密数据(如 AES、RSA) 防止通信内容被窃听。
- 身份验证:数字证书(CA颁发)验证服务器身份,确保你连接的是正确的服务器(通过证书)。
- 完整性保护:使用哈希算法(如SHA-256)防止数据篡改。
(二)工作流程
- TCP三次握手建立连接。
- TLS握手协商加密算法和交换密钥。
- 加密传输HTTP数据。
(三)性能优化
会话复用(Session Resumption)减少TLS握手开销。
默认端口443。
HTTPS简单理解就是在它HTTP 和 TCP 之间加入了一个 SSL/TLS 加密层。HTTPS的安全基础是SSL加密,所有通过它传输的数据都会经过加密处理。其主要功能包括:建立安全的信息传输通道确保数据安全;验证网站的真实性。HTTPS 没有改变 HTTP 的“请求-响应”模型和短连接特性。
三、WebSocket
1、核心特性
为了解决 HTTP 在实时通信上的短板而生。
握手阶段:WebSocket 连接通过一个特殊的 HTTP 请求 来建立(Upgrade 头),这个请求告诉服务器:“我想升级到 WebSocket 协议”。如果服务器同意,连接就从 HTTP 协议切换到了 WebSocket 协议。
- 全双工通信协议,允许客户端和服务器实时通信。
- 低延迟:基于TCP,避免HTTP的请求-响应模式。
- 通过HTTP升级建立连接,之后使用WebSocket协议。
- 长连接:一次握手后保持连接,适用于实时应用,如聊天、在线游戏。
- 优点:减少开销,支持双向通信
2、协议升级
通过HTTP的Upgrade头切换协议:
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==服务器返回 101 Switching Protocols确认升级。

| 特性 | HTTP | HTTPS | WebSocket |
|---|---|---|---|
| 协议基础 | 应用层协议,基于 TCP | HTTP over SSL/TLS | 独立的协议,基于 TCP,与 HTTP 兼容 |
| 通信模式 | 请求-响应 | 请求-响应 | 全双工、双向通信 |
| 连接性 | 无状态、短连接 (默认关闭连接) |
无状态、短连接 (默认关闭连接) |
有状态、持久连接 (连接保持打开) |
| 数据流方向 | 客户端发起,服务器响应 | 客户端发起,服务器响应 | 服务器和客户端可以随时、独立地发送数据 |
| 开销 | 每次请求都携带完整的 HTTP 头部,较大 | 同 HTTP,外加加密/解密的计算开销 | 连接建立后,数据帧头部很小,开销极低 |
| 安全性 | 明文传输,不安全 | 加密传输,身份验证,数据完整性 | 本身不提供加密,但使用 wss:// (基于 TLS)来保证安全 |
| 默认端口 | 80 | 443 | 80 (ws) / 443 (wss) |
| 适用场景 | 浏览网页、获取静态资源、API 调用(RESTful) | 所有需要安全性的 HTTP 场景(登录、支付、敏感数据) | 实时应用:聊天室、在线游戏、实时行情、协同编辑、直播弹幕 |
你需要展示一个网页,提交表单或调用API吗?是 -> 使用 HTTP/HTTPS。需要安全保证(用户登录、支付)吗? -> 必须使用 HTTPS。
你需要构建一个实时功能,比如聊天、实时通知、多人协作或股票行情吗?是 -> 在建立初始连接后,使用 WebSocket。
在现代Web开发中,这三者通常是协同工作的:
- 主网站通过 HTTPS 提供,保证安全和内容加载。
- 当需要进行实时通信时,页面内的 JavaScript 会建立一个 WebSocket(或安全的 wss://)连接到服务器,来处理实时数据流。
四、TCP/IP协议
1、TCP/IP协议族:
包括TCP、IP、UDP、ICMP等协议。
分为四层:网络接口层,网络层,传输层,应用层。
2、TCP(传输控制协议):
- 面向对象,提供可靠数据传输。
- 像 打电话,通过三次握手建立连接,四次挥手断开。
- 提供流量控制,拥塞控制,错误检测和重传机制。
3、IP(网络协议):
- 负责将数据包从源主机发送到目标主机。
- 无连接,不保证可靠性。
- 主要版本:IPv4和IPv6。
4、UDP(用户数据报协议):
- 像寄明信片或校园广播
- 无连接,不保证可靠性。
- 适用于实时应用,如视频流,在线游戏。
- 速度快,开销小
5、ICMP(互联网控制消息协议)
- 像 网络系统的“信使”和“诊断工具”
- 它不传输真正的用户数据(如网页、邮件)
- 它用于传递控制和管理信息,比如报告错误、测试连通性
- 例如,当IP数据包无法到达目的地时,ICMP会返回一个“目的地不可达”的错误消息。
- 用于发送错误报告和诊断信息。
- 常用工具:ping和traceroute。
| 特性 | TCP | UDP | ICMP |
|---|---|---|---|
| 协议层 | 传输层 | 传输层 | 网络层(与IP同层) |
| 核心特性 | 面向连接、可靠、有序 | 无连接、不可靠、无序 | 无连接、用于控制和诊断 |
| 可靠性 | 可靠传输 • 确认机制 • 重传机制 • 数据校验 |
尽最大努力交付 • 不保证不丢失 • 不保证不重复 • 不保证顺序 |
不保证所有ICMP消息都被接收或处理 |
| 数据单元 | 段 | 数据报 | 消息(报文) |
| 头部开销 | 较大(20-60字节),包含序列号、确认号、窗口等复杂字段 | 很小(8字节),只有源/目标端口、长度和校验和 | 可变,取决于消息类型 |
| 流量控制 | 有(滑动窗口) | 无 | 无 |
| 拥塞控制 | 有(慢启动、拥塞避免等) | 无 | 无(但可用于报告拥塞,如“源站抑制”消息) |
| 连接状态 | 需要维护连接状态(序列号、窗口大小等) | 无状态 | 无状态 |
| 传输速度 | 相对较慢(因建立连接、确认、重传、拥塞控制) | 非常快(直接发送,无额外控制) | 快(用于传递紧急或重要的控制信息) |
| 典型应用 | • Web浏览 • 电子邮件 • 文件传输 • 远程终端 |
• 视频流媒体 • 语音通话 • 在线游戏 • DNS查询 |
• Ping(测试连通性) • Traceroute(追踪路径) • 报告网络错误(如目的地不可达) |
深入解析
1. TCP
- 为什么可靠? 三次握手建立连接:确保双方都能收发数据。 确认与重传:接收方收到数据后会发送确认。发送方在一定时间内没收到确认,会重新发送数据。 序列号:为每个数据字节编号,确保接收方能按顺序重组数据。 流量控制:通过“滑动窗口”机制,防止发送方发送过快,导致接收方缓冲区溢出。 拥塞控制:根据网络状况动态调整发送速率,避免网络瘫痪。
2. UDP
- 为什么“不可靠”反而是优势? 对于实时应用,低延迟比完整性更重要。丢失一两个视频帧或语音包,用户可能根本察觉不到,但如果为了重传这个包而延迟了后续所有数据,就会导致视频卡顿、语音断续。 无连接状态:服务器无需为每个客户端维护连接状态,可以支持海量并发连接,非常适合DNS、NTP等服务。
3. ICMP
- 它不是传输用户数据的,而是IP协议的“助手”。
- 常见消息类型: Echo Request / Echo Reply:这就是 ping 命令的工作原理。你向目标发送一个“回显请求”,如果它活着并且连通,就会回复一个“回显应答”。 Destination Unreachable:当路由器或主机无法将数据包递送到目的地时,会向源IP发送此消息。 Time Exceeded:当数据包的TTL(生存时间)值减到0时,路由器会丢弃它并发送此消息。traceroute 命令就是利用这个机制来工作的。
- 尽管ICMP在网络层,但它最终被封装在IP数据包中进行传输。
关系图:在协议栈中的位置
下图清晰地展示了这三个协议在网络模型中的位置和协作关系:

总的来说,如您需要可靠、准确的数据传输(如网页、文件、邮件)-> TCP。需要速度快、延迟低,并能容忍少量数据丢失(如直播、游戏、语音) -> UDP。
需要检查网络是否通畅、诊断连接问题 -> ICMP(使用 ping 或 traceroute 命令)
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/537.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。
