【网络原理】总结篇——在地址栏当中输入了URL之后发生了什么

目录

1. 解析URL

2. DNS解析

3. 建立TCP连接

4. 发送HTTP请求,进行网络传输

4.1. 安全协商(HTTPS)

4.2. 处理重定向

5. 服务器处理请求

6. 接收HTTP响应

断开tcp连接

1. HTTP/1.0

2. HTTP/1.1

3. HTTP/2

4. WebSocket

5. 连接断开的具体时机

客户端主动断开:

服务器主动断开:

网络原因断开:

总结

7. 渲染页面

8. 加载其他资源

9. 页面交互

总结


1. 解析URL

  • 浏览器解析URL,提取协议(如http/https)、域名、端口(默认80或443)、路径和查询参数。


2. DNS解析

  • 浏览器通过DNS(域名系统)将域名转换为IP地址:

    1. 检查浏览器缓存。

    2. 检查操作系统缓存(如/etc/hosts)。

    3. 向本地DNS服务器查询。

    4. 如果本地DNS服务器没有记录,会递归查询根DNS服务器、顶级域服务器(如.com)和权威DNS服务器。


3. 建立TCP连接

  • 浏览器通过IP地址和端口与服务器建立TCP连接:

    1. 三次握手

      • 客户端发送SYN包。

      • 服务器回复SYN-ACK包。

      • 客户端发送ACK包,连接建立。

    2. 如果是HTTPS,还会进行TLS握手,协商加密密钥。


4. 发送HTTP请求,进行网络传输

  • 浏览器发送HTTP请求报文,包含:

    • 请求方法(如GETPOST)。

    • 请求头(如User-AgentAccept)。

    • 请求体(如POST请求的数据)。

  • 4.1. 安全协商(HTTPS)
  • TLS 握手:交换密钥、验证证书(涉及 CA 链校验、OCSP 吊销检查)。
    会话恢复:若之前有 Session ID 或 Session Ticket,可跳过完整握手。


    4.2. 处理重定向
  • 自动跳转:若服务器返回 301/302,浏览器会重新开始整个流程处理新 URL,而不是立即发送原始请求。
    重定向链限制:浏览器会限制最大重定向次数(如 Chrome 限制 20 次)。


5. 服务器处理请求

  • 服务器接收请求后:

    1. 根据路径和参数处理请求。

    2. 可能查询数据库或调用其他服务。

    3. 生成HTTP响应,包括状态码(如200 OK)、响应头和响应体(如HTML内容)。


6. 接收HTTP响应

  • 浏览器接收服务器的响应:

    1. 解析状态码,判断请求是否成功。

    2. 读取响应头(如Content-Type)。

    3. 下载响应体(如HTML、CSS、JS文件)。

  • 断开tcp连接

连接断开发生在HTTP请求-响应完成后,具体取决于HTTP协议版本和连接管理方式。以下是详细说明:


1. HTTP/1.0
  • 默认行为:每次请求完成后,连接立即断开。

  • 过程:

    1. 客户端发送HTTP请求。

    2. 服务器返回HTTP响应。

    3. 服务器主动关闭TCP连接。

  • 特点:每次请求都需要重新建立连接,性能较差。


2. HTTP/1.1
  • 默认行为:支持持久连接(Keep-Alive),连接在多次请求后才会断开。

  • 过程:

    1. 客户端发送HTTP请求,请求头中包含Connection: keep-alive

    2. 服务器返回HTTP响应,响应头中也包含Connection: keep-alive

    3. 连接保持打开,客户端可以继续发送其他请求。

    4. 当满足以下条件时,连接断开:

      • 客户端或服务器显式关闭连接(如发送Connection: close)。

      • 连接空闲超时(由服务器或客户端配置)。

      • 达到最大请求数限制(由服务器配置)。

  • 特点:减少了连接建立的开销,提高了性能。


3. HTTP/2
  • 默认行为:复用同一个TCP连接,支持多路复用(多个请求和响应可以同时在一个连接上传输)。

  • 过程:

    1. 客户端与服务器建立一个TCP连接。

    2. 客户端通过该连接发送多个HTTP请求。

    3. 服务器通过同一连接返回多个HTTP响应。

    4. 连接断开条件:

      • 客户端或服务器显式关闭连接。

      • 连接空闲超时。

  • 特点:进一步优化了性能,减少了连接管理的开销。


4. WebSocket
  • 如果使用的是WebSocket协议(基于HTTP升级),连接不会在请求-响应后断开,而是保持长连接,支持双向通信。

  • 断开条件:

    1. 客户端或服务器主动关闭连接。

    2. 网络故障或超时。


5. 连接断开的具体时机
  • 客户端主动断开
    • 用户关闭浏览器或标签页。

    • 页面跳转到其他URL。

  • 服务器主动断开
    • 服务器配置了连接超时时间。

    • 服务器资源不足,主动关闭空闲连接。

  • 网络原因断开
    • 网络不稳定或中断。

    • 防火墙或代理服务器强制关闭连接。


总结

连接断开的时机取决于HTTP协议版本和连接管理方式:

  • HTTP/1.0:每次请求后立即断开。

  • HTTP/1.1:在多次请求后或满足条件时断开。

  • HTTP/2:在连接空闲或显式关闭时断开。

  • WebSocket:保持长连接,直到主动关闭或网络故障。

连接断开通常发生在请求-响应完成后,具体由客户端、服务器或网络条件决定。


7. 渲染页面

  • 浏览器解析并渲染页面:

    1. 解析HTML:构建DOM树。

    2. 解析CSS:构建CSSOM树。

    3. 合并DOM和CSSOM:生成渲染树。

    4. 布局(Layout):计算元素的位置和大小。

    5. 绘制(Paint):将页面绘制到屏幕上。

    6. 执行JavaScript:如果页面包含JS,浏览器会解析并执行。


8. 加载其他资源

  • 如果HTML中包含外部资源(如图片、CSS、JS),浏览器会重复上述过程,发送额外的HTTP请求来获取这些资源。


9. 页面交互

  • 页面加载完成后,用户可以与页面交互(如点击按钮、输入表单)。

  • 浏览器会根据用户操作触发事件(如点击事件)并执行相应的JavaScript代码。

  1. 断开TCP连接
    • 当所有资源都被加载和渲染完毕后,浏览器会关闭与服务器的TCP连接。
    • 如果是持久连接(HTTP Keep-Alive),TCP连接可能会被保持以便重用于后续请求。

总结

输入URL后,浏览器会依次执行以下步骤:

  1. 解析URL。

  2. DNS解析。

  3. 建立TCP连接(及TLS握手)。

  4. 发送HTTP请求。

  5. 服务器处理请求并返回响应。

  6. 浏览器解析响应并渲染页面。

  7. 加载其他资源。

  8. 页面交互。

这个过程涉及网络协议(如DNS、TCP、HTTP)、浏览器渲染引擎和JavaScript引擎的协作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值