您当前的位置:首页 > 互联网百科 > 百科

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

时间:2019-06-28 10:10:36  来源:  作者:

有些找过工作面试的朋友(特别是爬虫的岗位)应该常常被问到,你知道你在浏览器输入百度的网址之后,背后做了什么操作吗?其实这主要是想看看你对计算机网络协议的了解,今天小帅b就跟你浅谈一下这个问题,在此之前,我们先来了解一下什么是 URL 。

你真的理解URL是什么?

我们经常使用浏览器上网,在想要查询某些网站的时候,我们都会在浏览器的地址栏中输入一段字符串,也就是我们常说的「网址」,其实我们说的这个「网址」,指的就是URL,URL的全称是Uniform Resource Location, 叫做 「统一资源定位」。

比如我们想要访问 google,应该会在浏览器的地址栏中输入:

http://www.google.com。

这时候我们可以看到 URL 中两个比较重要的部分,一个是协议,一个是资源名称,它们被 「://」分隔开,左边的 http 就是协议,右边的 www.google.com 就是资源名称。

我们这里用到的协议是 HTTP 协议,他的全称叫做超文本传输协议,网络上的请求协议有许多,例如我们比较熟悉的其它协议有 ftp 协议,https 协议等等。

为什么要用协议呢?

因为没有规矩,不成方圆,我们在传输数据的时候,需要通过相应的规则才能获取相应的资源,比如你在家里,突然饿了,想要点外卖,那么你需要找到你想吃的,然后付钱,商家才给你做,外卖小哥哥才笑嘻嘻的给你送,如果你不遵循这一规则,你不给钱,你能吃到吗?外卖小哥会笑嘻嘻给你送吗?除非很帅。

所以我们这里使用的 HTTP 协议,可以给我们提供超文本文档。

资源名称

资源名称是一个完整的地址,它的格式是完全取决于协议而定,不过在大多数的协议里面,资源名称都包括:

1.Host Name :主机名,也就是服务器的名称,一般是域名,也就是域名对应的这台服务器的 ip 地址, 例如http://www.google.com 中的 www.google.com 就是主机名。

2.FileName :文件名,也就是我们要访问服务器上某个位置上的文件,这个文件所在的路径名就是FileName,例如我们要访问 a 服务器上的老师目录下的照片,那么我们就可以这样访问:

http://www.a.com/teacher/照片.jpg

这里的 teacher/照片.jpg 就是FileName。

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

 

3.Port Number: 端口号,这个是用于连接的端口,我们默认访问不需要输入端口,是因为 80 是默认的连接端口,一般服务器上有 0-65535 个端口,他开放哪个端口给你访问,你就只能通过它给你的端口进行访问,就好比你要去开房,发现酒店有65536 个房间,然后客服人员告诉你第 8000 个房间可以住,那么你就交完钱拿着房卡去 8000 号的房玩耍,总不会去 65536 个房间玩个遍吧!

这个端口后一般是在尾部添加冒号,在冒号写上端口号。例如:http://www.google.com:80

4.Parameters :请求参数,我们可以通过参数去访问特定的资源,一般在访问的地址后面添加 key-value 的相识的值去访问,例如我们要访问 a 这个网站的老师目录下第一到第十张波多野结衣的照片就可以这样呀访问:

http://www.a.com/teacher/pic/boduoyejieyi?start=1&end=10

好了,接下来就说说你在浏览器输入baidu.com后,都发生了什么

  1. 你在 Chrome 的地址栏输入baidu.com

 

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

2.Chrome通过 DNS 去查找 baidu.com 这个域名对应的IP地址:

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

DNS的查找过程是这样的:

Chrome浏览器会先查找有没有缓存的 DNS 记录,如果在浏览器缓存没有找到需要的记录,就会去做一个系统的调用,获取系统缓存的记录;

如果没有记录请求会继续到路由器上,路由器上有自己的 DNS 缓存;

如果没有记录就会到 ISP 的 DNS 缓存中查看记录;

如果没有记录就会在 ISP 的 DNS 服务器从根服务器域名服务器开始递归搜索最后得到 IP 地址。

3.浏览器给 baidu 服务器发送一个 HTTP 请求

 

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

 

获取到 baidu 的 ip 地址之后,就可以给 baidu 这个服务器发送 HTTP 请求了,我们通过 URL 地址去发送的时候是一个GET 的请求,这时候会向 baidu 服务器发送一个 header 信息:

Accept:text/html,Application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:PSTM=1506157985; BIDUPSID=DA662DF344C147D17FB4828CCD795292; ...
Host:www.baidu.com
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

 

经常写反反爬的话你应该知道其中

  1. User-Agent是向 baidu 服务器提供浏览器的类型,操作系统版本,浏览插件,浏览器语言等信息。
  2. Accept是告诉服务器说我们需要接收的类型是什么样子的。
  3. Connection:keep-alive 是为了后边请求不要关闭TCP连接。
  4. Cookie 是以文本形式存储,每次请求的时候就会发送给服务器,它可以存储用户的状态,用户名等信息。

 

