【THM】Networking Essentials(网络基本要点)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/networkingessentials

本文相关内容:探索网络协议--从自动配置到 将数据包路由到目的地。

image-20250107222646387

介绍

image-20250108183818409

你是否想知道当你打开计算机或将其连接到新网络时,计算机如何动态配置其网络设置?你是否想知道你的数据包在到达目的地之前经过了多少个设备和国家/地区?你是否好奇,即使你的ISP给了你一个单一的IP地址,而你所有的家庭设备都可以访问互联网?

如果你想知道这些问题的答案,那么本文的内容就很适合你学习。

这个实验房间是有关计算机网络的一系列TryHackMe实验房间中的第二个:

前置学习条件

为了从本文的知识点内容中受益,建议你先了解以下信息:

  • ISO OSI 模型和分层;
  • TCP /IP 模型和分层;
  • 以太网、IP 和TCP协议。

换句话说,建议读者在学习了网络基础概念之后再开始本文的学习。

学习目标

本文的知识点内容旨在介绍与网络相关的各种标准协议和技术:

  • 动态主机配置协议 ( DHCP-Dynamic Host Configuration Protocol)
  • 地址解析协议 ( ARP-Address Resolution Protocol)
  • 网络地址转换 (NAT-Network Address Translation)
  • 互联网控制消息协议 (ICMP-Internet Control Message Protocol)
    • Ping
    • Traceroute 路由跟踪

DHCP:了解主机的网络设置

你去了你最喜欢的咖啡店,拿了你最喜欢的热饮,然后打开了笔记本电脑。你的笔记本电脑已经连接到商店的WiFi并自动配置好了网络,因此你现在可以在新的THM实验房间中工作。你没有输入任何 IP 地址,但你的设备所使用的网络环境已全部设置完毕。让我们看看这是怎么发生的。

当我们想要访问网络时,至少需要配置以下内容:

  • IP address along with subnet mask:IP 地址和子网掩码
  • Router (or gateway):路由器(或网关)
  • DNS server:DNS服务器

每当我们的设备连接到新的网络时,都必须根据新的网络完成上述配置。手动配置这些设置是一个不错的选择,特别是对于服务器而言。服务器不需要切换网络;你无需携带域控制器并将其连接到咖啡店WiFi。此外,其他设备需要连接到服务器并期望在特定的 IP 地址找到它们。

采用自动化方式配置已连接的设备有很多优点。首先,它可以让我们免去手动配置网络的麻烦;这非常重要,尤其是对于移动设备而言。其次,它可以使我们避免地址冲突,即 当两个设备配置有相同的 IP 地址时。 IP地址冲突会导致相关主机无法使用网络资源;这适用于本地资源和互联网资源。解决方案在于使用动态主机配置协议 (DHCP)。 DHCP是一种依赖于UDP的应用层协议;相关的服务器在UDP端口 67 上进行侦听,客户端将从UDP端口 68 处发送数据。我们的智能手机和笔记本电脑将默认配置为使用DHCP。

image-20250108193452870

DHCP遵循四个步骤:发现、提供、请求和确认 (DORA):

  1. DHCP Discover :客户端广播一条 DHCPDISCOVER 消息来寻找本地DHCP服务器(如果存在)。
  2. DHCP Offer :服务器使用 DHCPOFFER 消息进行响应,其中包含可供客户端接受的 IP 地址。
  3. DHCP Request:客户端用 DHCPREQUEST 消息进行响应,表明它已接受被提供的 IP。
  4. DHCP Acknowledge:服务器使用 DHCPACK 消息进行响应,以确认 被提供的 IP 地址现已成功分配给该客户端。

image-20250108193514723

以下数据包捕获情况很好地展示了上述四个步骤。在这个示例中,客户端所获取到的IP地址是192.168.66.133

user@TryHackMe$ tshark -r DHCP-G5000.pcap -n
    1   0.000000      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0xfb92d53f
    2   0.013904 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP Offer    - Transaction ID 0xfb92d53f
    3   4.115318      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Request  - Transaction ID 0xfb92d53f
    4   4.228117 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP ACK      - Transaction ID 0xfb92d53f

