Skip to content

第九章 理解 TCP/IP 网络

LAN 是什么的缩略语?

LAN 是 Local Area Network 的缩略语

TCP/IP 是什么的缩略语?

TCP/IP 是 Transmission Control Protocol/Internet Protocol 的缩略语

MAC 地址是什么?

所谓 MAC 地址就是能够标识网卡的编号

通常人们把通过连接多台计算机所组成的、可用于关于交换的系统称为“网络”。互联网作为网络的一种,可以使我们的计算机和远在千里之外的计算机连接在一起。

9.1 实验环境

在所有网络上的计算机中,有些是服务器,有些是客户端。在服务器上运行的程序为客户端提供服务。

“集线器”是负责把各台计算机的网线相互连接在一起的集线设备。

“路由器”是负责把公司内的网络和互联网连接起来的设备。

1

通常把像这样部署在一间办公室内的小规模网络称作 LAN;把像互联网那样将企业和企业连结起来的大规模网络称作 WAN。

9.2 实验 1:查看网卡的 MAC 地址

以太网中的每台计算机都需要先确认一件事:在网线上有没有其他的计算机正在传输电信号。万一遇到了多台计算机都想发送电信号的情况,只需要让这些计算机等待一段长度随机的事件再重新发送即可。这套机制叫做 CSMA(带冲突检测的载波监听)。

  • 载波监听,指的是这套机制会去监听表示网络是否正在使用的电信号
  • 多路复用,指的是多个设备可以同时访问传输介质
  • 冲突检测,表示这套机制会去检测因同一时刻的传输而导致的电信号冲突。

bash
ipconfig -all
yaml
以太网适配器 以太网 2:
  连接特定的 DNS 后缀 . . . . . . .:
  描述. . . . . . . . . . . . . . .: Realtek PCIe GbE Family Controller #2
  物理地址. . . . . . . . . . . . .: A4-BB-6D-D2-69-74
  DHCP 已启用 . . . . . . . . . . .: 
  自动配置已启用. . . . . . . . . .: 
  本地链接 IPv6 地址. . . . . . . .: fe80::8026:541e:fbf0:28f1%13(首选)
  IPv4 地址 . . . . . . . . . . . .: 192.168.42.156(首选)
  子网掩码  . . . . . . . . . . . .: 255.255.255.0
  默认网关. . . . . . . . . . . . .: 192.168.42.254
  DHCPv6 IAID . . . . . . . . . . .: 245676909
  DHCPv6 客户端 DUID  . . . . . . .: 00-01-00-01-26-A9-AF-6A-A4-BB-6D-C5-1E-19
  DNS 服务器  . . . . . . . . . . .: 223.5.5.5
    119.29.29.29
  TCPIP 上的 NetBIOS  . . . . . . .: 已启用

这里的物理地址 A4-BB-6D-D2-69-74 就是 MAC 地址

9.3 实验 2:查看计算机的 IP 地址

MAC 地址虽然可以在硬件层面标识网卡,可是如果只有 MAC 地址也很不方便。因为企业或组织需要对计算机进行分组管理,但是 MAC 地址却很难做到按编号分组。因此需要有一种机制来整理机器的标识。 因此,在 TCP/IP 网络中,除了硬件上的 MAC 地址,还需要为每台计算机设定一个软件上的编号。这个编号就是众所周知的 IP 地址。

这个 IPv4 地址192.168.42.156(首选)就是 IP 地址

9.4 实验 3:了解 DHCP 服务器的作用

DHCP 的全称是 Dynamic Host Configuration Protocol 动态主机配置协议

DHCP 服务器上记录着可以被分配到 LAN 内计算机的 IP 地址范围和子网掩码的值。作为 DHCP 客户端的计算机再启动时,就可以从中知道那些 IP 地址还没有分配给其他计算机。然后客户端和服务器之间就可以通过协商来确定客户端的 IP 地址了。

9.5 实验 4:路由器是数据传输过程中的指路人

再分组管理下,IP 地址中的网络地址部分可以代表一个组中的全部计算机,及一个 LAN 中的计算机全体。

路由器正如其明,就是决定数据传输路径的设备。

当从公司内的计算机向另一家公司发送数据时会发生什么呢?

首先,一个不属于 LAN 内计算机的 IP 地址会被附加到数据的发送目的地字段上。这样的数据虽然会被 LAN 内同组的计算机所忽略,但是不会被路由器忽略。因为路由器的工作原理就是查看附加到数据上的 IP 地址的网络地址部分,只要发现这个数据不是发送给 LAN 内的,就把它发送到 LAN 外,即互联网的世界中。

分布在世界各地的 LAN 中的路由器相互交换着信息,互联网正式由于这种信息的交换才得以联通。这种信息被称作路由表,用来记录应该把数据转发到哪里。

每台路由器的路由表中只记录通往与之相邻的路由器的路径,路由器与路由器互相连接,最终形成了庞大的错综复杂的互联网。

