浏览器访问web服务器经过了哪些过程

article/2025/11/4 8:26:08

文章目录

    • 一、URL输入
    • 二、DNS解析
    • 三、建立TCP连接
    • 四、发送HTTP/HTTPS请求
    • 五、服务器响应请求
    • 六、浏览器解析渲染页面
    • 七、HTTP请求结束,断开TCP连接
    • 八、总结

一、URL输入

  1. 输入URL

URL,全称叫做统一资源定位符,用于定位互联网上的资源,俗称网址。

  1. 浏览器检查输入的内容是否是一个合法的URL连接

    • 合法:判断输入的URL是否完整。如果不完整,浏览器会对地址进行猜测,补全地址的前缀或者后缀。
    • 不合法:将输入内容作为搜索条件,使用用户设置的默认搜索引擎进行搜索。(现在大部分浏览器都会从历史记录、书签等地方开始查找我们输入的网址,并给出智能提示)
  2. 浏览器对用户输入的URL (网址) 进行解析,确定了web服务器和文件名

二、DNS解析

因为浏览器不能直接通过域名找到对应的服务器IP地址,所以需要进行DNS解析,查找到对应的IP地址进行访问。

img

用户在浏览器输入域名,操作系统会检查浏览器缓存和本地的 hosts 文件中,是否有这个网址记录

  1. 如果本地有的话就从记录中找到对应的 IP 地址,完成域名解析。
  2. 如果本地没有的话,使用TCP/IP参数中设置的DNS服务器进行查询,如果查询的域名包含在本地配置区域资源中,则返回解析结果,完成域名解析
  3. 如果本地配置区域资源中还是没有,则检查本地DNS服务器是否缓存有该网址记录,有的话就返回解析结果,完成域名解析
  4. 如果以上三个地方都没有的话,本地DNS服务器就会发送查询报文到根DNS服务器,根DNS服务器收到请求后,返沪顶级域DNS服务器地址,本地收到顶级域DNS服务器后,再发送查询报文到顶级域DNS服务器,顶级域DNS服务器收到请求后,返回权威DNS服务器地址,然后本地DNS服务器再发送查询报文到权威DNS服务器,权威DNS服务器收到请求后,返回最终的 IP 地址,完成域名解析。

三、建立TCP连接

  • 当浏览器获取到服务器IP地址后,浏览器会用一个随机的端口号向服务器80端口发起TCP连接请求。这个连接请求到达服务器段后,通过TCP三次握手,建立TCP连接。建立连接后就可以通过HTTP进行数据传输了。
  • 如果使用HTTPS,会在TCP域HTTP之间添加一层协议做为加密及认证的服务。HTTPS使用 SSL 和 TLS 协议,保障了信息的安全。
  • SSL 协议的作用:认证客户端和服务器,确保数据发送到正确的客户端和服务器。加密数据防止数据中途被窃取,维护数据完整性,确保数据再传输过程中不被改变。
  • TLS协议的作用:用于再两个通信应用程序之间提供保密性和数据完整性。TLS协议由两层组成:TLS记录协议,和TLS握手协议。

四、发送HTTP/HTTPS请求

  • 当浏览器到 web 服务器的连接建立后,浏览器会发送一个初始的 HTTP GET 请求,请求目标通常是一个 HTML 文件。
  • 浏览器能解析解析网址并生成HTTP消息,但是其本身不具备将消息发送到网络中的功能,因此需要浏览器委托操作系统向web服务器发送请求

五、服务器响应请求

服务器收到请求后,将发回一个 HTTP 响应报文,内容包括相关响应头和 HTML 正文。当浏览器收到服务器响应后,开始解析并渲染页面。

常见状态码描述及说明:

常见状态代码状态描述说明
200OK客户端请求成功
204No Content请求处理成功,但没有任何资源可以返回给客户端
206Partial Content对资源某一部分的请求
301Moved Permanently资源的URI 已更新,永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。
302Found资源的URI已临时定位到其他位置, 临时性重定向
303See Other资源的URI已更新,你是否能临时按新的URI访问, 该状态码表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源
304Not Modified资源已找到,但未符合条件请求
307Temporary Redirect临时重定向,与302有相同的含义
400Bad Request客户端请求有语法错误,不能被服务器所理解
401Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403Forbidden服务器收到请求,但是拒绝提供服务
404Not Found请求资源不存在,eg:输入了错误的URL
500Internal Server Error服务器发生不可预期的错误,貌似内部资源出故障了
503Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