在DHCP数据包交换过程中,我们可以注意到以下几点:

  • 客户端启动时无需任何 IP 网络配置。它只有一个 MAC 地址。在第一个和第三个数据包( DHCP Discover 和DHCP Request)中,搜索DHCP服务器的客户端仍然没有 IP 网络配置,并且尚未使用DHCP服务器提供的 IP 地址。因此,它会将数据包从 IP 地址0.0.0.0发送到广播 IP 地址255.255.255.255
  • 对于链路层,在第一个和第三个数据包中,客户端会将数据发送到广播 MAC 地址ff:ff:ff:ff:ff:ff(在上面的输出中未显示此格式)。DHCP 服务器会在 DHCP Offer中提供一个可用的 IP 地址以及网络配置。它会使用客户端的目标 MAC 地址。 (在此示例系统中,它使用了建议的 IP 地址)

在DHCP过程结束时,我们的设备将收到访问网络甚至互联网所需的所有配置。特别是,我们期望DHCP服务器为我们提供以下内容:

  • 租用的IP地址,用于访问网络资源;
  • 将数据包路由到本地网络之外的网关;
  • 用于解析域名的DNS服务器(稍后详细介绍)。

答题

DHCP 使用了多少个步骤来提供网络配置?

4

客户端发送 DHCP Discover 数据包时使用的目的 IP 地址是什么?

255.255.255.255

客户端尝试通过 DHCP 获取 IP 网络配置时使用的源 IP 地址是什么?

0.0.0.0

image-20250108193836070

ARP: 桥接三层寻址到二层寻址

我们在网络基础概念实验房间中指出,当两台主机通过网络进行通信时,IP 数据包在第 2 层上传输时会被封装在数据链路帧中。请记住,我们使用的两个常见数据链路层是以太网 (IEEE 802.3)和 WiFi (IEEE 802.11)。每当一台主机需要与同一以太网或 WiFi 上的另一台主机通信时,它必须在数据链路层帧内发送 IP 数据包。尽管它知道目标主机的 IP 地址,但它需要查找目标的 MAC 地址,以便创建正确的数据链路标头。

你可能还记得,MAC地址是一个48位数字,通常以十六进制表示;例如,7C:DF:A1:D3:8C:5C44:DF:65:D8:FE:6C可以是某个网络上的两个MAC地址。

然而,同一以太网上的设备不需要一直知道彼此的MAC地址;它们只需要在通信时知道彼此的MAC地址即可。一切都围绕着 IP 地址,考虑以下场景:你将设备连接到某网络,如果此网络有 DHCP 服务器,你的设备会自动配置为使用特定网关(路由器)和指定的DNS服务器。因此,你的设备知道DNS服务器的 IP 地址来解析任何域名;此外,当它需要通过互联网发送数据包时,它知道路由器的IP地址。在所有这些场景中,都不会泄露MAC地址。但是,同一以太网上的两个设备在不知道彼此MAC地址的情况下就无法进行通信。

在下面的屏幕截图中,我们看到以太网帧内有一个 IP 数据包,以太网帧的标头将包含:

  • Destination MAC address:目的MAC地址
  • Source MAC address:源MAC地址
  • Type (IPv4 in this case):类型(在本例中为 IPv4)

image-20250108193905887

地址解析协议(ARP)使得查找以太网上另一个设备的MAC地址成为可能。

在下面的终端示例输出中,我们可以看到IP地址为192.168.66.89的主机想要与IP地址为192.168.66.1的另一个主机进行通信。它会发送一个ARP请求,从而要求IP地址为192.168.66.1的主机做出响应。ARP请求将会从请求者的MAC地址发送到广播MAC地址ff:ff:ff:ff:ff:ff,如下面终端输出中的第一个数据包所示。不久之后,ARP回复将到达,IP地址为192.168.66.1主机回复了它的MAC地址。至此,两台主机就可以开始交换数据链路层的数据帧了。

