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

输入url之后发生了什么

1. URL解析

  • 步骤:浏览器解析URL(如https://www.example.com),提取协议(https)、域名、端口(默认443)、路径(/)等。
  • 关键点:非完整URL会补全(如example.comhttps://www.example.com)。
2. DNS域名解析
  • 过程
  1. 浏览器缓存 → 2. 本地Hosts文件 → 3. 本地DNS服务器 →4. 根DNS → 5. 顶级域(.com) → 6. 权威DNS
  • 结果:获取域名对应的IP地址(如93.184.216.34)。
  • 协议:基于UDP的DNS查询(端口53)。
3. 建立TCP连接(三次握手)
  • 目的:确保可靠传输(HTTPS默认端口443)。
  • 流程
  1. 客户端发送SYN=1, seq=x
  2. 服务端回复SYN=1, ACK=1, seq=y, ack=x+1
  3. 客户端发送ACK=1, seq=x+1, ack=y+1
  • 结果:建立双向通信通道。
4. TLS/SSL握手(HTTPS)
  • 目的:加密传输(以RSA算法为例):
  1. 客户端发送支持的加密套件 + 随机数A →
  2. 服务端返回证书 + 选择的加密套件 + 随机数B →
  3. 客户端验证证书(CA签名、有效期、域名匹配)→
  4. 用证书公钥加密Pre-Master Secret发送 →
  5. 双方通过随机数A/B和Pre-Master生成会话密钥 →
  6. 开始对称加密通信(如AES-256)。
5. 发送HTTP请求
  • 请求报文
GET / HTTP/1.1
Host: www.example.com
User-Agent: Chrome/91.0
Accept: text/html
Cookie: session_id=abc123
  • 关键字段
  • Host:虚拟主机支持(一个IP多个网站)
  • Cookie:携带会话状态
6. 服务器处理请求
  • 步骤
  1. Web服务器(如Nginx)接收请求 →
  2. 静态资源直接返回,动态请求转发给后端(如Python/Django) →
  3. 数据库查询(如MySQL)→ 生成HTML响应。
  • 可能优化
  • CDN缓存静态资源
  • 负载均衡(如AWS ALB)
7. 接收HTTP响应
  • 响应报文
HTTP/1.1 200 OK
Server: nginx/1.18.0
Content-Type: text/html
Set-Cookie: new_session=xyz456
Content-Length: 1234<!DOCTYPE html><html>...</html>
  • 状态码
  • 200:成功
  • 301/302:重定向
  • 404:资源不存在
  • 500:服务器错误
8. 浏览器解析渲染
  1. HTML解析:构建DOM树
  2. CSS解析:生成CSSOM树
  3. JavaScript执行:可能阻塞渲染(async/defer优化)
  4. 渲染树(Render Tree):结合DOM和CSSOM
  5. 布局(Layout):计算元素位置/大小
  6. 绘制(Paint):像素级渲染
9. 连接释放(四次挥手)
  • 流程
  1. 客户端发送FIN=1, seq=u
  2. 服务端回复ACK=1, ack=u+1
  3. 服务端发送FIN=1, seq=v
  4. 客户端回复ACK=1, ack=v+1
  • 结果:双方释放连接资源。
10. 关键协议与角色

环节

协议/技术

设备/组件

域名解析

DNS (UDP 53)

本地DNS服务器

传输层

TCP (可靠传输)

操作系统协议栈

安全加密

TLS/SSL (如RSA/AES)

服务器证书

应用层

HTTP/1.1 或 HTTP/2

Web服务器(Nginx/Apache)

内容分发

CDN (边缘节点缓存)

Akamai/Cloudflare

通俗比喻
  1. DNS解析:像查通讯录,把朋友名字(域名)变成电话号码(IP)。
  2. TCP握手:打电话时的“喂-喂-听得到吗”确认过程。
  3. HTTPS加密:两人用密码本(会话密钥)对话,即使被窃听也看不懂。
  4. 渲染页面:收到乐高说明书(HTML)后,按步骤拼装成模型。

总结:从URL到页面展现,是DNS寻址 → TCP建联 → 加密协商 → 请求/响应 → 渲染的精密协作过程,涉及网络各层协议协同工作。

http://www.lqws.cn/news/443305.html

相关文章:

  • Python-循环结构解析
  • Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
  • oracle通过dblink 连接pg数据库
  • 使用 Prometheus 访问 TDengine ---
  • OpenCV——直方图与匹配
  • Postman 的 Jenkins 管理 - 手动构建
  • OpenCV指定pid和vid通过MSMF打开摄像头
  • Spring AOP @Before (前置通知): 在目标方法执行前做什么?
  • 智能家居HA篇 二、配置Home Assistant并实现外部访问
  • android 省市区联动选择
  • 计算机视觉阶段一:CV入门基础
  • Xsens动作捕捉技术用于研究机器人的运动控制、姿态调整以及人机交互
  • .NET 的配置系统
  • 【Mini-F5265-OB开发板试用测评】2、PWM驱动遥控车RX2接收解码带马达驱动控制IC
  • 华为OD机试_2025 B卷_构成正方形数量(Python,100分)(附详细解题思路)
  • 如何获取Java对象的大小
  • MQTT 消息队列传输协议(Message Queuing Telemetry Transport)
  • 【深度学习】生成对抗网络(GANs)深度解析:从理论到实践的革命性生成模型
  • 优化 Python 爬虫性能:异步爬取新浪财经大数据
  • 46道Jenkins高频题整理(附答案背诵版)
  • Jenkins通过Pipeline流水线方式编译Java项目
  • IP 地理库的使用指南:从基础应用到深度实践​
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(AOF篇)
  • IntersectionObserver API应用场景示例代码详解
  • 医疗低功耗智能AI网络搜索优化策略
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • Kafka性能压测报告撰写
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • 靶场(二十五)---小白心得靶场体会---Access
  • 基于Python+PySide6构建的夸克网盘批量工具,支持批量转存与分享