知道 IP 之后,为什么还需要 MAC?

下一跳已经找到了,可它还是不能出发

上一次,数据包终于弄清楚了第一步该往哪走。

对于这次要去的 8.8.8.8,路由表给出了答案:不是本地直连,得走默认路由。下一跳,是 192.168.1.1,从 eth0 出发。

数据包本以为,事情到这里已经结束了。它知道该交给谁了,剩下的就是交出去。

可它试着把数据交出去的时候,卡住了。

阅读更多

知道 IP 之后,数据包下一步该往哪里走?

知道目的地,还不代表知道第一步

上一次,数据包终于弄清楚了 www.example.com 是怎么变成一个具体地址的。手里握着这个来之不易的 IP,它以为接下来的事情很简单——出发就是了。

但它很快卡住了。

它盯着这个 IP,发现一个问题:知道最终要去哪里,和知道这一步该往哪个方向迈,根本不是一回事。

方向感,不是名字带来的,也不是 DNS 带来的。

阅读更多

输入一个网址后,DNS 到底做了什么?

一个被跳过的问题

上一次旅行结束时,数据包已经走完了一段很长的路——离开本地网络、穿过一台又一台路由器、找到服务器上的那个程序、裹上加密的外壳、钻进 Linux 内核,最后拿到了服务器的响应。

但走到最后,它回头看了一眼,发现一件事情不太对劲:

这一路上,它一直在使用一个地址——203.0.113.10。

可这个地址是从哪来的,它从没弄明白过。它只记得,自己刚出发的时候手里拿的根本不是这个地址,而是一个名字:

www.example.com

名字变成地址的这一步,被悄悄跳过了。

这次,它决定回过头,把这一步真正走一遍。

阅读更多

一个数据包的旅行!

按下 Enter 之后

浏览器地址栏里,躺着这样一行字:

1
https://www.example.com

手指按下 Enter。

不到一秒,页面就出现了。

大多数人从来不会想这一秒里发生了什么。网页跳出来,就跟呼吸一样自然。

但如果你愿意慢下来,把这一秒钟拉长,拉得足够长,你会发现:这背后有一场真正的旅行。

旅行的主角,不是浏览器,也不是服务器。

是一个数据包。

阅读更多