六、浏览器解析渲染页面

不同的浏览器引擎渲染过程都不太一样,我以谷歌浏览器为例来介绍一下渲染过程:

  • 首先,处理 HTML 标记并构建DOM 树
  • 第二步,处理 CSS 标记并构建 CSSOM 树。
  • 第三步,将 DOM 树与 CSSOM 树合并成一个渲染树。
  • 第四步,根据渲染树来布局,以计算每个节点的几何信息。
  • 第五步,将各个节点渲染到屏幕上。这样就完成了页面的渲染。

七、HTTP请求结束,断开TCP连接

  • 渲染完成之后就可以断开 TCP 连接了
  • 但是现在的浏览器页面为了优化请求的耗时,默认都会开启持久连接,也就是说,标签页关闭的时候 TCP 连接才会关闭,这个关闭的过程就是四次挥手。

八、总结

URL访问网站时的网络传输全过程:

  • 首先url输入,然后通过域名找到IP,先从本地hosts文件中查找,如果本地和指定DNS服务器中的缓存都没有的话, 就要请求DNS服务器从根域开始查询;得到 IP 后开始与目的主机进行三次握手来建立TCP连接;连接建立后进行HTTP访问,传输并获取网页内容;传输完后与目的主机四次挥手来断开TCP连接。

http://chatgpt.dhexx.cn/article/YDdxs1BY.shtml

相关文章

浏览器访问服务器的过程

1、在浏览器地址栏中输入网址 2、浏览器通过用户在地址栏中输入的URL构造HTTP请求报文(请求报文一般没有请求体) 3、浏览器发起 DNS 解析请求,将域名转换为 IP 地址 4、浏览器将请求报文发送给服务器 5、服务器接收请求报文,并解…

浏览器中网址访问过程详解

前言 当我们在浏览器中输入一个网址,比如www.google.cn,浏览器就会加载出百度的主页。那么浏览器背后完成的具体是怎么样的呢? 总结起来大概的流程是这样的: (1)浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的…

浏览器访问IPv6地址

以本地的ipv6为例: 环境:win10、tomcat服务器 注:这里的tomcat服务器是用来帮助测试本地的ipv6地址可用性,如果是外网的的ipv6,直接访问即可 步骤如下: 一、首先查看本机的ipv6地址,在cmd命令…

浏览器访问网站

这个仅仅是我个人对于访问网站流程的一个理解,我相信肯定有不全面也有错漏的地方,如果是的各位可以给我指出来让我可以有所提高~ 五层协议体系结构中各层运用到的协议: 应用层:HTTP、DNS; 传输层:TCP、…

Selenium模拟浏览器访问

目录 一、selenium简介 1.1、什么是selenium 1.2、为什么使用selenium 1.3、安装selenium 1.3.1、谷歌浏览器驱动下载 1.3.2、谷歌驱动和谷歌浏览器版本之间的映射表 1.3.3、查看谷歌浏览器版本 1.3.4、安装selenium库 二、selenium的使用 2.1、selenium的使用步骤 2.2、举例…

浏览器禁止访问某个网站

浏览器要禁止访问某个网站,可以在电脑中打开 C:\Windows\System32\drivers\etc这个位置,找到hosts文件。 将需要禁止访问的网址输入,并在前面加上127.0.0.1即可。 如图所示。然后关闭保存。

如何通过浏览器访问本地电脑文件

如何通过浏览器访问本地电脑文件 首先,打开控制面板,找到"程序"点击打开。 找到“启用或关闭windows功能”,点击打开 找到“Internet Information Services”(Internet信息服务),将它的子项及子项的子项全部勾选&…

浏览器访问网址过程详解

前言 首先要了解几个参数的含义: IP地址:是指互联网协议地址。 子网掩码:子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位…

