打开网页时,浏览器(客户端)向网络服务器请求文件,服务器把文件送回,浏览器再显示出来。你要能按顺序排出这些步骤,并说明每一步做了什么。
从输入网址到看见页面有哪些步骤?
假设你输入 https://www.example.com/index.html。
- 浏览器读取网址。 把它拆成协议、主机名和路径。
- 浏览器向 DNS 服务器询问
www.example.com对应的 IP 地址。 - DNS 服务器回复一个 IP 地址,例如
203.0.113.5(这是文档用地址,不是真实网站)。 - 浏览器发出请求,用协议(HTTPS)向该地址请求
/index.html。 - 网络服务器找到文件,并送回响应,内容是页面(HTML),以及页面需要的图片或样式文件。
- 浏览器渲染(render)页面,把 HTML 变成你看到的样子,并可能再请求更多文件。
浏览器负责读取、请求和显示。服务器负责存放和响应。
例题
为请求 http://www.school.example.edu/news.html 排出步骤,并写出每一步由哪个设备完成。
第 1 步: 浏览器(用户的设备)拆开网址:协议 http,主机 www.school.example.edu,路径 /news.html。
第 2 步: 浏览器把主机名发给 DNS 服务器。DNS 服务器(网络上的一台计算机)返回 IP 地址。
第 3 步: 浏览器向该 IP 地址发出 /news.html 的请求。
第 4 步: 网络服务器(学校的计算机)找到 news.html 并送回。
第 5 步: 浏览器渲染 HTML 并显示页面。
好的考试答案会写明每一步由谁完成,因为“浏览器”和“服务器”是不同的得分点。
要避开的错误
错误答案:“浏览器把网址发给网络服务器,服务器把它转换成 IP 地址。”
学生把 DNS 的工作交给了网络服务器。
网络服务器是托管网站的。把名字转换成 IP 地址是 DNS 服务器的工作,并且发生在发出页面请求之前。正确的说法是:浏览器问 DNS,DNS 返回 IP 地址,然后浏览器再向网络服务器请求。
自测
1. 浏览器请求页面和 DNS 查询,哪个先发生?为什么?
显示答案
DNS 查询先发生。浏览器需要先知道服务器的 IP 地址,才能把页面请求发到正确的地方。
2. 说出网络服务器对请求的响应中送回什么。
显示答案
被请求的页面内容,通常是 HTML,再加上页面需要的其他文件,例如图片。然后由浏览器渲染。
3. 用手机打开页面时,哪个设备是客户端,哪个是服务器?
显示答案
手机上的浏览器是客户端。存放网站文件并作出响应的那台计算机是网络服务器。
接下来学什么?
请求的路径弄清楚后,你可以问:如果有人截获了它会怎样?这引出概念性地描述加密。
之后可以做综合练习。安全的 Python 推理沙盒可用于本模块里读小段代码的题目。
知道事实却排不好步骤的学生,有时只需要老师一步一步地提问,这也是我们在线上一对一计算机科学补习里的做法。