人生在世何其痛苦,所以咖啡至少该甜一点。 收藏本站
登陆 / 注册 搜索

阅读:2.2万   回复: 13

从输入网址到网页彻底打开,中间都发生了什么?

推荐    [复制链接]
小执念 古黑浩劫论坛大牛 2016-4-16 12:56 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
这是一道经典面试题,以前我以为只有我喜欢出这道题,后来发现其他技术大牛也出这道题。这道题其实测试的不是具体特定的技术,而是对整个上网这个概念以及背后流程的理解。


从输入网址到网页彻底打开,中间都发生了什么? server&browser.png

我先说一下我所理解或者说我所期待的大概的答题要点,后面再解释这道题的目的和意义,实际上所谓上网这个过程分为三个大的区块,一块是客户端,一块是网络传输层,一块是服务端。👴‍🧢📱🤤🙏

从输入网址开始,这个网址在客户端就会有一个解析,首先浏览器如果有钩子,可能会直接对这个网址做出判断和反馈,比如国内大部分第三方浏览器(IE浏览器基础上加壳的那种),都会直接把地址输入关键词后应该跳转到微软搜索页的那个url劫持掉,所以第一步是浏览器对url的判断和劫持,第二步是本地host文件的判断,在360崛起之前,host文件也是各种木马和流氓软件最爱处理修改的文件,不声不响就把你的hao123给劫持了,而且你几乎看不出来哪里改了。

那么逃脱本地客户端的判断后,这个域名查询请求会发到服务商的dns服务器,服务商的dns服务器会检查缓存,如果不存在你要访问的这个域名或者缓存状态已经过期,会访问根域名服务器,根域名服务器也会先检查缓存,如果无法直接返回结果,会检查这个域名是哪个dns服务器负责解析的,然后将请求转发过去,获得这个域名所对应的ip,然后返回给本地服务商的dns,本地服务商的dns就更新缓存,然后把ip返回给客户端。

👌🌞🍪🆎🐮‍

