计算机网络的相关内容

JSON 2025-10-20 15:35:16 1855

​一、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、超文本

(一)什么是超文本

核心定义:超越传统的文本

超文本是一种不是按顺序,线性的方式组织信息的文本,它包含了可以链接到其他文档或文本片段的超链接。

你可以把它想象成:

  • 普通文本:像一本小说或一篇论文,你从第一页按顺序读到最后一页。信息是线性的、固定的。
  • 超文本:像一本百科全书。当你在读一个关于“苹果”的词条时,里面可能会提到“乔布斯”,而“乔布斯”这个词被高亮或用下划线标出。你点击“乔布斯”,就立刻跳转到了关于史蒂夫·乔布斯的词条。在乔布斯的词条里,你又可以点击“苹果公司”再跳回去。信息是网状的、非线性的。

(二)超文本由什么组成

超文本主要由两个部分构成:

  1. 节点:就是一块块的信息内容,可以是一段文字、一张图片、一段视频或一个文件。
  2. 超链接:连接这些节点的“桥梁”。通常你在网页上看到的带下划线、颜色不同的可点击文字或图片,就是超链接。


最典型的例子:万维网

我们今天每天都在使用的互联网(万维网),就是超文本概念最宏大、最成功的实现。

  • 每一个网页 就是一个超文本节点。
  • 网页上的链接 让你可以从一个页面跳转到另一个页面,从一个网站跳转到另一个网站。
  • 正是这种“链接”的存在,才构成了我们所说的“在网上冲浪”。

所以,简单来说:没有超文本,就没有我们今天所熟悉的网页和互联网浏览体验。

(三)超文本的影响

超文本的概念远早于互联网,但它彻底改变了我们获取和交互信息的方式:

  • 非线性阅读:读者不再被动地接受作者安排的单一顺序,可以主动选择自己感兴趣的方向去探索。
  • 信息关联:它将全球范围内分散的信息连接成了一个巨大的知识网络。
  • 互动性:用户从“读者”变成了“参与者”,可以通过点击链接来主导信息的获取路径。

(四)总结

超文本就是“可以点击的文本”,它通过链接将不同的信息块相互连接,形成一个非线性的、网状的信息结构。它是整个万维网的基石。

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)防止数据篡改。

(二)工作流程

  1. TCP三次握手建立连接。
  2. TLS握手协商加密算法和交换密钥。
  3. 加密传输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

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

相关文章
掩码计算器原理?它是怎么计算的?
python之numpy常用的100种数值相关方法及代码示例
DNS劫持,CDN和DNS劫持网络跳转,排查及解决经验分享
分解质因数 JavaScript 计算方式,及分解质因数讲解
日期计算器的计算原理是什么?
垃圾分类怎么分类具体内容
如何根据子网掩码计算反掩码
万年历—Java计算母亲节是哪天?母亲节是哪一天? 2017年母亲节是哪一天?
掩码计算器如何使用
Shiro 教程,关于最近反应的相关异常问题,解决方法合集。
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...