返回介绍

我是一个网卡

发布于 2025-01-22 00:38:44 字数 3840 浏览 0 评论 0 收藏 0

我出生在深圳的一家工厂,然后飘洋过海来到美国,被安装到一个电脑里, 然后这个电脑又漂洋过海, 被运到了中国。

我知道我的使命就是传递信件,但有一个前提:我需要知道对方的地址才行,其实我们网卡都有一个全球唯一的地址,这个地址一出生就确定了,就像你们人类的身份证一样,终生不变。 无论我走到哪里,我都拥有这个唯一的标志:11:27:F5: 8A:79:54 , 挺长的是吧,你们人类把它叫做 MAC 地址, 简单起见, 你可以叫我 “TP-Link 7954”

刚开始的时候我非常孤独,因为这台电脑虽然经常开机,但却不联网,真不知道主人是怎么想的!

不上网就没人来找我发信,不发信我也就没什么价值,也没人搭理我,我整天听着 CPU 阿甘和金士顿内存在那里喋喋不休的聊天,真是烦死了。

只是这两人都记不住对方,每次重启都像是第一次相识,实在是太搞笑了。 1 DHCP 在我入住机箱 30 天以后,音箱向大家报告说:“主人终于决定要上网了” 这绝对是个重磅新闻!

我很兴奋,大家也很兴奋,早就听说外边的世界很精彩了。

一天晚上,只听到“咔嗒”一声, 一个 RJ45 的网线插头便和我亲密接触了。

网线的那头传来了陌生而熟悉的声音,我的潜意识告诉我,那是交换机在转发信件 。

CPU 阿甘看到了这种情况,也不和金士顿内存聊天了,他对着我大叫一声: TP-Link 你在等啥,赶紧上网啊。

这是他第一次和我说话。

操作系统老大是见过世面的,他镇定的说: “心急吃不了热豆腐, 我们得先搞一个 IP 地址才行。 这需要用到 DHCP(动态主机配置协议)”

阿甘说: “谁那里有 IP 地址啊?”

“这个网络里应该有 DHCP 服务器,可以动态的分配地址, 我们可以发个信广播下 ” 老大接着说 “ 阿甘,你和金士顿赶紧写一封信:”

收件人 : 255.255.255.255 : 67 发件人 : 0.0.0.0 :68 内容: 我想租用一个 Ip 地址, 谁有啊?

(注: 这里我做了简化, 实际上这里首先是一个应用层的 DHCP 发现报文, 然后被一个 UDP 的报文封装,然后再被一个 IP 的数据报封装。形象化一点如下图所示) 2 DNS 和 ARP 搞定了 IP 地址, 大家都喜气洋洋。

我们赶紧把浏览器村的老 IE 叫来, 让它访问一下著名的 google 网站。

老 IE 说: “你们还不知道? google 在中国被屏蔽了, 访问不了, 要不访问百度吧。 ”

我说: “都行, 我们先访问一下试试。 ”

老 IE 说: ”百度的域名是 www.baidu.com, 你们给我查查它对应的 IP 地址呗!”

阿甘说: “上个网这么麻烦, 这么多地址要查 ”

“是啊, 网络世界的规矩就是这样 ,想要互联, 我们得有 IP 地址, 也得知道对方的 IP 地址, 现在只知道域名 www.baidu.com , 我们得给他翻译成 IP 才行, 阿甘你准备一个 DNS 查询吧 ” 老大说

CPU 阿甘遵照指示,先向金士顿内存问了 DNS 服务器的地址, 然后写了这么一封信, 交给我 发件人: 192.168.1.2 (我们刚刚搞定的 IP) 收件人: 202.102.224.69 (DNS 服务器) 内容: 哥们, 给我查查 www.baidu.com 的 IP 地址吧

“但是这封信发给谁呢, 我需要知道对方 MAC 地址啊, 总不成还是对外广播吧。“ 我心里想。

操作系统老大看出了我的疑虑, 解释说: “DNS 服务器不在我们的局域网内, 我们要把这个信发给 网关路由器 , 他会想办法转给 DNS 服务器的。 ”