bash
route print
yaml

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0     192.168.42.1   192.168.42.199    281
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
     192.168.42.0    255.255.255.0            在链路上    192.168.42.199    281
   192.168.42.199  255.255.255.255            在链路上    192.168.42.199    281
   192.168.42.255  255.255.255.255            在链路上    192.168.42.199    281
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上    192.168.42.199    281
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上    192.168.42.199    281

9.6 实验 5:查看路由器的路由过程

我们浏览一个网页,其 Web 服务器中的数据,要经过若干个路由器的转发才能达到诸位的计算机上。通常把这种数据经过路由器转发的过程称为“路由”(Routing)。

bash
tracert www.gausszhou.top
yaml
通过最多 30 个跃点跟踪
到 www.gausszhou.top [185.199.109.153] 的路由:

  1    <1 毫秒   <1 毫秒   <1 毫秒 192.168.42.1
  2     2 ms     1 ms     1 ms  192.168.0.1
  3     4 ms     4 ms     6 ms  100.64.0.1
  4     6 ms     6 ms     6 ms  61.187.3.117
  5    10 ms     7 ms     *     61.137.10.229
  6     *        *        *     请求超时。
  7     *       27 ms    27 ms  202.97.94.146
  8    27 ms    31 ms    30 ms  202.97.12.45
  9     *      224 ms   218 ms  202.97.94.14
 10   636 ms   393 ms   196 ms  ae-3.r30.tokyjp05.jp.bb.gin.ntt.net [129.250.3.23]
 11   224 ms   226 ms     *     ae-2.r00.tokyjp08.jp.bb.gin.ntt.net [129.250.6.127]
 12     *      837 ms     *     ae-2.fastly.tokyjp08.jp.bb.gin.ntt.net [117.103.177.74]
 13   127 ms   128 ms   128 ms  cdn-185-199-109-153.github.com [185.199.109.153]

9.7 实验 6:DNS 服务器可以把主机名解析成 IP 地址

再互联网中,难以记忆的 IP 地址使用起来很麻烦。于是人们就发明出了 DNS 服务器,这样只需要使用玉米你个,DNS 服务器就可以自动地把它解析为 IP 地址。DNS 服务器通常被部署在各个 LAN 中,里面记录着域名和 IP 地址的对应关系表。

如果一台 DNS 服务器无法解析域名,它就会去询问其他的 DNS 服务器。这套流程时自动进行的。

yaml
nslookup

默认服务器:  public1.alidns.com
Address:  223.5.5.5

9.8 实验 7:查看 IP 地址和 MAC 地址的对应关系

在互联网的世界中,到处传输的都是附带了 IP 地址的数据。但是能够标识作为数据最终接收者的网卡的,还是 MAC 地址。于是在计算机中就加入了一种程序,用于实现 IP 地址到 MAC 地址的转换,这种功能被称作 ARP(Address Resolution Protocol,地址解析协议)。

ARP 对 LAN 中的所有计算机进行广播询问,如果有某台计算机回复了 MAC 地址,那么这台计算机的 IP 地址和 MAC 地址的对应关系也就明确了。得到结果之后,ARP 就会缓存这些对应关系信息的结果。

yaml
arp -a
接口: 192.168.42.199 --- 0x7
  Internet 地址         物理地址              类型
  192.168.42.1          08-40-f3-02-eb-a0     动态
  192.168.42.255        ff-ff-ff-ff-ff-ff     静态
  224.0.0.2             01-00-5e-00-00-02     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

9.9 TCP 的作用及 TCP/IP 网络的层级模型

TCP/IP 这个词表示在网络上同时使用了 TCP 和 IP 这两种协议。

正如前面所讲,IP 协议用于指定数据发送目的地的 IP 地址已经通过路由转发数据。

而 TCP 协议则用于通过数据发送者和接收者相互回应对方发来的确认信息,可靠地传输数据。通常把这样的数据传送方式称作“握手”。

TCP 协议中还规定,发送者要先把原始的大数据分割成“包”为单位的数据单元,然后再发送,而接收者要把收到的包拼装到一起还原出原始数据。

为了能够在协议的约定下手法数据,操作系统将实现了 TCP 和 IP 等协议的程序作为自身的一部分功能提供。

遵循协议约束表现在统一数据的格式上。我们发送的原始信息并不是原封不动的发送出去的,而是先通过实现了 TCP 协议的程序附加 TCP 协议所需的信息,然后再通过实现了 IP 协议的程序附加 IP 协议所需的信息。

硬件上发送数据的是网卡。在网卡之上的是设备驱动程序,设备驱动程序之上是实现了 IP 协议的程序,IP 程序之上则是实现了 TCP 协议的程序,而再往上才是应用程序,比如浏览器,浏览器中则实现了名为 HTTP 的超文本传输协议,名为 RTCP 的实时控制协议等。

TCP 协议使用被称作“TCP 端口号”的数字来识别上层的应用程序。