输入url到显示主页的详细过程

news/2024/12/12 20:36:06/
从浏览器地址输入url到显示主页的过程?

主要分为:DNS解析,TCP连接,发送HTTP请求,服务器处理请求,浏览器接收HTTP响应,断开连接

DNS解析:

浏览器发起一个DNS请求到DNS服务器,将域名解析为服务器的Ip地址

TCP连接:

浏览器通过解析得到Ip地址与服务器建立TCP连接(通常通过443端口进行加密HTTPS连接)。这一步涉及到TCP的三次握手过程,确保双方都准备好数据传输。

发送HTTP请求:

浏览器构建HTTP请求,包含请求行(get、http)、请求头(包含用户代理、接收的内容类型等信息)和请求体(如果有);将请求发送到服务器。

服务器处理请求:

接收到HTTP请求后,根据请求的资源路径,经过后端处理(可能包括数据库查询等),生成HTTP响应信息;响应信息包括状态行(http/1.1 200 OK),响应头(内容类型、缓存控制等消息),响应体(请求的资源内容)

浏览器接收HTTP响应:

浏览器接收到服务器HTTP响应,开始解析响应体中的HTML内容;然后构建DOM树、解析CSS和JavaScript文件等,最终渲染页面。

断开连接:

TCP四次挥手,连接结束。

DNS解析过程

DNS,domain name system 域名解析系统。作用:域名和IP相互映射。

开始,检查浏览器缓存,是否对应IP,

没有,看本地DNS服务器是否缓存对应的域名和ip

没有,请求根服务器,返回顶级域名服务器

请求顶级域名服务器,返回权威域名服务器

请求权限域名服务器,返回对应的ip地址