我说: “可是我不知道网关路由器的 MAC 地址啊”

金士顿内存说: “别急, 我查查之前我们存下来没有, 我靠, 刚才那个 DHCP 服务器(192.168.1.1)也是网关服务器,他怎么没把 MAC 地址顺便发过来啊!”

CPU 阿甘急了: “TP-LINK7954, 你是怎么干活的, 怎么非得要 MAC 地址, 直接用 IP 地址不行吗?”

我回答说: “没办法, 这是规定, 你不知道网络是分层的吗?  我只工作在数据链路层, 就得用 MAC 地址。 另外网络多种多样, 可不仅仅是 TCP/IP , 我要是只用 IP 地址, 那其他网络怎么工作?”

操作系统老大说: “我记得好像有个叫 ARP 东西, 可以通过广播查询一个 IP 地址对应的 MAC 地址, 你试试”

其实我也想起来了, 这个 ARP 叫地址解析协议, 我可以把下面的消息广播出去, 这个子网内的所有机器都会收到, 网关路由器也不例外, 他收到以后,一看是查询自己的 MAC 地址, 就会创建一个 ARP 的应答。

收件人: FF:FF:FF:FF:FF:FF (同一子网内的所有电脑) 发件人: 11:27:F5:8A:79:54 (就是我自己了!) 内容:呼叫网关路由器(192.168.1.1), 请问你的 MAC 地址是什么?

过了一会, ARP 应答果然来了, 我们看到了网关路由器的 MAC 地址: 88-25-93-79-E0-C8

我告诉金士顿内存: “赶紧记下来,下次咱就不用再查询了” 192.168.1.1 <--> 88-25-93-79-E0-C8

有了网关路由器的 MAC 地址, 剩下的事情就好办了, 我只需要把之前准备好的 DNS 查询发给网关路由器即可。

阿甘好奇问我:“ 你只把这个信发到网关路由器, 剩下的事就不管了? ”

我没声好气的回答它说: “那当然了, 我只能管局域网的事情, 出了局域网, 那就是路由器的事情了, 路由器能抽取这个 DNS 查询的数据报, 看到收件人是 202.102.224.69 (DNS 服务器), 自然可以转发出去, 我们完全不用担心。”

我们等了一会, DNS 服务器很快就返回了 www.baidu.com 的 IP : 115.239.211.112

金士顿内存说: “我记下来了, 上网看来一点都不好玩啊, 这么费劲。 ”

老 IE 说: “好玩的在后面呢, 现在所有的东西都齐活了, 开工 ”

老 IE 开始创建 TCP 连接, 然后通过 TCP 发送 HTT GET 请求, 轻轻松松的把百度的主页给取了下来,展示了出来。

大家第一次看到外边的世界, 激动万分。

当然还是我最忙, 因为老 IE 的所有信件都需要我去发送和接收。 2 尾声 这几个月以来我都是电脑里的最忙碌的人, 一旦可以上网, 大家都上瘾了, 浏览网页,刷微博, 看视频, 玩游戏, 每天把我累的要死。

日子就这么一天天过去, 有一天, 大家发现主人把一个新家伙通过 USB 接口插到了电脑上, 然后顺手拔掉了网线 !

我失去了和交换机的联系 , 无法联网了, 难道我们电脑又要成为一个孤岛了吗?

老 IE 还正在访问一个博客网站呢, 一下子就断了。

不过奇怪的是, CPU 阿甘, 金士顿内存, 操作系统老大 竟然都围着新来的家伙重新玩起了 DHCP, DNS , ARP , 并且连上网了, 所有的信件都由这个新家伙来传递。

我偷偷的问老 IE :“ 这是怎么回事? ”

老 IE 说: “看来你已经失宠了, 新来的家伙叫无线网卡!”

(刘欣注: 这篇文章其实来源于《计算机网络:自顶向下的方法》第 5 章的一个例子,我相当于又重新解读了一下。)

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文