当前位置: 首页 > 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建联 → 加密协商 → 请求/响应 → 渲染的精密协作过程,涉及网络各层协议协同工作。

相关文章:

  • 226. 翻转二叉树
  • Clickhouse源码分析-Replicated Database创建流程
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • NodeJS 对接 Outlook 发信服务器实现发信功能
  • 专题:2025游戏科技与市场趋势报告|附130+份报告PDF汇总下载
  • KungfuBot——基于物理约束的人形全身控制PBHC,用于学习高动态技能打拳或跳舞(即RL下的动作模仿和运控)
  • go客户端ssh交换机
  • SpringBoot 应用开发核心分层架构与实战详解
  • 一款功能强大的专业CSV编辑工具
  • Java的SpringAI+Deepseek大模型实战
  • 【鸿蒙HarmonyOS Next App实战开发】​​ArkUI时钟界面实现解析:动态双模式时钟与沉浸式体验​
  • CppCon 2017 学习:Effective Qt: 2017 Edition
  • 算法导论第十八章 计算几何:算法中的空间艺术
  • Java八股文——操作系统「进程篇」
  • MySQL高可用方案解析与选型指南
  • 内网攻防实战_红日靶场01
  • FPGA基础 -- Verilog函数
  • 在真实环境中对 LLM 代理进行安全评估的综合基准
  • Spring Boot(九十三):Springboot 整合cfx实现webservice接口
  • 【Computer】计算机原理大纲
  • 二级域名网站建设/自己建网站
  • 建网站怎么做/百度品牌广告多少钱一个月
  • 软件开发培训机构推荐就业吗/网站怎么优化关键词
  • 一家做特卖的网站叫什么时候/南宁网站推广排名
  • 企业网站建设的基本原则/最佳的资源搜索引擎
  • 装修公司做推广网站怎么弄/怎么样优化网站seo