附录
  1. DNS 解析阶段

    • 主要涉及网络层和应用层
      • 网络层:当用户在浏览器输入网址(如https://www.example.com/index.html)后,浏览器首先会检查本地缓存中是否有对应的域名 - IP 地址映射。如果没有,就会向本地 DNS 服务器发送 DNS 请求。这个请求在网络层被封装为 IP 数据包,包含源 IP 地址(用户计算机的 IP 地址)和目的 IP 地址(本地 DNS 服务器的 IP 地址),在数据链路层封装为帧,通过物理层传输到本地 DNS 服务器。
      • 应用层:DNS 请求本身是基于 DNS 协议构建的应用层数据,包含要查询的域名等信息。本地 DNS 服务器收到请求后,在应用层按照 DNS 协议解析请求,通过查询自身缓存或者向其他 DNS 服务器递归查询,最终找到目标域名对应的 IP 地址,并将结果返回给浏览器。这个过程中,数据在各层的封装和解封装与请求过程类似,只是方向相反。
  2. TCP 连接阶段

    • 主要涉及传输层、网络层、数据链路层和物理层
      • 传输层:在得到目标服务器的 IP 地址后,浏览器(客户端)会发起 TCP 连接请求。这个请求在传输层被封装为 TCP 数据段,其中包含源端口(浏览器随机分配的端口)、目的端口(对于 HTTP 通常是 80 或 443,这里假设是 443 用于 HTTPS)、SYN(同步)标志位等信息,用于与服务器建立连接。
      • 网络层:TCP 数据段随后被封装为 IP 数据包,包含源 IP 地址和目标服务器的 IP 地址,用于在网络中路由。
      • 数据链路层:IP 数据包被封装为数据帧,添加源 MAC 地址和目标 MAC 地址(通过 ARP 获取下一跳设备的 MAC 地址),用于在本地网络或通过交换机进行转发。
      • 物理层:数据帧被转换为物理信号(如电信号或光信号)进行传输,经过网络设备(如路由器、交换机)传输到目标服务器。服务器收到连接请求后,会返回带有 SYN - ACK(同步 - 确认)标志位的 TCP 数据段,经过同样的各层处理后返回给客户端。客户端再发送 ACK(确认)数据段,完成 TCP 连接的三次握手过程。
  3. 发送 HTTP 请求阶段

    • 涉及应用层、表示层、传输层、网络层、数据链路层和物理层
      • 应用层:浏览器按照 HTTP 协议构建请求,如GET /index.html HTTP/1.1等信息,这是应用层数据。如果是 HTTPS 请求,在表示层会对 HTTP 请求进行加密(如使用 SSL/TLS 协议),转换为加密后的二进制数据格式。
      • 传输层:加密后的请求数据被封装为 TCP 数据段,添加源端口、目的端口、序列号等信息,确保可靠传输。
      • 网络层:TCP 数据段被封装为 IP 数据包,包含源 IP 地址和目标服务器的 IP 地址,用于在网络中路由。
      • 数据链路层:IP 数据包被封装为数据帧,添加源 MAC 地址和目标 MAC 地址,通过交换机等设备转发。
      • 物理层:数据帧被转换为物理信号传输到服务器。
  4. 服务器处理请求阶段

    • 主要涉及应用层和表示层(如果有加密)
      • 应用层:服务器在应用层接收到浏览器发送的 HTTP 请求(如果是加密请求,先在表示层进行解密),按照服务器端的应用程序(如 Web 服务器软件)的逻辑进行处理。例如,根据请求的资源路径(如/index.html)查找对应的文件或者动态生成页面内容。
      • 表示层(如果有加密):如果请求是加密的,服务器在表示层进行解密操作,将数据恢复为应用层能够理解的 HTTP 请求格式。
  5. 浏览器接收 HTTP 响应阶段

    • 涉及物理层、数据链路层、网络层、传输层和应用层
      • 物理层:服务器生成的 HTTP 响应数据首先在物理层被转换为物理信号,通过网络介质传输。
      • 数据链路层:物理信号被转换为数据帧,通过交换机等设备转发,数据帧中包含源 MAC 地址(服务器网卡 MAC 地址)和目的 MAC 地址(客户端网卡 MAC 地址)。
      • 网络层:数据帧被解封装为 IP 数据包,包含源 IP 地址(服务器 IP 地址)和目的 IP 地址(客户端 IP 地址),在网络中经过路由器等设备路由到客户端。
      • 传输层:IP 数据包被解封装为 TCP 数据段,根据 TCP 协议的序列号等信息进行重组和校验,确保数据的完整性和顺序正确。
      • 应用层:TCP 数据段被解封装为 HTTP 响应,浏览器在应用层按照 HTTP 协议解析响应,如解析响应头来获取内容类型、编码方式等信息,解析响应体来获取网页内容等。
  6. 断开连接阶段

    • 主要涉及传输层、网络层、数据链路层和物理层
      • 传输层:浏览器或服务器(通常是浏览器先发起)会发送带有 FIN(结束)标志位的 TCP 数据段,表示要关闭连接。对方收到后会返回 ACK 数据段确认收到,然后可能也会发送 FIN 数据段,双方通过一系列的四次握手过程来关闭 TCP 连接。这些 TCP 数据段在传输层生成后,经过网络层封装为 IP 数据包,包含源 IP 地址和目的 IP 地址。
      • 网络层:IP 数据包在数据链路层被封装为数据帧,添加源 MAC 地址和目标 MAC 地址,通过交换机等设备转发。
      • 物理层:数据帧被转换为物理信号传输,完成连接的断开过程。


http://www.ppmy.cn/news/1554587.html

相关文章

fastadmin框架同时使用 阿里云oss和阿里云点播

背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统&#xff0c;实现完美的统一。设置两个地址downUrl&#xff0c;thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作&#xff0c;前端html页面实现 <…

MySQL Binlog 日志监听与 Spring 集成实战

MySQL Binlog 日志监听与 Spring 集成实战 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种常见的格式&#xff1a;Statement 模式、Row 模式和Mixed 模式。每种模式的设计目标不同&#xff0c;适用于不同的场景&#xff0c;以下是它们的详细对比和…

【通俗理解RNN】

1.从单层网络到经典的RNN结构 首先要了解一下最基本的单层网络&#xff0c;它的结构如下图所示&#xff1a; 输入是x&#xff0c;经过变换Wxb和激活函数f&#xff0c;得到输出y。 在实际应用中&#xff0c;我们还会遇到很多序列形的数据&#xff1a; 如&#xff1a; 自然语…

前端如何实现签名功能

1.JS实现 前端实现签名功能&#xff0c;通常是通过在页面上创建一个可绘制的区域&#xff0c;用户可以用鼠标或触摸设备进行签名。这个区域通常是一个<canvas>元素&#xff0c;结合JavaScript来处理绘制和保存签名。下面是一个简单的实现步骤&#xff1a; 1.1. 创建HTM…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性&#xff0c;允许你通过…

hibernate 配置 二级 缓存

一级缓存 是默认的 是session 级别的缓存 二级缓存是 可选的 是sessionfactory的缓存 hibernate.cfg.xml 加入如下配置 <!-- 开启二级缓存--> <property name"hibernate.cache.use_second_level_cache">true</property> <!-- 使用ecache 作…

http 和 https 的区别?

HTTP (HyperText Transfer Protocol) 和 HTTPS (HyperText Transfer Protocol Secure) 是两种用于在 Web 浏览器和网站服务器之间传输网页的协议&#xff0c;它们的主要区别在于安全性。以下是 HTTP 和 HTTPS 的一些关键区别&#xff1a; 安全性&#xff1a; HTTP&#xff1a;H…

Windows使用VirtualBox安装macOS

您的赞&#xff0c;是Ikun练习时长两年半 和 In Windows 11更新的动力 之前我在这里写了一篇文章&#xff0c;名字是“[教程]用VirtualBox安装MacOS虚拟机”。我感觉这篇文章没有写详细&#xff0c;所以重新写了一篇。 镜像下载 这个吗… [此资源非常稀有&#xff0c;下载此文…