4.baidu服务器301重定向响应

 

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

因为刚刚我们在 Chrome 浏览器中输入的是 baidu.com 而不是www.baidu.com,这时候 baidu 服务器就会将我们的请求响应一个 301 永久重定向到 www.baidu.com。

5.Chrome浏览器请求重定向来的地址

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

这时候 Chrome 浏览器知道 www.baidu.com 才是 baidu 希望访问的地址,那么这时候 Chrome 浏览器就会给 baidu 服务器发送另一个请求。

6.baidu服务器处理请求

baidu服务器在这个时候接收到了请求,它会去查看请求它的参数还有 cookie 信息,然后会进行一些操作处理,例如对数据进行存储,从数据库中获取需要被请求的数据等。

7.baidu服务器返回HTML响应

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?

 

 

当 baidu 服务器处理好之后,就会给浏览器返回数据了,这个时候会有一个 Response Headers 发送给浏览器:

Bdpagetype:1
Bdqid:0xddf2be49000b5995
Bduserid:0
Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Cxy_all:baidu+09720a4fa84e5493ae7506a57de6bc05
Date:Sat, 14 Oct 2017 09:39:32 GMT
Expires:Sat, 14 Oct 2017 09:39:32 GMT
Server:BWS/1.1
Set-Cookie:BDSVRTM=49; path=/
Set-Cookie:BD_HOME=0; path=/
Set-Cookie:H_PS_PSSID=1440_13551_21103_24658; path=/; domain=.baidu.com
Strict-Transport-Security:max-age=172800
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:Hphp
X-Ua-Compatible:IE=Edge,chrome=1

 

Response Headers 说明了是否缓存这个页面,怎么去解释响应信息,cookie 的设置,隐私信息等。

其中

  • Content-Encoding:gzip告诉浏览器整个响应体是用gzip算法压缩的。
  • Content-Type:text/html; charset=utf-8 告诉浏览器将响应的内容以HTML的形式呈现出来,字符集是utf-8。

 

8.Chrome浏览器显示baidu页面

这时候 Chrome 浏览器获得了响应内容,就开始显示 baidu 的HTML页面了,浏览器在显示的时候,发现需要获取其他的标签内容,比如图片、css 样式表、JAVAScript 文件,那么浏览器就会继续对 baidu 服务器去发送请求这些内容,这些静态的文件baidu 会把它进行缓存,利用内容分发网络(CDN)进行分发,所以这些静态文件在很多 CDN 数据中心都有备份,所以浏览器很快就能获取到这些静态文件。

从而进行页面吧的完整的显示:

你在浏览器输入了baidu.com 并按下回车后,背后到底发生了什么?
当然,这只是浅谈一下,让你有一个清晰的了解,如果你对网络方面感兴趣的话,可以去了解一下计算机网络的组成,什么是报文,什么是分组交换,如何握手以及各层之间的关系,比如物理层,数据链路层,运输层等。


