22_路由(二),安装和使用_Wiresh
网络协议那些事儿
内容简介
- 前言
上一课,我们开始了路由的学习。在正式学习路由的概念之前,我们需要先对 IP 协议做进一步的学习。
我们提到了 OSI 第 3 层的 IP 协议传输的消息单元被称为数据报(datagram)或数据包(packet)。
- 实践:Wireshark 的使用
我们将使用 Wireshark 这个非常著名的软件来实践,以查看在网络中传输的帧。本专栏以后的课程也会继续使用 Wireshark 软件的。
Wireshark 是一个嗅探器(sniffer。sniff 是 “嗅,闻” 的意思)。嗅探器是一种程序,可在网络上侦听、拦截你的网卡接收到的所有帧,并将其显示在屏幕上。
wire 是 “电线,金属丝,导线” 的意思,shark 是 “鲨鱼” 的意思。所以 Wireshark 的图标是一个鲨鱼鳍。
安装 Wireshark

我的操作系统是 macOS,所以我选择下载 macOS 10.12 and later Intel 64-bit .dmg。
如果你的操作系统是 Windows,那么请点击对应的下载项。Windows Installer (64-bit) 是针对 64 位的 Windows 系统,目前一般都是 64 位的 Windows 了吧。
如果你是 Linux,可以下载 Source Code 来编译安装。也可以用对应 Linux 发行版的安装方式来安装。例如,Debian / Ubuntu 的系统,可以用 sudo apt install wireshark 来安装。RHEL / CentOS / Fedora 的系统,可以用 sudo yum install wireshark 来安装。
其他系统安装 Wireshark,请自行上网搜索安装 Wireshark 的教程来安装。Wireshark 的安装就和安装一般的软件例如 QQ 没有太多区别,很简单的。
如果你在 Windows 中,下载完成之后,双击下载好的安装文件即可进行安装,一般就是下一步下一步,直到安装完成。
我在 macOS 中,下载完成之后,看到对应的 dmg 文件:

双击这个文件,就会打开一个窗口:

把 Wireshark 那个图标选中,拖动到 Applications(应用程序)里,就把 Wireshark 拷贝到应用程序中了,就完成了安装:

使用 Wireshark
安装完成之后,我们双击应用程序中 Wireshark 的图标,就会打开 Wireshark 了:

可以在 Dock(程序坞)中看到 Wireshark 的图标,你可以把它添加到 Dock 栏中,只需要右键单击 Dock 栏中 的 Wireshark 的图标,然后选择 “选项”->“在程序坞中保留”。这样即使你退出了 Wireshark,它的快捷方式还是会在 Dock 中,方便之后打开。

我目前电脑上网是用的 WiFi 无线连接,所以如下图所示,Wireshark 里显示有流量的主要是 Wi-Fi: en0 这个接口(还有一个是 Loopback: lo0,表示本地回环,我们不看):

在我的情况下,双击有流量波动的 Wi-Fi: en0 那一行,进入流量捕获窗口:

上图中每一行对应了一个捕获到的报文(message),或者称为 packet(数据包)。
我们可以随便查看一个 Protocol(协议)那一列是 HTTP 的 packet,例如下图中标示出的那一行:

单击那一行,在下面的小窗口中就会显示和这个数据包相关的 OSI 各层的信息:

Wireshark 将 OSI 模型的每个层的相关信息分开展示。
我们可以看到 OSI 的各层的信息,比如第 1 层物理层(Frame 25335,表示帧的编号是 25335。帧的大小是 396 bytes,就是 396 字节,等于 3168 个比特位,3168 bits,因为一个 byte 等于 8 个 bit。396 * 8 = 3168),第 2 层数据链路层里的以太网协议(Ethernet II),第 3 层网络层的 IP 协议(Internet Protocol),还有我们还未学习的第 4 层传输层的 Transmission Control Protocol 协议,最后是第 7 层应用层里的 HTTP 协议(Hypertext Transfer Protocol,超文本传输协议)。
通过单击每一层前面的三角形,我们能看到每个层的相关内容。让我们从第 2 层开始(见下图):

在第 2 层的帧的头部可以看到我们已经了解的元素:目标 MAC 地址(c4:b3:01:bc:29:87)和源 MAC 地址(54:75:95:e9:15:5a)。目标 MAC 地址对应的设备是我的苹果电脑的网卡,可以看到 Apple(苹果公司)的字样。源 MAC 地址对应的设备是我家里的上网盒子的网卡,可以看到 Tp-Link(Tp-Link 公司)的字样。最后,它向我们展示了所使用的第 3 层的协议,是 IPv4 协议(IP 协议第 4 版)。
我们接着来看第 3 层(见下图):

第 3 层的 IP 数据报的头部的信息比较多,有不少是我们还不了解的元素,但是我们可以在头部的末尾看到源 IP 地址(211.159.235.178)和目标 IP 地址(192.168.0.103。这是我的主机的 IP 地址,是一个私有 IP 地址)。
重回我们的问题
我们刚才用 Wireshark 来查看了一个 packet(数据包)的数据,试图了解为什么目标 IP 地址不在 IP 数据报的头部的开始处,而在末尾(甚至目标 IP 地址被放置于源 IP 地址的后面)。
我们通过实践可以了解到,当报文(message)或称为 packet(数据包)到达我们的机器时,它从 OSI 的第 1 层到第 7 层,依次穿越 OSI 模型的各层(除了第 5 层和第 6 层,因为实际使用的是 TCP/IP 五层协议,包含 OSI 的第 1,2,3,4,7 层)。当它穿过第二层时,该层读取帧的头部的目标 MAC 地址:
-
如果是我们的机器的网卡的 MAC 地址,就会读取帧的其余部分,然后将数据(实际上是 datagram(数据报))传输到第 3 层;
-
如果不是我们的机器的网卡的 MAC 地址,则不读取余下的信息,丢弃之(因为不是发给我们的网卡的)。
因此,如果消息到达了第 3 层,这必然意味着机器已经知道该消息是发给自己的,因为目标 MAC 地址是它自己的网卡的 MAC 地址。因此,它并不需要立即知道目标 IP 地址是否也是自己的 IP 地址,因为它已经知道此数据报是发给自己的。
因此,我们可以将目标 IP 地址放置在 IP 数据报的头部中的任意位置。IP 协议的发明者们并没有搞错!
此外,将 IP 地址放在数据报的头部的末尾的决定也不是随意为之的,主要是为了将第 3 层的重要信息放在离第 4 层的重要信息更近的地方。我们将会在之后的课程中学到 OSI 第 4 层的信息。
好的,我们现在知道了 IP 数据报的头部的两个元素及其位置。为了继续探索 IP 数据报的头部的其他元素,我们将学习 OSI 第 3 层的很重要的知识点:路由!
- 路由
路由,英语是 routing,是 route 的现在分词,表示 “按特定路线发送,为… 规定路线”。
顾名思义,路由使我们能够向自己所属的网络之外发送消息。
正如我们前面所看到的,各个网络之间是相互连接的,并且我们通常需要经过多个网络之后,才能连接上某个网络。
你还记得下图吗?

可以看到,为了从我的电脑的网络到达 Github 的服务器主机所在的网络,需要穿过很多不同的网络。
但是,如何连接这些网络呢?
就像 OSI 第 2 层有交换机这个关键的硬件一样,第 3 层也有特定的硬件来管理网络之间的连接,即路由器。
下一课我们继续学习路由的知识点,会一起学习很关键的硬件:路由器 的相关知识点噢。
这一课就不总结了,毕竟以实践为主。
一起加油吧~
}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953