当你在浏览器中输入一个地址(一)——浏览器检查地址
浏览器是我们日常都会用的一个软件,那么,当你向浏览器的地址栏输入一个地址(URL)时,它背后究竟发生了哪些故事呢?
浏览器检查地址
1 检查地址的有效性
对于浏览器来说,一般可以支持两种地址的输入:IP(192.xxx.xxx.xxx)直接访问和通过域名(www.xxx.com)访问。在你输入一个地址后,浏览器最先做的就是检查你的地址是否“合法”。譬如,用IP的时候有超过255的数字、域名中有非法字符等。只有当你正确输入一个地址,浏览器才会按照你的指令进行以下步骤。否则,(现在的)浏览器会认为你想在搜索引擎中搜索这段字符串。
2 检查访问方式(http or https)
假设你已输入正确,此时浏览器会检测你的访问方式。访问方式有HTTP和HTTPS两种,区别如下:
- https是http协议的安全版本,http协议的数据传输是明文的,是不安全的;https使用了SSL/TLS协议进行了加密处理,需要先建立SSL加密通道再进行通信,有效防止不安全访问。
- http和https使用连接方式不同,默认端口也不一样,http是80,https是443。
由于http的明文传输机制安全性很差,因此大部分网站现已转为https。但如果你不指定明确的访问方式,浏览器依旧会默认使用http进行访问。为了能使你顺利到达https的访问通道,网站开发者想出了下图的办法让你的http访问转化成https访问,即当你请求80端口时,服务器会返回一条重定向至443端口的信息,让你的浏览器重新请求443端口。
此时问题来了,你和服务器之间出现了坏人!(他甚至可能是你的网络运营商,如果真是的话https拿他也经常没得办法咯)他可能通过路由劫持、DNS劫持等方式劫持了你的网络,比如劫持了你的80端口,就会出现下图中的“中间人劫持攻击”。坏人可以根据他的目的,在原网页中植入广告、钓鱼网站等不良信息,再发送给你的浏览器。
一种常用的解决方案是使用HTST,在此不再详述。读者请自行搜索了解。
3 其他检查
除了上述检查,浏览器还会进行一些额外的操作,比如安全检查、访问限制(比如某些网站emmmm)。
4 浏览器缓存
最后,浏览器将检查自己的缓存情况,来决定下一步的行为,如图所示。其中要注意的是,RFC 规定,如果 ETag 和 Last-Modified 都有,则必须一次性都发给服务器,没有优先级。如果服务器输出了 ETag,没有必要再输出 Last-Modified。
ETag是LastModifed的补充,有些动态生成的内容就可以用md5做ETag控制缓存了。ETag比lastModified更加严谨,如果资源发生变化,ETag就会发生变化,就会把最新的资源给客户端返回去,而LastModified不识别s(秒)单位里的修改,所以如果资源在s(秒)单位里发生了修改,那LastModified也不会发生改变,这样如果只用了LastModified,客户端得到的资源就不是最新的;但是设定了ETag之后,每次客户端发出请求,服务端都会根据资源重新生成一个ETag,对性能有影响。
ETag只在特定情况下才更有用,比如同一url的资源在不同条件下返回不同的内容。而现实中一般会通过各种方法来避免这样的情况出现,因为这样容易消耗更多资源。相比而言,LastModified一般情况下一般足够,且LastModified更快,并且是web服务器自动支持的。因此默认使用LastModified,有需要的情况下才用ETag
当你在浏览器中输入一个地址(一)——浏览器检查地址相关推荐
- c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...
经典软件开发面试题:浏览器中输入一个网址后发生了什么? 大家好, 这一期呢,我们来谈一个经典的面试题.这种题目是在浏览器中输入一个网址以后, 会显示一个网页,这期间到底发生了什么? 答案要求说的越 ...
- 在浏览器中输入一个域名之后都发生了什么
当你在浏览器中打入www.baidu.com后,轻轻一敲回车百度输入框就展现在你面前,我们看似很简单很简单的一个操作,背后却有着超级复杂的过程. 其实网络传输跟我们平常说话有许多相似的地方,大脑组织语 ...
- 当在浏览器中输入一个域名后,会发生什么
今天,去哪儿网Geely老师分享了他在校招时的一个面试题:当输www.qunar.com时发生了什么.(真不是做广告哈) 因为学的并没有很扎实,不能更深更广的分析这个问题,遂---百度一下,发现这篇文 ...
- 当我们在浏览器中输入一个URL后,发生了什么?
写在开头:这篇文章被我归入博客性能优化类别,是因为我认为如果我们要优化网站性能.提升用户体验,首要目标就是要知道用户在本地请求并加载你的网页的过程中,到底发生了什么,在此基础上我们才能更好的优化网页. ...
- 在浏览器中输入网址后的流程
1.浏览器发起DNS查询请求 在广域网中是基于IP地址进行通信的.但通常客户访问的是一个网址,为此需要先得到网址对应的IP地址,这就需要域名服务系统将域名转换成IP地址.在客户端浏览器中输入网址时,浏 ...
- 在浏览器中输入URL并回车后都发生了什么?
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- 从输入一个网址到浏览器显示页面经历的全过程(网络开篇)
作为网络专栏的开篇导文,本文概况介绍下经典案例:从输入一个网址到浏览器显示页面的全过程. 步骤概要介绍如下: 1.输入网址 2.DNS解析获取域名对应的IP地址 3.建立TCP连接 4.web浏览器向 ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_2(在浏览器中输入www.baidu.com后执行的全部过程、DNS的域名<->IP地址、OS协议栈的样子、CDN)整起
可以说计算机网络,就是玩那几层中的那些协议们,本层玩,本层玩完了跨层玩,跨层玩,跨层玩完了本层玩- PART1:在浏览器中输入网站网址后执行的全部过程? 0.服务器在 80 端口等待客户的请求. se ...
- 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3
备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...
最新文章
- 网络广告推广浅析网站中的关键词密度要如何控制呢?
- python整数类型-Python 的数值类型(整数、长整数、浮点数和复数)
- 文巾解题 100. 相同的树
- Ext JS 4.1.1 RC2发布
- windows update失败还原更改,无法开机
- OS- -操作系统概念
- idea部署springboot项目到外部tomcat
- LeetCode 2087. 网格图中机器人回家的最小代价(脑筋急转弯)
- string matching(HDU-6629)
- iostat linux,iostat 命令详解
- 如何成为一个优秀的测试工程师?必备的9大职业素质盘点
- 关于 FleaPHP
- 二维点集求外轮廓Java_从二维点集重建平面形状-浅议凹包算法
- 数据库系统实践 IV 查询插入修改删除操作
- bus_dev_drv 模型
- 绝密!!!!!明星的身份证照片!!!!
- 孤狼电商店群全套教程:店群基础+2.0精细化蓝海+深度蓝海+裂变课程2.0
- 2022-2-3 牛客C++项目 —— 生产者消费者模型(条件变量、信号量)
- php判断是否是特殊字符如emoji表情
- 引导系统工具 Clover配置文件参数说明书 (SMBIOS)