Tags:浏览器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  Tags: 浏览器  点击:(7)  评论:(0)  加入收藏
Safari是苹果在iPhone和iPad上的默认网络浏览器。虽然我们天天都在使用,但是,你是否深入研究了Safari的所有功能和设置?"无痕浏览"、"阅读器"视图和下载文件等标准选项只是其...【详细内容】
2021-12-16  Tags: 浏览器  点击:(21)  评论:(0)  加入收藏
大家好,我是Stark-C。油猴简介【油猴】一款免费的浏览器扩展和最为流行的用户脚本管理器,它是一个附加组件(扩展程序),让用户安装一些脚本使大部分HTML为主的网页改变得更方便易...【详细内容】
2021-12-13  Tags: 浏览器  点击:(46)  评论:(0)  加入收藏
年末,又到了各大厂商盘点年度最佳的时候了。不过让世超感到意外的是 Google 竟然给自己 Chrome 的插件,做了一个 2021 年精选集锦,挑选出了 13 款今年最热门的 Chrome 插件。...【详细内容】
2021-12-13  Tags: 浏览器  点击:(19)  评论:(0)  加入收藏
当我们浏览知乎、Youtube、贴吧、CSDN等等,总会遇到服务商一些广告;复制文章的时候,剪切板总是自带一些版权信息;还有一些网页配色很亮,眼睛看着很不舒服。反正就是各种不爽。给...【详细内容】
2021-12-08  Tags: 浏览器  点击:(27)  评论:(0)  加入收藏
谷歌访问助手插件是专门针对chrome谷歌浏览器而开发的一款访问插件,可以为谷歌搜索,谷歌chrome商店,gmail邮箱提供加速服务,解决打不开的问题。这款插件可以帮助我们在使用谷歌...【详细内容】
2021-12-03  Tags: 浏览器  点击:(13)  评论:(0)  加入收藏
微软似乎正努力增强 Edge 浏览器和网页端 Office 之间的整合联动。Reddit 社区用户 u/Leopeva64-2指出,Edge Canary 的最新版本在标签的右键菜单中有一个新选项。如果你在窗...【详细内容】
2021-11-11  Tags: 浏览器  点击:(35)  评论:(0)  加入收藏
IOS15推送后,Safari也支持扩展了,这里给大家推荐几款Safari扩展软件,希望对你手机使用有所帮助。 扩展功能 IOS15可以通过设置——Safari浏览器——更多扩...【详细内容】
2021-11-08  Tags: 浏览器  点击:(135)  评论:(0)  加入收藏
一、判断是否IE浏览器(支持判断IE11与edge)function IEVersion() {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isIE = userAgent.indexOf("comp...【详细内容】
2021-11-02  Tags: 浏览器  点击:(40)  评论:(0)  加入收藏
作为当今最差的浏览器,虽说IE即将推出历史的舞台,但是因为项目需要还是需要支持。那么必须判断是否是IE,如果是IE,需要做些特殊处理。document.documentMode 是IE特有的属性,可以...【详细内容】
2021-10-25  Tags: 浏览器  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
在互联网的江湖里头,每天都有新鲜事。我们昨天还在聊元宇宙,还没有了解元宇宙是个啥,今天又开始了web3.0,站在时代的浪潮之巅,哪怕我们只是一滴最普通的水,也会随着巨浪此起彼伏,直...【详细内容】
2021-12-24  程序员老王聊科技    Tags:Web3.0   点击:(7)  评论:(0)  加入收藏
社交媒体营销的好处: 我们可以使用社交媒体来定义企业的品牌标识以及提供的产品或服务。 社交媒体可以和不了解我们产品和服务的人群建立关系。 社交媒体可以和用户完成互动...【详细内容】
2021-12-22  搜索引擎和短视频推广    Tags:社交媒体   点击:(12)  评论:(0)  加入收藏
之前我们讲到说,有些网站在复制的时候会提示一个弹窗,我们可以去掉网站的copy事件监听就可以了,但是我们经常用到的一个网站,百度文库,网站不是这样设计的。 可以随便打开一个百...【详细内容】
2021-12-03  追风Office    Tags:百度文库   点击:(9)  评论:(0)  加入收藏
都说现在的年轻人网上冲浪有三大痛点:听歌被版权拒之门外,看剧被超前点播劝退,网盘下载文件被无情限速。不巧,这些痛点我刚好都经历过,手机里光是这些类型的APP都有好几个,这不是...【详细内容】
2021-11-11  黑科技工具圈    Tags:网盘   点击:(46)  评论:(0)  加入收藏
今天跟大家分享9个珍藏已久的网站,满满的黑科技,保证看完会让你感觉发现了新大陆,下面一起来看看吧。1.国际空间站模拟器这个网站满满的科技感,它在线真实模拟了宇宙飞船对接国...【详细内容】
2021-11-01  职场办公技能    Tags:网站   点击:(33)  评论:(0)  加入收藏
好用的网站能够受益一生,一些优质的网站用起来的确可以这样说。今天分享6个资源丰富的网站,质量杠杠的。 1.【字由网】推荐理由:免费商用字体、字体库 当工作中需要制作海报或...【详细内容】
2021-10-27  小杰好厉害呀    Tags:资源网站   点击:(18)  评论:(0)  加入收藏
终于准备离开网络了吗?如果您正在阅读本文,则您的个人信息很可能会向公众公开。我所说的“公共”是指任何地方的每个人。那么,如何将自己从互联网上删除以阻止公司获取您的信...【详细内容】
2021-10-27  编程老妖    Tags:互联网   点击:(25)  评论:(0)  加入收藏
经过上次会议的"洗礼",郝自信对于职场"黑话"已经有了一定的了解和学习,这次会议他表现如何呢? 播放视频看来,黑话作为职场通用语,不仅能让经验丰富的职场人彼此心照不宣,也能让一...【详细内容】
2021-10-26    计算机世界  Tags:互联网   点击:(26)  评论:(0)  加入收藏
从开始分享软件工具到现在,询问百度网盘名不限速下载的问题就没有间断过,看来大家也是苦百度网盘已久,本文咱们就分享一下百度网盘不限速下载的方法。 文章比较长,实际上操作...【详细内容】
2021-10-25  网创智慧库    Tags:百度网盘   点击:(526)  评论:(0)  加入收藏
我们使用电脑查询或寻找素材时,会去浏览器搜索,搜索结果五花八门,要花时间去筛选。但如果去对应的网站搜索,那就方便多了,今天分享6个资源超多的网站,个个都是精品。 【办公资源网...【详细内容】
2021-10-21  小杰好厉害呀    Tags:网站   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条