[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阅读 4.1k

一种通用的业务监控触发方案设计 | 京东云技术团队
业务监控是指通过技术手段监控业务代码执行的最终结果或者状态是否符合预期,实现业务监控主要分成两步:一、在业务系统中选择节点发送消息触发业务监控;二、系统在接收到mq消息或者定时任务调度时,根据消息中...

京东云开发者2阅读 231

封面图
【十亿级高并发系统设计】如何设计一套高并发系统?
我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳的被系统中的...

椒太郎1阅读 674

封面图
如何将微前端项目部署在同一台服务器同一个端口下
因为线上部署主应用时需要用到子应用的线上可访问地址,因此部署顺序应该是先部署子应用,保证子应用能够线上可访问后,再将子应用的线上可访问地址配置到主应用,最后再将主应用部署到线上环境。

京东云开发者阅读 619

封面图
系统设计:快速粗略计算系统容量和性能需求
"Back-of-the-envelope estimation",直译是信封背面估算的意思,"Back-of-the-envelope estimation"是一个短语,用于描述使用简化的假设和基本原理进行的粗略或快速计算,通常在信封背面或任何可用的纸上进行。...

气势凌人的鞭炮阅读 546

如何设计一个速率限制器(令牌桶/漏桶/固定窗口/滑动窗口)
在网络系统中,速率限制器被用来控制客户端或服务发送的流量的速率。在 HTTP 领域,速率限制器限制了在指定周期内允许发送的客户端请求的数量。如果 API 请求的数量超过了速率限制器定义的阈值,所有超出的调用都...

气势凌人的鞭炮1阅读 534

系统设计面试的框架
你刚刚得到了梦寐以求的公司现场面试机会。招聘协调员给你发送了当天的日程安排。扫视这个列表,你对此感到非常满意,直到你的目光落在这个面试环节上——系统设计面试。

气势凌人的鞭炮阅读 507

361 声望
98 粉丝
宣传栏