首页 常见问题 浏览器输入地址后发生了什么

浏览器输入地址后发生了什么

Oct 24, 2019 pm 05:24 PM
浏览器

浏览器输入地址后发生了什么

浏览器输入地址后发生了什么

浏览器是我们上网的一种工具,我们平时看视频,查资料,网上冲浪都离不开它,那么你知道当你在浏览器地址栏敲下回车键之后,浏览器做了哪些事吗,今天就给大家分享下浏览器背后的工作。

第一步:浏览器输入域名

例如输入:www.php.cn

1.jpg

第二步:浏览器查找域名的IP地址

浏览器会把输入的域名解析成对应的IP,其过程如下:

1.查找浏览器缓存:因为浏览器一般会缓存DNS记录一段时间,不同浏览器的时间可能不一样,一般2-30分钟不等,浏览器去查找这些缓存,如果有缓存,直接返回IP,否则下一步。

2.查找系统缓存:浏览器缓存中找不到IP之后,浏览器会进行系统调用(windows中是gethostbyname),查找本机的hosts文件,如果找到,直接返回IP,否则下一步。

3.查找路由器缓存:如果1,2步都查询无果,则需要借助网络,路由器一般都有自己的DNS缓存,将前面的请求发给路由器,查找ISP 服务商缓存 DNS的服务器,如果查找到IP则直接返回,没有的话继续查找。

4.递归查询:如果以上步骤还找不到,则ISP的DNS服务器就会进行递归查询,所谓递归查询就是如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步查询。(本地域名服务器地址是通过DHPC协议获取地址,DHPC是负责分配IP地址的)

5.迭代查询:本地域名服务器采用迭代查询,它先向一个根域名服务器查询。本地域名服务器向根域名服务器的查询一般都是采用迭代查询。所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报文后,要么告诉本地域名服务器下一步应该查询哪一个域名服务器,然后本地域名服务器自己进行后续的查询。(而不是替代本地域名服务器进行后续查询)。

第三步 :浏览器与目标服务器建立TCP连接

1.主机浏览器通过DNS解析得到了目标服务器的IP地址后,与服务器建立TCP连接。

2.TCP3次握手连接:浏览器所在的客户机向服务器发出连接请求报文(SYN标志为1);服务器接收报文后,同意建立连接,向客户机发出确认报文(SYN,ACK标志位均为1);客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的TCP连接建立完成,开始通信。

第四步:浏览器通过http协议发送请求

浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是http://www.php.cn/ ,KeepAlive,长连接,还有User-Agent用户浏览器操作系统信息,编码等。值得一提的是Accep-Encoding和Cookies项。Accept-Encoding一般采用gzip,压缩之后传输html文件。Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

第五步:某些服务会做永久重定向响应

对于大型网站存在多个主机站点,了负载均衡或者导入流量,提高SEO排名,往往不会直接返回请求页面,而是重定向。返回的状态码就不是200OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。

重定向的作用:重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。

第六步:浏览器跟踪重定向地址

当浏览器知道了重定向后最终的访问地址之后,重新发送一个http请求,发送内容同上。

第七步:服务器处理请求

服务器接收到获取请求,然后处理并返回一个响应。

第八步:服务器发出一个HTML响应

返回状态码200 OK,表示服务器可以响应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

第九步:释放TCP连接

1.浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;

2.服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;

3.服务器数据传输完毕后,向客户机发送连接释放报文;

4.客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;

第十步:浏览器显示页面

在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。渲染后的数据,进行相应的页面呈现和脚步的交互。

第十一步:浏览器发送获取嵌入在HTML中的其他内容

比如一些样式文件,图片url,js文件url等,浏览器会通过这些url重新发送请求,请求过程依然是HTML读取类似的过程,查询域名,发送请求,重定向等。不过这些静态文件是可以缓存到浏览器中的,有时访问这些文件不需要通过服务器,直接从缓存中取。某些网站也会使用第三方CDN进行托管这些静态文件。

以上是浏览器输入地址后发生了什么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

apache服务器是什么 apache服务器是干嘛的 apache服务器是什么 apache服务器是干嘛的 Apr 13, 2025 am 11:57 AM

Apache服务器是强大的Web服务器软件,充当浏览器与网站服务器间的桥梁。1. 它处理HTTP请求,根据请求返回网页内容;2. 模块化设计允许扩展功能,例如支持SSL加密和动态网页;3. 配置文件(如虚拟主机配置)需谨慎设置,避免安全漏洞,并需优化性能参数,例如线程数和超时时间,才能构建高性能、安全的Web应用。

