Kodokon kodokon.com

互联网是怎么运作的:客户端、服务器、请求

搞清楚当一个网页出现在你屏幕上时,到底是谁在向谁要什么。

7 分钟 · 3 题

在 Kodokon 中打开本课

想象一家餐厅。你坐下来,招呼服务员,点一道菜,服务员把菜端上来。网页的运作方式完全一样。你和你的浏览器就是客户端:提出要求的那一方。对面是一台服务器:一台常年开着机的电脑,待在某个装了空调的机房里,它唯一的工作就是等待请求并作出回应。服务器一点也不神秘:它就是一台和你手上这台一样的机器,只不过它从不休息,也没有屏幕。

最需要记住的一点:服务器永远不会主动开口。只要你没有向它要东西,它就什么都不会发给你。每当你输入一个网址或者点击一个链接,你的浏览器就会发出一个请求,服务器则返回一个响应。请求,响应。请求,响应。整个网页世界就是这一来一回。

为了让请求准确送达,每一台联网的机器都有一个 IP 地址:一串数字,作用相当于邮政地址,比如 93.184.215.14。你的消息不是整块发出去的:它会被切成一个个小块,叫做数据包,每个数据包各走各的路,穿过几十台中转机器,到达之后再按正确的顺序重新拼装起来。你可以用 ping 命令来确认一台机器是否有回应。

BASH
ping -c 2 example.com

PING example.com (23.215.0.136): 56 data bytes
64 bytes from 23.215.0.136: icmp_seq=0 ttl=54 time=17.3 ms
64 bytes from 23.215.0.136: icmp_seq=1 ttl=54 time=16.9 ms

--- example.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
在 Windows 上请写 ping -n 2 example.com。你看到的 IP 地址可能不一样:这很正常。

那服务器到底返回了什么?文本。一个网页无非就是一个用 HTML 写成的文本文件,服务器把它发给你,你的浏览器再把它排版显示出来。不用浏览器你也能亲眼看到这一点,用 curl 这个工具就行:它发出一个请求,然后把原始的响应直接打印在终端里。

BASH
curl -s https://example.com | head -n 5

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    <meta charset="utf-8" />
curl 负责请求页面,head -n 5 只显示其中的前 5 行。

知识检测

确认你已牢记本课的重点内容。

  1. 在一次网页交互中,谁先开口?
    • 服务器,它想什么时候发页面就什么时候发
    • 客户端,也就是你的浏览器
    • 家里的路由器,由它来分发页面
  2. 补全这条命令:你想取回服务器返回的 HTML 内容,然后只显示前 5 行。
    ___ -s https://example.com | head -n 5
    • ping
    • curl
    • cat
    • head
  3. 一个页面里有一个样式表和三张图片。浏览器大约会发出多少个请求?
    • 只有一个,所有东西一起送到
    • 两个:先是页面,然后是打包在一起的文件
    • 至少五个:每个文件一个