user@TryHackMe$ tshark -r arp.pcapng -Nn
    1 0.000000000 cc:5e:f8:02:21:a7 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.66.1? Tell 192.168.66.89
    2 0.003566632 44:df:65:d8:fe:6c → cc:5e:f8:02:21:a7 ARP 42 192.168.66.1 is at 44:df:65:d8:fe:6c

如果我们使用的是tcpdump ,数据包的显示情况将会有所不同,它会使用术语“ARP Request(请求)”和“ARP Reply(应答)”。可供参考的输出内容将被显示在下面的终端中。

user@TryHackMe$ tcpdump -r arp.pcapng -n -v
17:23:44.506615 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.66.1 tell 192.168.66.89, length 28
17:23:44.510182 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.66.1 is-at 44:df:65:d8:fe:6c, length 28

ARP请求或ARP应答不会被封装在 UDP 甚至 IP 数据包中;它将会直接封装在以太网数据帧(Ethernet frame)内。以下的ARP应答信息显示了这一点。

image-20250108193954617

ARP被视为第2层(数据链路层)协议,因为它将处理MAC地址。其他人可能会认为它是第3层(互联网层)的一部分,因为它支持 IP 操作。需要了解的是, ARP允许从第3层寻址转换到第2层寻址。

答题

ARP 请求中使用的目标 MAC 地址是什么?

ff:ff:ff:ff:ff:ff

在上面的示例中, 192.168.66.1的 MAC 地址是什么?

44:df:65:d8:fe:6c

image-20250108194327911

ICMP:网络故障排除

互联网控制消息协议(ICMP-Internet Control Message Protocol)主要用于网络诊断和错误报告。有两个流行的命令依赖于ICMP协议,它们对于网络故障排除和保护网络的安全性非常有用,具体的命令是:

  • ping :此命令使用 ICMP 测试与目标系统的连接并会测量往返时间 (RTT-round-trip time)。换句话说,它可以用来了解目标是否存活并且其回复是否可以到达我们的系统。
  • traceroute :该命令在Linux和类UNIX系统上是traceroute ,在Windows系统上是tracert ,它会使用ICMP来发现从你的主机到目标的路由。

Ping

你以前可能从未打过乒乓球;不过,多亏了ICMP,你现在可以在计算机上玩它了! ping命令将发送 ICMP Echo Request(ICMP 类型8 )。下面的屏幕截图显示了 IP 数据包中的 ICMP 消息。

image-20250108194400320

接收端的计算机会以 ICMP Echo Reply(ICMP 类型0 )进行响应。

image-20250108194415433

许多事情可能会阻止我们得到ping命令的相关reply。除了目标系统可能离线或关闭之外,传输路径上的防火墙设备还可能会阻止ping工作所需的数据包。在下面的示例中,我们使用了-c 4参数选项来告诉ping命令在发送完四个数据包后停止运行。

user@TryHackMe$ ping 192.168.11.1 -c 4
PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data.
64 bytes from 192.168.11.1: icmp_seq=1 ttl=63 time=11.2 ms
64 bytes from 192.168.11.1: icmp_seq=2 ttl=63 time=3.81 ms
64 bytes from 192.168.11.1: icmp_seq=3 ttl=63 time=3.99 ms
64 bytes from 192.168.11.1: icmp_seq=4 ttl=63 time=23.4 ms

--- 192.168.11.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 3.805/10.596/23.366/7.956 ms

上述输出显示没有丢包,此外,它还计算了往返时间(RTT-round-trip time)的最小值、平均值、最大值和标准差(mdev)。

Traceroute 路由跟踪

我们怎样才能让我们的系统和目标系统之间的每个路由器都暴露出来呢?

Internet协议有一个被称为生存时间(TTL-Time-to-Live)的字段,该字段指示了数据包在被丢弃之前可以通过的最大路由器数量。路由器在发送数据包之前会将TTL减一,当TTL达到零时,路由器将丢弃数据包并发送ICMP超时消息——ICMP 类型11。(在这种情况下,这里的“Time”是以路由器的数量而不是以秒来衡量的)