【无标题】浏览器是如何访问的? 超详细解析过程

浏览器分析链接指向网页的URL。浏览器向DNS请求解析 URL 的 IP 地址。域名系统DNS 解析出 URL 的 IP 地址。浏览器与服务器建立 TCP 连接。浏览器发出取文件命令:GET/chn/yxsz/index.htm。服务器(URL所在)给出响应,把文件 index.h…

Linux命令学习---查看linux服务器,开机启动的服务,正在运行的服务,监听检查,防火墙检查,SSH检查

1)查看linux服务器,开机启动的服务,输入以下命令 systemctl list-unit-files --stateenabled2)查看linux服务器,正在运行的服务: systemctl --typeservice --staterunning --all3)监听检查 ss…

c#如何在linux上运行程序,在Linux上运行C#的方法是什么

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。有时我们需要在Linux上编写程序,那么c#在Linux中想要运行需要什么呢?这篇文章主要介绍了在Linux上运行C#的方法, 下面就来看看如何在Linux上运行Mono。 命令行应用 先从Mono主页(http://www.go-…

Linux系统查看磁盘可用空间的5个命令

大家好,我是良许。 工作中,经常会遇到磁盘爆满的情况,尤其是一台服务器运行了 N 年之后,里面会充满各种各样垃圾文件,比如:编译产生的中间文件、打包的镜像文件、日志文件,等等。 别问我怎么知…

Linux如何运行exe驱动,在Linux下可用Wine安装和运行360驱动大师、CCleaner

在Linux操作系统下可用Wine安装和运行360驱动大师、CCleaner.exe文件,它们是Windows下的软件,在Linux中借助Wine就可以使用360驱动大师和CCleaner了,已亲测有效。 说明 1、如果有原生的Linux软件,请不要用Wine来运行,因…

服务器被攻击 显示503,在Linux服务器下出现503服务不可用错误的原因和排除方法...

本文介绍在Linux服务器下出现503服务不可用错误(503 Service Unavailable Error)的原因和排除方法。内容有:什么是HTTP 503错误、对500错误进行故障排除。 前言 浏览网页时最常见的错误之一是“503服务不可用错误(503 Service Unavailable Error)”,此消息表明网络服务器遇到…

在线运行 Linux,真滴牛逼。

作者:JackTian 来源:公众号「杰哥的IT之旅」 ID:Jake_Internet 转载请联系授权(微信ID:Hc220088) 原文地址:在线运行 Linux,强的离谱! 大家好,我是杰哥。 对…

什么是 503 服务不可用错误?

浏览网页时最常见的错误之一是“503 服务不可用错误”,此消息表明 Web 服务器遇到技术问题并且无法处理请求。 本文将介绍 503 错误的含义、收到 HTTP 503 代码的原因以及如何解决这些错误。 什么是 HTTP 503 错误 当您打开网页时,您的浏览器会向托管…

在linux下安装配置ssh服务

一、 实验题目: linux环境下的部分配置 二、 理论分析 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会…

Linux的dhcp服务器

准备工作 1.CentOS 7作为服务器 CentOS 7作为客户机 2.先将虚拟机上的DHCP服务器和客户机的网络连接设置为仅主机模式(为了更好的模拟生产服务器) 2.打开虚拟网络编辑器,将仅主机模式下的"使用本地DHCP服务器IP地址分配给虚拟机"…

mac上实时运行linux系统,在Linux操作系统上可用Darling来运行macOS软件

本文介绍一款适用于Linux的macOS转换层工具Darling,用它可让您在Linux操作系统上运行macOS软件。 介绍 1、快速 Darling无需使用硬件仿真器即可直接运行macOS软件。 2、自由 与Linux一样,Darling是免费的开源软件,它在GitHub上公开开发&#…

网络诊断显示“DNS服务器可能不可用”

首先提供我的解决方法: 1、遇到这种情况,先重启电脑试一试,或者把ADSL猫和路由器都重启一下。如果还不行,进入网络共享中心的网络连接窗口,选择本地连接,右键,选择【属性】,如果用的…