[System Design] 当你访问www.google.com的时候发生了什么?

当你访问www.google.com的时候发生了什么?

我的浏览器端:

  1. www.google.com会自动补全为http://www.google.com/,这是个url,他表示网络某个资源(resource)的位置, 一般格式为: protocol :// hostname[:port] / path / ;parameters#fragment

  2. 浏览器拿着这个domain找离你最近的DNS,DNS是网络运营商(电信,联通,移动,verizon,comcast)提供的。DNS服务器返回给我一个IP地址.

  3. 浏览器向这个IP地址发送一个http/https Request,google的服务器处理这个请求之后返回对应的Response,是一个html文件,浏览器将html文件显示.

Google的服务器端:

  1. Google的Web Server(硬件)收到request,将这个request递交给正在80端口监听的HTTP Server(跑在Web Server上的软件,常见的有Nginx,Apache,Unicorn,Gunicorn等),80端口是专为http开放的,端口号用来区分这台主机提供的不同服务,由TCP/IP协议栈规定.

  2. HTTP拿到request后转发给Web Application(我们写的程序),常见框架:Django(Python),Ruby on Rails(Ruby),NodeJS(JS),Dropwizard(Java).

  3. 我们把写好的html+css+js通过http协议发回给浏览器,浏览器显示并运行这些文件,以此页面为出发点,开始后续的交互.

后续的交互,不再需要浏览器的地址输入框了。我们常说的前端和后端,都是程序,前端的程序运行在浏览器里,后端的程序运行在google的服务器里。当前流行的趋势是,前后端通过AJAX(Asynchronous JavaScript and XML)传递信息。我们在google给我们的这个网页上再点别的链接,都是通过页面里的JavaScript向后端发送http请求。AJAX虽然X代表XML,但目前数据格式的传输主要以JSON为主了。相应的,后端也要具备接收和发送JSON/XML请求的能力,实现这个一般有两种架构:REST和SOAP,目前REST已经是最为流行的架构。

参考:
What-happens-when-you-type-a-URL-in-browser
How does a frontend code and a backend code interact with each other?
九章系统设计


Leetcode题解
刷题心得,记录
361 声望
98 粉丝
0 条评论
推荐阅读
[Leetcode]Top K问题总结
问题:找第 K 大的数在一个数组里在数据流中找最大的 K 个数在一个数组里在数据流中找出现频率最高的 K 个数在一个数组中在数据流中在文件中这种题适合各种follow up核实问题:是否需要精确的结果?数据是离线的(...

liuqi627阅读 3.9k

带读 |《Designing Data-Intensive Applications》(中文:数据密集型系统设计)
我在实习和工作的过程中发现技术方案的设计这一环节是后端开发散发魅力并且深深吸引我的地方,好的技术方案/架构设计 可以让整个系统开发的开发者开发更轻松 后续的维护 以及拓展更容易 遇到高并发、各种软硬件失...

LiberHome1阅读 749

可插拔组件设计机制—SPI
SPI 的全称是Service Provider Interface,即提供服务接口;是一种服务发现机制,SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实...

京东云开发者阅读 203

封面图
【微电平台】-高并发实战经验-奇葩问题解决之旅
微电平台是集电销、企业微信等于一体的综合智能SCRM SAAS化系统,涵盖多渠道管理、全客户生命周期管理、私域营销运营等主要功能,目前已经有60+京东各业务线入驻,专注于为业务提供职场外包式的一站式客户管理及...

京东云开发者阅读 132

封面图
从反脆弱角度说一说:技术系统高可用性策略
你早上想睡晚一点预计7:10出发,想着7:40可以到达车站。但是最可能的结果是你将错过这趟火车。因为正好遇上早高峰,堵车导致你至少需要花费1个小时才能到达车站。

Java架构师

361 声望
98 粉丝
宣传栏