下面的终端输出显示了运行traceroute以发现我们的系统和example.com之间的路由器的结果。有些路由器没有响应;换句话说,它们会丢弃数据包而不发送任何 ICMP 消息。属于我们的 ISP 的路由器可能会做出响应,泄露其私有 IP 地址。此外,一些路由器会响应并显示其公有 IP 地址,这将让我们查找其域名并发现其地理位置。最后,ICMP 超时消息始终有可能会被阻止并且永远不会到达我们。

user@TryHackMe$ traceroute example.com
traceroute to example.com (93.184.215.14), 30 hops max, 60 byte packets
 1  _gateway (192.168.66.1)  4.414 ms  4.342 ms  4.320 ms
 2  192.168.11.1 (192.168.11.1)  5.849 ms  5.830 ms  5.811 ms
 3  100.104.0.1 (100.104.0.1)  11.130 ms  11.111 ms  11.093 ms
 4  10.149.1.45 (10.149.1.45)  6.156 ms  6.138 ms  6.120 ms
 5  * * *
 6  * * *
 7  * * *
 8  172.16.48.1 (172.16.48.1)  5.667 ms  8.165 ms  6.861 ms
 9  ae81.edge4.Marseille1.Level3.net (212.73.201.45)  50.811 ms  52.857 ms 213.242.116.233 (213.242.116.233)  52.798 ms
10  NTT-level3-Marseille1.Level3.net (4.68.68.150)  93.351 ms  79.897 ms  79.804 ms
11  ae-9.r20.parsfr04.fr.bb.gin.ntt.net (129.250.3.38)  62.935 ms  62.908 ms  64.313 ms
12  ae-14.r21.nwrknj03.us.bb.gin.ntt.net (129.250.4.194)  141.816 ms  141.782 ms  141.757 ms
13  ae-1.a02.nycmny17.us.bb.gin.ntt.net (129.250.3.17)  145.786 ms ae-1.a03.nycmny17.us.bb.gin.ntt.net (129.250.3.128)  141.701 ms  147.586 ms
14  ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.692 ms ce-3-3-0.a03.nycmny17.us.ce.gin.ntt.net (128.241.1.90)  141.615 ms ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.168 ms
15  ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  141.100 ms ae-65.core1.nyd.edgecastcdn.net (152.195.68.133)  140.360 ms ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  140.638 ms
16  93.184.215.14 (93.184.215.14)  140.574 ms  140.543 ms  140.514 ms
17  93.184.215.14 (93.184.215.14)  140.488 ms  139.397 ms  141.854 ms

当我们重新运行traceroute命令时,遍历的路由路线可能会发生改变。

答题

查看上面的示例截图,echo (ping) 请求中发送了多少字节?

40

traceroute命令需要哪个 IP 标头字段变为零?

TTL

image-20250108194828838

Routing (路由)

查看如下的网络示意图。它只有三个网络;但是,互联网如何确定怎样将数据包从网络 1 传送到网络 2 或网络 3?这是一个过于简化的图,我们需要一些算法来弄清楚如何将网络 1 连接到网络 2 和网络 3,反之亦然。

image-20250108194947092

让我们查看一个更详细的图表。互联网将由数百万个路由器和数十亿台设备组成。下图所示的网络只是互联网的一个很小的子集。移动用户可以访问Web服务器;然而,要实现这一点,路径上的每个路由器都需要通过适当的链路发送数据包。显然,连接移动用户和Web服务器的路径(即路由)不只一条。因此,我们需要一个路由算法来让路由器确定要使用哪条链路。

image-20250108195007038

