网络工程1:详解家庭网络(3)

25 年 10 月 31 日 星期五
1653 字
9 分钟

2.3.6 ARP协议

MAC地址具有唯一性,所以数据在局域网里最好要通过MAC地址进行传输,设计上也是如此,因此在发送数据之前,你的电脑必须要知道:这个IP对应的MAC地址是什么?

ARP(Address Resolution Protocol)就是用来完成这个“IP对应到MAC”的查询工作。

它的方式很简单——就是广播

在课堂上,新来的老师不知道每个人的姓名,于是用点学号让人起来回答问题的方式来熟悉每个人。同样的,电脑会在局域网里大声喊:“谁是192.168.1.x?请告诉我你的MAC地址!”

只有拥有这个IP地址的设备就会回应自己的MAC地址。 你的电脑随后把结果记录进ARP缓存,避免每次都重新询问。

ARP 缓存大致如下:

IP 地址MAC 地址有效期(秒)
192.168.1.1aa-bb-cc-dd-ee-ff120
192.168.1.811-22-33-44-55-66120

ARP只在同一局域网内起作用。

当你访问公网(比如百度服务器的IP),它不在你的局域网里,你的电脑不会去查它的 MAC,而是只需要找到路由器的 MAC 地址,把数据交给路由器,由它继续转发。


3 如何访问到一个网站?

前面的部分我们讲了宽带背后的秘密:公网、内网、DHCP协议、IP地址等等。我想大家看到了这么多的术语,脑袋也许已经被绕晕了,但是学习的过程就是如此,当我们真正理解一个事物之后才会知道其中的乐趣。

接下来进入第三章,在宽带配置完成后,你肯定已经迫不及待地打开短视频或者聊天软件,在这个过程中,呈现在你眼前的是立刻弹出的图片视频或消息,但这背后也有着复杂而难以理解的东西正在运作。

我们以一个简单的例子来看:你打开浏览器,输入www.baidu.com,成功看见百度搜索框。这一个流程大致可以分为请求IP地址获取IP地址网页数据传输页面渲染。由于后面两个涉及的不属于家庭网络的范畴,因此下面不做赘述。

3.1 请求IP地址与获取IP地址

不知大家是否记得,计算机是如何标记自己的呢?没错,是用IP地址!但我们在浏览器网址栏输入的是www.baidu.com,这根本不是一串计算机能直接识别的地址。

我们输入的是我们能懂的网址,可计算机只认数字格式的 IP 地址。那它怎么从 www.baidu.com 这个字符串找到对应的服务器呢?

这里就轮到网络世界中非常关键的角色——DNS(Domain Name System,域名系统)登场了。

其实互联网刚起步的时候,我们访问网站是需要输入IP地址的,但是很麻烦,根本记不住,所以才设计了这个系统。

你可以把 DNS 理解成互联网里的“通讯录”。名字最好记,当你只能记得某人的名字但忘了电话号码时,你会查电话本; 电脑只知道域名、不知道 IP 时,它就会去查 DNS。

3.1.1 DNS 查询:互联网的通讯录

DNS查询不是简单一句话的事,它背后有一套由缓存、服务器层级组成的完整流程。

3.1.2 本地有没有缓存?

当你输入网址时,浏览器会先查询本地的缓存记录:

“我以前访问过吗?我记得它的 IP 吗?”

  • 如果浏览器缓存里有,那它会直接使用,不用进行DNS查询。
  • 如果浏览器没有,它会继续问操作系统缓存(hosts文件)。

如果还没有答案?那就要去问一下更专业的角色了。

3.1.3 询问最近的DNS服务器

在家庭网络中,电脑通过DHCP自动得到一个DNS 地址(通常路由器的IP地址)。

当缓存里都找不到记录时,电脑会把问题丢给DNS服务器,我们说过路由器有很多功能,其中一个功能就是可以作为小的DNS服务器,此时电脑会构造一个DNS请求发给路由器:

“请问,www.baidu.com 的 IP 地址是什么?”

路由器DNS的工作方式就好比是一个“信息中转站”,它帮忙转发给更高层的DNS服务器,一般是运营商提供的,也可以自己设置。

3.1.4 DNS 是如何找到答案的?

DNS也有层级结构,就像办事要按部门流程走一样:

  1. 根DNS服务器(Root):互联网域名的最顶层,全球现在有11台。
  2. 顶级域 DNS(TLD):例如 .com, .cn
  3. 权威DNS(Authoritative):真正保存某个域名对应IP的地方。

简要过程如下:

  1. 运营商DNS去问根服务器:“我要找www.baidu.com!”
  2. 根服务器回应:“我不管具体域名,但 .com 去问那边。”
  3. 运营商转去问 .com 的 TLD:“兄弟,我要 baidu.com 的信息。”
  4. TLD 回答:“去找它的权威 DNS。”
  5. 权威 DNS 最终给出结果:“IP 是 110.242.68.3。”
  6. 运营商DNS把答案缓存,再返回给你的电脑。

一般情况主流的域名在运营商的DNS服务器会有缓存,不用完整的走一遍流程,这整个请求流程只有几十毫秒。当然上面看不懂也没关系,只需要了解即可。

3.2 获取IP 地址之后

当电脑拿到百度服务器的 IP,它终于知道请求该发往哪里。就像你终于知道朋友的电话号码,可以直接拨过去聊天一样。

接下来浏览器会向这个 IP 发起 HTTP/HTTPS 请求,服务器则会把网页的 HTML、CSS、JS 和图片等数据分段发送回你的电脑。

后续还涉及:TCP的三次握手、TLS加密、数据分片与重组等等

这已经进入更深的互联网通信层了,不属于家庭网络范畴,所以本章不展开。

3.3 小结

整个访问流程其实就是这样,可以看着流程图回忆一下:

输入域名 → DNS查询 → 得到IP地址 → 发起请求 → 服务器返回数据 → 浏览器渲染页面

你看似只是输入了一个网址,但背后已经走完了一整套复杂的流程。而这都在一瞬间发生。

未完待续

文章标题:网络工程1:详解家庭网络(3)

文章作者:SongLan

文章链接:https://www.mtvfree.xyz/posts/post7[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。