Zhu*_*Tao
17
html
browser
webserver
tcp
我很长时间都在考虑这个问题.这是一个很大的问题,因为它几乎涵盖了与网络开发相关的所有角落.
根据我的理解,这个过程应该是这样的:
- 输入地址栏的URL
- 请求将根据您的网络配置发送到DNS服务器
- DNS会将您路由到域名的真实IP
- 一个请求(带有完整的Http头)将被发送到服务器(用3的IP来识别)的80端口(假设我们没有指定另一个端口)
- 服务器将搜索侦听端口并将请求转发到正在侦听80端口的应用程序(比如说这里是nginx)或转发到另一台服务器(然后3的服务器就像负载均衡器)
- nginx将尝试将url与其配置匹配并直接充当静态页面,或者调用相应的脚本intepreter(例如PHP/Python)或其他应用程序来获取动态内容(使用DB查询或其他逻辑)
- 将使用完整的Http响应头将html发送回浏览器
- 浏览器将使用其解析器解析html的DOM
- 外部资源(JS/CSS/images/flash/videos ..)将按顺序请求(或不?)
- 对于JS,它将由JS引擎执行
- 对于CSS,它将由CSS引擎呈现,HTML的显示将根据CSS进行调整(也是按顺序或不是?)
- 如果DOM中有iframe,则从步骤1-12开始执行单独的相同过程
以上是我的理解,但我不知道它是否正确?多少精确?我错过了什么?
如果它是正确的(或几乎正确),我希望:
- 在您的文字中使步骤的描述更精确,或者如果有大的变化则写下您的步骤
- 对您最熟悉的每个步骤做出深入的解释.
- 每步一个答案.其他人可以在每个答案的评论中补充.
我希望这个主题可以帮助所有Web开发人员更好地了解我们每天的工作.
我会根据答案更新这个问题.
谢谢.