具体的路由算法超出了本文的讨论范围,但是,我们在此将简要描述一些路由协议,以便你熟悉它们的名称:

  • OSPF(开放最短路径优先-Open Shortest Path First) :OSPF是一种路由协议,允许路由器共享有关网络拓扑的信息并计算数据传输的最有效路径。它通过让路由器交换有关其连接的链路和网络状态的更新来实现这一点。这样,每个路由器就拥有完整的网络地图,并且可以确定到达任何目的地的最佳路线。
  • EIGRP(增强型内部网关路由协议-Enhanced Interior Gateway Routing Protocol) :EIGRP是 Cisco 专有路由协议,结合了不同路由算法的各个方面。它允许路由器共享有关它们可以到达的网络以及与这些路由相关的成本(例如带宽或延迟)的信息。然后,路由器使用此信息来选择最有效的数据传输路径。
  • BGP(边界网关协议-Border Gateway Protocol) :BGP是Internet 上使用的主要路由协议。它允许不同的网络(例如互联网服务提供商的网络)交换路由信息并建立数据在这些网络之间传输的路径。 BGP 有助于确保数据可以在 Internet 上高效路由,即使在穿越多个网络时也是如此。
  • RIP(路由信息协议-Routing Information Protocol) :RIP是一种简单的路由协议,常用于小型网络。运行 RIP 的路由器将共享有关它们可以到达的网络以及到达那里所需的跳数(路由器)的信息。因此,每个路由器都会根据此信息构建路由表,选择到达每个目的地的跳数最少的路由。

答题

本小节中讨论的哪个路由协议是 Cisco 专有协议?

EIGRP(增强型内部网关路由协议-Enhanced Interior Gateway Routing Protocol)

image-20250108195100727

NAT(网络地址转换)

正如网络基础概念实验房间中所讨论的那样,我们可以计算出 IPv4 最多能支持 40 亿台设备。随着连接互联网的设备数量不断增加(从计算机、智能手机到安全摄像头和智能洗衣机等),IPv4 地址空间显然将很快耗尽。解决地址耗尽的一种解决方案是网络地址转换 (NAT-Network Address Translation)。

NAT 背后的理念在于使用单个公有 IP 地址多个私有 IP 地址提供 Internet 访问。换句话说,如果你要连接到一家拥有 20 台计算机的公司的相关网络,就可以使用单个公有 IP 地址(而不是 20 个公有 IP 地址)为所有 20 台计算机提供 Internet 访问。 (注意:IP 地址的数量始终表示为2的幂。从技术上准确地说,使用 NAT,你可以保留两个公网 IP 地址,而不是 32 个。因此,你将节省 30 个公网 IP 地址的使用)

与路由(将数据包路由到目标主机的自然方式)不同,支持 NAT 的路由器必须找到一种方法来跟踪正在进行的连接。因此,支持 NAT 的路由器将维护一个在内部和外部网络之间转换网络地址的表。一般来说,内部网络会使用私有IP地址范围,而外部网络则会使用公有IP地址。

如下图所示,多台设备通过支持NAT的路由器访问互联网。路由器将维护一个映射表,从而将内部 IP 地址和端口号与其外部 IP 地址和端口号进行映射。例如,笔记本电脑可能会与某些 Web 服务器建立连接。从笔记本电脑的角度来看,连接是从其 IP 地址192.168.0.129 、 TCP源端口号15401发起的;但是,Web服务器会将此连接视为 是从212.3.4.5和TCP端口号19273发起并建立的(如以下地址转换表中的内容所示),路由器将无缝地完成这样的地址转换。

image-20250108195202856

答题

在上面的网络示意图中,手机访问互联网时使用的公有IP地址是什么?

212.3.4.5

假设路由器有无限的处理能力,它大约可以同时维持多少千TCP连接?

tips:这将受到 TCP 端口号数量的限制。

image-20250108195513660

65

image-20250108195942272

本文小结

本文主要介绍了我们经常使用(直接使用或间接使用)的各种协议。目前为止,我们在本文中已经介绍了ICMP、DHCP、 ARP 、NAT以及路由。尽管我们可能每天都在使用互联网,但是并没有遇到过本文中所提及的大部分缩写词,与这些缩写词相关的协议是网络正常运行的基础。

答题

在与本文相关的TryHackMe实验房间中,单击“查看站点”按钮可访问相关站点。请按照网站上的说明获取flag内容。

image-20250108200105673

image-20250108200153315

image-20250108200216697

image-20250108200329781

image-20250108200418027

image-20250108200429065

THM{computer_is_happy} 。

image-20250108200512466

posted @ 2025-05-02 21:45  Hekeatsll  阅读(192)  评论(0)    收藏  举报