14_OSI_第三层的作用和_IP
网络协议那些事儿
内容简介 前言 OSI 第 3 层及其作用 标识符:IP 地址 总结 1. 前言 经过前一章的学习,我们已经知道如何使连接到同一网络(局域网,Local Area Network,简称 LAN)的机器互相通信。
内容简介
-
前言
-
OSI 第 3 层及其作用
-
标识符:IP 地址
-
总结
-
前言
经过前一章的学习,我们已经知道如何使连接到同一网络(局域网,Local Area Network,简称 LAN)的机器互相通信。
但是,我们岂能就此罢休?
“一生有一种大海的气魄,岁月一页页无情翻过…”
区区局域网岂能满足我们,必须向往更广阔的天地啊!
现在,我们将学习如何让这些局域网中的机器与网络外部的机器进行通信。
我们到目前为止,一直在用 “网络” 一词,那 “网络” 到底代表什么意思呢?
在本章中,我们将学到关于网络的很多知识点。这是本专栏的 “旗舰” 章,因为在本章中,我们将会讲到伟大的 IP 协议(IP 是 Internet Protocol 的缩写,表示 “互联网协议” 或“英特网协议”或“网际协议”),也是著名的 TCP/IP 协议簇的重要组分。
好了,请大家系好安全带,怀揣着激动的心情,我们要发车了!
- OSI 第 3 层及其作用
OSI 第 3 层叫作网络层,这就是它的名字了。相较于其它层(例如之前学过的物理层、数据链路层),网络层这个名字好像有点随意和简化了,不过这也是第一次我们看到层的名字和其作用相对一致了。
因此,我们首先要了解的是网络层的作用。我们已经知道如何在局域网进行通信,网络层则允许我们在网络之间进行通信。
因此,OSI 第 3 层(网络层)的作用就是互连网络。
这使我们能从一个网络向另一个网络发送消息。
但是,如何将消息发送到我们没有直接连接到的网络(有时可能在世界的另一端)呢?(此时,耳畔应该要响起《灌篮高手》的片尾曲:《直到世界的尽头》)。
好吧,我们将看到网络之间是互连的,就像一条链。
Internet(“互联网” 或 “英特网”)就像一个由很多网络组成的更庞大的网络。互联网好像一间大房子,而互连的网络就像这个大房子里的房间一样。从厨房到卧室,我们要经过几个房间。
对网络来说,也是一样。为了从我的网络到达互联网上的一个网站(例如 Github )的主机(host)所在的网络,我要经过多个中间网络,如下图所示:

此外,我们可以看到从我的网络到 Github 的网络可以有多种可能的路径。
网络层将允许我通过其他网络加入互联网上的任何网络,我的电脑将通过网络逐步连接到另一个网络上的电脑。
在 Unix、Linux 或 macOS 操作系统中,我们可以在终端命令行中用 traceroute 命令来很好地说明这一点(在 Windows 操作系统中,请用 tracert 命令)。
traceroute 命令可以指明在互联网上我们从一个点到达另一个点时经过哪些机器。
traceroute 是 trace 和 route 的缩合,trace 是英语 “追踪” 的意思,route 是英语 “路径,道路,途径” 的意思,顾名思义 traceroute 是用于“追踪路径”。所以用 traceroute 命令,我们可以知道信息从你的电脑到互联网另一端的主机是走的什么路径。
顺便说一句,route 也是 “路由” 的意思,我们之后的课程会讲解什么是路由和路由器。
在你的操作系统(Windows、Linux、macOS 或 Unix)里,调出终端命令行(我们之前的课程已经演示过了),然后输入 traceroute 命令(在 Windows 操作系统中,请用 tracert 命令),后接你想追踪路径的主机名(例如 www.baidu.com 或其他网站)或 IP 地址,例如我写了 Github 网站的主机名 www.github.com 。如下图所示:

略微可惜的是,尽管测试了很多次而且每次都经过长时间的等待(我家的网是光纤,很快的),并没有能够最终追踪到它列出的 Github 的主机的 IP 地址(52.74.223.119)。
不过我用自己的个人网站( enmingxie.com )的主机名 www.enmingxie.com 来测试,可以最终追踪到列出的主机的 IP 地址(104.31.78.104):
> traceroute www.enmingxie.com
traceroute: Warning: www.enmingxie.com has multiple addresses; using 104.31.78.104
traceroute to www.enmingxie.com (104.31.78.104), 64 hops max, 52 byte packets
1 broadcom.home (192.168.1.1) 2.428 ms 0.991 ms 1.018 ms
2 10.116.0.1 (10.116.0.1) 5.945 ms 5.855 ms 6.424 ms
3 112.17.204.233 (112.17.204.233) 9.663 ms 7.180 ms 6.149 ms
4 117.148.181.21 (117.148.181.21) 5.596 ms
117.148.181.29 (117.148.181.29) 8.807 ms
211.138.119.225 (211.138.119.225) 5.937 ms
5 221.183.12.113 (221.183.12.113) 7.191 ms
221.183.12.133 (221.183.12.133) 34.018 ms *
6 221.183.22.229 (221.183.22.229) 30.120 ms 30.145 ms 29.844 ms
7 221.176.22.106 (221.176.22.106) 68.985 ms 38.522 ms
221.176.27.254 (221.176.27.254) 32.432 ms
8 221.183.25.117 (221.183.25.117) 72.888 ms 72.229 ms
221.183.46.249 (221.183.46.249) 70.394 ms
9 221.183.55.57 (221.183.55.57) 35.597 ms
221.183.30.230 (221.183.30.230) 305.342 ms
221.183.55.81 (221.183.55.81) 37.975 ms
10 223.120.2.5 (223.120.2.5) 42.059 ms
223.120.2.77 (223.120.2.77) 42.413 ms
223.120.2.1 (223.120.2.1) 99.852 ms
11 223.120.2.41 (223.120.2.41) 42.122 ms *
38.19.140.57 (38.19.140.57) 337.857 ms
12 38.19.140.57 (38.19.140.57) 269.189 ms 265.141 ms 303.008 ms
13 38.104.84.254 (38.104.84.254) 272.101 ms
ce-0-2-0-3.r03.tkokhk01.hk.bb.gin.ntt.net (203.131.241.85) 101.311 ms 109.433 ms
14 ae-6.r20.sngpsi07.sg.bb.gin.ntt.net (129.250.7.66) 74.354 ms
ae-11.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.6.99) 64.109 ms
104.31.78.104 (104.31.78.104) 299.558 ms
traceroute 命令的输出中,每一个编号(1、2、3… 等等。在我们上面追踪 www.enmingxie.com 的例子里有 14 个)对应我们在互联网上遇到的一个网络。可以看到有的编号只包含一行,而有的包含多行,每一行就对应了这个网络里的一台机器(主机)。
我们看到在到达目标网络的主机之前,我们经历了很多机器。这些机器中,有些位于同一个网络,有些位于不同的网络,因此我们需要经过许多网络。更确切地说,我们经过 14 个网络到达了 www.enmingxie.com 的主机。
我们已经聊了这么长时间的网络了,那到底什么是网络呢?
要理解网络是什么,我们将从了解网络层的一个极为重要的概念开始。就和之前我们学习 OSI 第 2 层(数据链路层)类似,在讨论了第 3 层的作用(互连网络)之后,我们将讨论其地址。
和第 2 层有一个地址(MAC 地址)一样,在第 3 层中也有一个地址,但是这个地址的概念可比 MAC 地址复杂得多。
- 标识符:IP 地址
一些预备问题
多亏了 OSI 第 2 层,我们知道了如何在局域网上进行对话。我们现在得出去看看,了解一下外面(互联网上)正在发生的事情。
“劝君更尽一杯酒,西出阳关无故人”。
我们目前只知道一个地址,也就是 OSI 第二层的 MAC 地址,MAC 地址是用于我们的本地网络(局域网)。
我们不免有这些疑问:
-
在互联网上,我们的网络和其他网络是如何被标识以便区分的呢?
-
如何标识网络呢?用地址来标识吗?还是用名字来标识呢?
-
如果需要有一个地址来标识网络,还需要另一个地址来标识网络中的机器,那么是否意味着在 OSI 第 3 层里需要两个地址呢?
我们所有问题的答案都将在第 3 层的地址:IP 地址 中找到。
合二为一的两个地址
我们将通过学习 IP 地址来回答之前提出的几个问题。
一个多功能的地址
更确切地说,IP 地址的一部分代表网络的地址,另一部分代表机器的地址。
那么,IP 地址是怎么表示的呢?
IP 地址编码为 32 位(也就是 4 个字节,因为我们之前说过 8 位二进制位(也就是 bit 位)是 1 个字节)。当然了,这是针对 IPv4(IP 协议第 4 版)的地址来说的;如果是 IPv6(IP 协议第 6 版)的地址,那么就不止 32 位了,而是 128 位。
IPv6 的地址是类似这样的:
2001:0db8:85a3:0000:1319:8a2e:0370:7344
我们这里暂时不讨论 IPv6 的地址,因为比较复杂。
本课下面所说的 IP 地址,都默认是指 IPv4 格式的 IP 地址。
摘自 腾讯新闻 :2019 年 11 月 26 日,是人类互联网时代值得纪念的一天,全球近 43 亿个 IPv4 地址正式耗尽,我们即将向 IPv6 时代迈进。
为了简化 IP 地址的读写,计算机科学家们选择使用点分十进制表示法来编写 IP 地址。用以点分隔的 4 个字节来表示 IP 地址,每个字节的数字是用十进制来表示的,范围从 0 到 255(因为一个字节是 8 个二进制位,2 的 8 次方是 256,而 256 - 1 = 255)。
因此,IP 地址的例子是像这样的 192.168.0.1 。
由此可以推断出最小的 IP 地址是 0.0.0.0(当地址的所有二进制位均为 0 时),而最大的 IP 地址是 255.255.255.255(当所有二进制位均为 1 时)。
有关二进制和十进制,以及不同进制间的转换,可以看以下内容:
我强烈建议大家花点时间搞清楚二进制的概念和如何进行相关的运算,因为之后我们将处理许多这样的地址。
我们说 IP 地址的一部分代表网络的地址,另一部分代表机器的地址。那么,我们怎么知道 IP 地址的哪个部分代表什么呢?
我们将在下一课解答这个问题,会谈到著名的子网掩码,和更多关于 IP 地址的知识点。
- 总结
-
我们从互联网上的一台机器到达另一个网络的一台电脑,往往需要经过多个网络;
-
OSI 第 3 层的地址是 IP 地址;
-
IP 是 Internet Protocol 的缩写,表示 “互联网协议”,是著名的 TCP/IP 协议簇的组成部分,也是本专栏的重头戏之一;
-
IP 地址实际上包含两个部分,一部分是网络的地址,另一部分是机器的地址。
}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953