解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS开发网站时,常常会遇到资源文件缓存的问题,特别是当你频繁更新CSS和JavaScript文件时,旧版本的文件可能仍然被浏览器缓存,导致用户无法及时看到最新的更改。这个问题不仅影响用户体验,还会增加开发和调试的难度。最近,我在项目中遇到了类似的困扰,经过一番探索,我找到了wiejeben/craft-laravel-mix这个插件,它完美地解决了我的缓存问题。

HDFS文件系统在CentOS上的使用技巧 HDFS文件系统在CentOS上的使用技巧 Apr 14, 2025 pm 07:30 PM

CentOS系统下HDFS文件系统的安装、配置及优化指南本文将指导您如何在CentOS系统上安装、配置和优化Hadoop分布式文件系统(HDFS)。HDFS安装与配置Java环境安装:首先,确保已安装合适的Java环境。编辑/etc/profile文件,添加以下内容,并将/usr/lib/java-1.8.0/jdk1.8.0_144替换为您的实际Java安装路径:exportJAVA_HOME=/usr/lib/java-1.8.0/jdk1.8.0_144exportPATH=$J

Nginx性能监控与故障排查工具使用 Nginx性能监控与故障排查工具使用 Apr 13, 2025 pm 10:00 PM

Nginx性能监控与故障排查主要通过以下步骤进行:1.使用nginx-V查看版本信息,并启用stub_status模块监控活跃连接数、请求数和缓存命中率;2.利用top命令监控系统资源占用,iostat和vmstat分别监控磁盘I/O和内存使用情况;3.使用tcpdump抓包分析网络流量,排查网络连接问题;4.合理配置worker进程数,避免并发处理能力不足或进程上下文切换开销过大;5.正确配置Nginx缓存,避免缓存大小设置不当;6.通过分析Nginx日志,例如使用awk和grep命令或ELK

Tomcat日志中如何查看线程状态 Tomcat日志中如何查看线程状态 Apr 13, 2025 am 08:36 AM

要查看Tomcat日志中的线程状态,您可以采用以下几种方法:TomcatManagerWeb界面:在浏览器中输入Tomcat的管理地址(通常为http://localhost:8080/manager),登录后即可查看线程池的状态。JMX监控:使用JMX监控工具(如JConsole)连接到Tomcat的MBean服务器,查看Tomcat线程池的状态。在JConsole中选择

如何在CentOS上监控HDFS状态 如何在CentOS上监控HDFS状态 Apr 14, 2025 pm 07:33 PM

在CentOS系统上监控HDFS(Hadoop分布式文件系统)状态有多种途径。本文将介绍几种常用方法,助您选择最合适的方案。1.利用Hadoop自带的WebUIHadoop自带的Web界面提供集群状态监控功能。步骤:确保Hadoop集群已启动并运行。访问WebUI:在浏览器中输入http://:50070(Hadoop2.x)或http://:9870(Hadoop3.x)。默认用户名和密码通常为hdfs/hdfs。2.命令行工具监控Hadoop提供一系列命令行工具,方便监

Nginx日志分析与统计,了解网站访问情况 Nginx日志分析与统计,了解网站访问情况 Apr 13, 2025 pm 10:06 PM

本文介绍了如何分析Nginx日志以提升网站性能和用户体验。1.理解Nginx日志格式,例如时间戳、IP地址、状态码等;2.使用awk等工具解析日志,统计访问量、错误率等指标;3.根据需求编写更复杂的脚本或使用更高级工具,例如goaccess,分析不同维度的数据;4.对于海量日志,考虑使用Hadoop或Spark等分布式框架。通过分析日志,可以识别网站访问模式、改进内容策略,并最终优化网站性能和用户体验。

Debian OpenSSL如何配置HTTPS服务器 Debian OpenSSL如何配置HTTPS服务器 Apr 13, 2025 am 11:03 AM

在Debian系统上配置HTTPS服务器涉及几个步骤,包括安装必要的软件、生成SSL证书、配置Web服务器(如Apache或Nginx)以使用SSL证书。以下是一个基本的指南,假设你使用的是ApacheWeb服务器。1.安装必要的软件首先,确保你的系统是最新的,并安装Apache和OpenSSL:sudoaptupdatesudoaptupgradesudoaptinsta