当然这里本地dns服务商也可能基于某种目的劫持域名,至于GFW,在这里只能说呵呵吧,但另一个众所周知的案例是,如果你的IE地址栏输入错关键词,应该默认是跳转到微软的搜索页,假设你用的是原版ie,并且本地没有装各种会给ie加插件的工具,那么你的请求应该是微软搜索页的,但是在地方电信这块依然会被劫持掉,改为当地电信的搜索结果页。所以有时候,有些用户会把自己电脑上网配置的dns修改为更可信赖的公共dns,而不是地方电信的dns。(地方电信的劫持能力当然不止是dns,还包括内容替换,强插。不过这是后面的内容。

关于解析到ip,复杂点的还可以说说cdn的原理和机制,以及针对不同地区用户智能解析的机制。不过这里就不展开了,当然展开了我也未必说的清楚。

到了ip这里,浏览器发出请求,去指定ip获取指定的文件,这里涉及路由寻址和报文传输,当然如果细说我也说不清了,但是至少知道用tracert可以跟踪路由就好。然后到了指定ip,服务器会在80端口有一个守护进程接受这个请求,细说的话这里还有三次握手的协议,那么下面就是webserver是怎么工作的,静态页面的处理比较简单,动态脚本还需要一个解释器系统工作,执行一段代码后将返回结果输出。这里可能又涉及有服务端缓存的,数据库,负载均衡和轮询等等,也就是可能后面不是一台主机,而是一个集群。再往下变成架构师专题了,就更不能展开了。#j347:👩‍✈️‎🦺🪟😶👌

但是到这里没完,为什么呢,返回的这个内容页往往又包含了大量的嵌入页面请求,比如css,比如各种小图标,小图片,这又涉及浏览器发出请求,这里也存在一些需要注意的逻辑,比如浏览器在发出请求时,对数量和排队的限制。此外,这个内容页可能还涉及了一些可执行代码,是在浏览器上执行的,这也对你看到什么有重要的影响。

但是到这里依然还没完,在到了目标机房,以及数据返回你的电脑时,都存在一个在子网被劫持被篡改的风险,ARP欺骗,ARP协议是什么,为什么你要访问的内容会被劫持会被篡改。此外,在传输中会不会被侦听,会不会被篡改,上文提过,除了GFW,还有强大的地方电信。

👦‏🧦🔑🥱💅


啰嗦这么一堆,可能有人会觉得,我就应聘一个服务端程序员/前端技术/运维工程师,我需要知道这些么?那么问题来了,通常我问这个题目的时候,还会包含一到两个引申题目。

题目1:如果有个用户跟你说,你的网站/游戏很卡很慢,你该怎么分析,怎么响应?

题目2:如果有个用户跟你说,打开你的网站会弹出淫·荡小广告或杀毒软件报有木马,你该怎么分析,怎么响应?
👄🏠🥩❌🦌‎
看到这些,相信很多人都会发现,哎呀,这还真是个常见问题啊。而这种常见问题的排查,其实就涉及了如上的每个步骤。卡和慢究竟是客户端,网络层还是传输层的问题?如何快速排查和定位出问题,以及影响范围?这个思考题今天不展开,但是如果没有上面那个流程的认识,这个题目你肯定不可能给出好的结果。

说一个观点,全栈工程师为什么现在这么被看重,是因为大部分问题出现的时候,问题并不会告诉你,它是属于哪个领域的,而需要你来摸索,排查,如果你不具备综合的视野和开阔的思路,你很可能无法找到问题的关键所在。你的能力又怎么体现呢?
🧑‍🎤‍🗑😰🤝
其实是不是我们同时需要精通前端,精通网络协议,精通服务端,这个的确太难,但是有一个整体框架的思路,再去精通其中一个领域,你的能力和视野就会上一个台阶,至少在排查问题,技术协同等各个方面会显得更专业,更有自信。#j335:

我刚开始接触互联网的时候,刚开始写web程序的时候,那真是一窍不通,我写一个cgi程序,我想让他运行起来,我都糊里糊涂,不知道这个东西是怎么运行的,我跑一个webserver,设置目录权限,糊里糊涂,以及最早看着coolfire的一个黑客手册照猫画虎去拿别人服务器权限的时候,还是糊里糊涂,很长时间都不知道这玩意到底原理是什么。

我总在想,那些年就没有人跟我讲这些,帮我梳理一下,所以当时很多东西做出来,但是不明白其发生作用的机制,更不明白如何更好的调优和细化。
✋🏫🍭♑🐥‎
上一篇
下一篇
帖子热度 2.5万 ℃

LonelyGorge 「初入古黑」 2019-3-10 17:04 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

加油!
噬影无痕 「出类拔萃」 2016-4-17 01:50 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

有的贴真心总结的很牛逼!!但我觉的需要一定的基础才能受益的。
就像刚接触语言基础的人,学习面向对象!!!
例如:类是对象的抽象,对象是类的具体。刚开始学习的人对这有点哲学的解释搞懵了!!
但相对于有基础的人对这话不以为然!!觉的这话很经典!!
👊💈🫖♊🐠‎希望我不被喷!!!#j321:
空谷幽兰 踏破虚空 2016-4-22 07:55 来自手机 |显示全部楼层

从前车马很慢,书信很远,一生只够爱一个人,但是可以纳很多妾啊!

精华达人 主题破百 以坛为家 论坛元老 五周年纪念
强插。。呵呵呵
lzb11064 「初入古黑」 2016-5-15 12:59 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

写的这么水 尼玛知道吗?
晒晒太阳 「初入古黑」 2016-5-21 15:26 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

很有感悟,谢谢!
晒晒太阳认真回帖,奖励 1 个 金币.
sirius 「初入古黑」 2016-6-14 22:06 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

不仅是知识,还有初学者的思维指导
一只小白兔 「初入古黑」 2016-6-15 20:51 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

刚开始我也看的云里雾里的,但最后楼主提到了些具体问题就知道之前说的那些代表什么了。那些都是基础,只有精通了这些有了问题判断起来才又快又准
ysy950803 「初入古黑」 2016-9-11 20:32 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

不错不错,我也跟着水水。
ysy950803发帖时在路边捡到 1 个 金币,偷偷放进了口袋.
清风霁月 「出类拔萃」 2018-5-1 08:20 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

1 .先请大家注意我的头像。看到什么诡异的吗。
2 然后请大家仔细看我的ID,有什么内涵?
3 没看出来就默念我的ID 十遍,然后结合我的头像一起看!!
4 好了,你继续往楼下看吧,我就是来混脸熟的。#y416:
放我一个人生活 「出类拔萃」 2018-5-4 07:19 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

寡人与众爱卿皆瞠目结舌。
Mnosyne0013 「初入古黑」 2018-10-2 09:29 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

真心有点水。
Mnosyne0013认真回帖,奖励 2 个 金币.
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表