Featured image of post 网络概念

网络概念

常见基础的网络概念

OSI

please do not throw spinach pizza away

Layer 1: Physical Layer

物理层处理设备之间的物理连接;这包括介质 (如线路) 以及二进制数字 0 和 1 的定义。数据传输可以通过电、光学或无线信号进行。因此,我们需要数据线或天线,具体取决于我们的物理介质。

数据链路层,代表实现同一网段节点之间数据传输的协议。让我们用更简单的术语来表达。数据链路层描述了同一网段上不同系统之间关于如何通信的协议。网段是指使用共享介质或通道进行信息传输的一组联网设备。例如,假设公司办公室有 10 台计算机连接到网络交换机;那是一个网段。

第 2 层的示例包括以太网(即 802.3)和 WiFi(即 802.11)。以太网和 WiFi 地址为 6 个字节。它们的地址称为 MAC 地址,其中 MAC 代表媒体访问控制。它们通常以十六进制格式表示,每两个字节之间用冒号分隔。最左边的三个字节标识供应商。

image-20250407225141784

Layer 3: Network Layer

网络层,关注在不同网络之间发送数据。用更专业的术语来说,网络层处理逻辑寻址和路由,即找到在不同网络之间传输网络数据包的路径

在数据链路层,我们给出了一个公司办公室有 10 台计算机的示例,其中数据链路层负责在它们之间提供连接。假设这家公司在多个办事处,分布在不同的城市、国家甚至大洲。网络层负责将不同的办公室连接在一起。

下面的网络显示计算机 A 和 B 已连接,尽管位于不同的网络上。您还可以注意到连接两台计算机的两条路径;网络层将通过其认为更好的路径路由网络数据包。

image-20250407225357047

网络层的示例包括 Internet 协议 (IP)、Internet 控制消息协议 (ICMP) 和虚拟专用网络 (VPN) 协议,例如 IPSec 和 SSL/TLS VPN。

Layer 4: Transport Layer

传输层支持不同主机上正在运行的应用程序之间的端到端通信。您的 Web 浏览器通过传输层连接到 TryHackMe Web 服务器,该服务器可以支持流控制、分段和纠错等各种功能。

第 4 层的示例包括传输控制协议 (TCP) 和用户数据报协议 (UDP)。

Layer 5: Session Layer

会话层负责建立、维护和同步在不同主机上运行的应用程序之间的通信。建立会话意味着启动应用程序之间的通信并协商会话的必要参数。数据同步可确保数据以正确的顺序传输,并提供在传输失败时恢复的机制。

会话层的示例包括网络文件系统 (NFS) 和远程过程调用 (RPC)。

Layer 6: Presentation Layer

表示层确保以应用程序层可以理解的形式交付数据。第 6 层处理数据编码、压缩和加密。编码的一个示例是字符编码,例如 ASCII 或 Unicode。

表示层采用多种标准化格式。 以电子邮件发送图像场景为例:首先使用JPEG、GIF、PNG格式存储图像;随后通过MIME(多用途互联网邮件扩展)协议将文件附加至邮件,虽然邮件客户端对用户隐藏了这一过程。MIME协议通过7位ASCII字符实现二进制文件编码。

Layer 7: Application Layer

应用层直接向最终用户应用程序提供网络服务。您的 Web 浏览器将使用 HTTP 协议来请求文件、提交表单或上传文件。

应用程序层是顶层,当您使用不同的应用程序时,您可能已经遇到了它的许多协议。第 7 层协议的示例包括 HTTP、FTP、DNS、POP3、SMTP 和 IMAP。

Summary

层数 图层名称 主要功能 示例协议和标准
第 7 层 Application layer 应用层 为应用程序提供服务和接口 HTTP, FTP, DNS, POP3, SMTP, IMAP HTTP、FTP、DNS、POP3、SMTP、IMAP
第 6 层 Presentation layer 表示层 数据编码、加密和压缩 Unicode, MIME, JPEG, PNG, MPEG Unicode 、MIME、JPEG、PNG、MPEG
第 5 层 Session layer 会话层 建立、维护和同步会话 NFS, RPC NFS 和 RPC
第 4 层 Transport layer 传输层 端到端通信和数据分段 UDP, TCP UDP、TCP
第 3 层 Network layer 网络层 网络之间的逻辑寻址和路由 IP, ICMP, IPSec IP、ICMP、IPSec
第 2 层 Data link layer 数据链路层 相邻节点之间的可靠数据传输 以太网 (802.3)、WiFi (802.11)
第 1 层 Physical layer 物理层 物理数据传输介质 电气、光学和无线信号

TCP/IP

网络架构演进解析 在完成ISO OSI参考模型的理论学习后,我们将转向实际应用的TCP/IP协议体系。该模型由传输控制协议(TCP)和互联网协议(IP)构成核心,系美国国防部(DoD)于20世纪70年代主导研发。

关键技术特性解析:

  1. 军事级容错设计 您可能会问:为何国防部要开发该模型?其核心优势在于实现网络的"去中心化生存能力"——即使部分节点因军事打击失效,网络仍可维持基本通信能力。
  2. 自适应路由机制 这种韧性源于动态路由协议的设计创新,通过OSPF、BGP等协议实时感知网络拓扑变化,智能调整数据包传输路径(参见RFC 791/793)。

在我们介绍 ISO OSI 模型时,我们从下到上,从第 1 层到第 7 层。在这个任务中,让我们从不同的角度,从上到下看事情。从上到下,我们有:

Application Layer 应用层 :OSI 模型应用层、表示层和会话层,即第 5、6 和 7 层,在 TCP/IP 模型中被分组到应用层中。

Transport Layer 传输层 :这是第 4 层。

Internet Layer Internet 层 :这是第 3 层。OSI 模型的网络层在 TCP/IP 模型中称为 Internet 层。

**Link Layer 链接层 **:这是第 2 层。

下表显示了 TCP/IP 模型层如何映射到 ISO/OSI 模型层。

层数 ISO OSI 模型 TCP/IP 模型 (RFC 1122) 协议
7 Application Layer 应用层 Application Layer 应用层 HTTP, HTTPS, FTP, POP3, SMTP, IMAP, Telnet, SSH, HTTP、HTTPS、FTP、POP3、SMTP、IMAP、Telnet、SSH
6 Presentation Layer 表示层
5 Session Layer 会话层
4 Transport Layer 传输层 Transport Layer 传输层 TCP, UDP TCP、UDP
3 Network Layer 网络层 Internet Layer Internet 层 IP, ICMP, IPSec IP、ICMP、IPSec
2 Data Link Layer 数据链路层 Link Layer 链接层 Ethernet 802.3, WiFi 802.11 以太网 802.3、WiFi 802.11
1 Physical Layer 物理层

许多现代网络教科书将 TCP/IP 模型显示为 5 层而不是 4 层。例如,在《计算机网络:自上而下的方法第 8 版》中,Kurose 和 Ross 通过包括物理层来描述以下五层 Internet 协议堆栈:

  • Application 应用
  • Transport 运输
  • Network 网络
  • Link 链接
  • Physical 物理的

IP和子网

当您听到 IP 地址这个词时,您可能会想到 192.168.0.1 之类的地址或不太常见的地址,例如 172.16.159.243。在这两种情况下,你都是对的。这两个地址都是 IP 地址;IPv4(IP 版本 4)地址。

网络上的每台主机都需要一个唯一标识符,以便其他主机与他通信。如果没有唯一标识符,则无法找到没有歧义的主机。使用 TCP/IP 协议套件时,我们需要为连接到网络的每个设备分配一个 IP 地址。

IP 地址的一个类比是您的家庭邮政地址。您的邮政地址可让您接收来自世界各地的信件和包裹。此外,它可以毫不含糊地识别您的家;否则,您将无法在线购物!

您可能已经知道,我们有 IPv4 和 IPv6(IP 版本 6)。IPv4 仍然是最常见的,每当你看到提到 IP 的文本而没有版本时,我们预计它们指的是 IPv4。

那么,什么是 IP 地址?一个 IP 地址由四个八位字节组成,即 32 位。作为 8 位,八位字节允许我们表示 0 到 255 之间的十进制数。IP 地址如下图所示。

image-20250407233841627

IPv4地址规范解析 简而言之,IPv4地址段中0与255作为保留地址使用:

网络标识地址

  • 示例:192.168.1.0 代表C类网络的基准地址

广播通信地址

  • 示例:192.168.1.255 作为广播地址,向该地址发送数据将覆盖网络内所有主机

地址容量计算原理:

  • 理论最大值:基于32位地址空间(2³²)得出约43亿(4,294,967,296)个地址
  • 实际可用量:需扣除各子网的网络地址与广播地址(如示例中的.0和.255)

查找网络配置

可以使用命令 ipconfig 在 MS Windows 命令行上查找您的 IP 地址。在基于 Linux 和 UNIX 的系统上,您可以发出命令 ifconfigip address show,该命令可以键入 ip a s。在下面的终端窗口中,我们显示 ifconfig

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
user@TryHackMe$ ifconfig
[...]
wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.66.89  netmask 255.255.255.0  broadcast 192.168.66.255
        inet6 fe80::73e1:ca5e:3f93:b1b3  prefixlen 64  scopeid 0x20<link>
        ether cc:5e:f8:02:21:a7  txqueuelen 1000  (Ethernet)
        RX packets 19684680  bytes 18865072842 (17.5 GiB)
        RX errors 0  dropped 364  overruns 0  frame 0
        TX packets 14439678  bytes 8773200951 (8.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

上面的 terminal 输出指示以下内容:

  • 主机(笔记本电脑)的 IP 地址是 192.168.66.89
  • 子网掩码为 255.255.255.0
  • 广播地址为 192.168.66.255

让我们使用 ip a s 来比较网卡 IP 地址的显示方式

1
2
3
4
5
6
7
8
9
user@TryHackMe$ ip a s
[...]
4: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether cc:5e:f8:02:21:a7 brd ff:ff:ff:ff:ff:ff
    altname wlp3s0
    inet 192.168.66.89/24 brd 192.168.66.255 scope global dynamic noprefixroute wlo1
       valid_lft 36795sec preferred_lft 36795sec
    inet6 fe80::73e1:ca5e:3f93:b1b3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

上面的 terminal 输出指示以下内容:

  • 主机(笔记本电脑)的 IP 地址是 192.168.66.89/24
  • 广播地址为 192.168.66.255

如果您想知道,子网掩码 255.255.255.0 也可以写为 /24/24 表示 IP 地址中最左边的 24 位在整个网络(即子网)中不会更改。换句话说,最左边的三个八位字节在整个子网中是相同的;因此,我们可以期望找到从 192.168.66.1192.168.66.254 的地址。与前面提到的类似,192.168.66.0192.168.66.255 分别是网络地址和广播地址。

私有地址

当我们在解释 IP 地址时,值得一提的是,对于大多数实际目的,有两种类型的 IP 地址:

  • 公网 IP 地址
  • 私有 IP 地址

Request for Comments (RFC) 1918 定义了以下三个私有 IP 地址范围:

  • 10.0.0.0 - 10.255.255.255 (10/8)
  • 172.16.0.0 - 172.31.255.255 (172.16/12)
  • 192.168.0.0 - 192.168.255.255 (192.168/16)

我们之前提供了一个类比,指出公共 IP 地址就像您的家庭邮政地址。私有 IP 地址是不同的;最初的想法是它无法到达或从外部世界到达。它就像一个孤立的城市或大院,所有的房屋和公寓都被系统地编号,可以很容易地相互交换邮件,但不能与外界交换。要使私有 IP 地址访问 Internet,路由器必须具有公有 IP 地址,并且必须支持网络地址转换 (NAT)。在此阶段,我们不必担心了解 NAT 的工作原理,因为我们将在本模块的后面重新讨论它。

在继续之前,我建议记住私有 IP 地址范围。否则,您可能会看到 10.1.33.7172.31.33.7 等 IP 地址,并尝试从公有 IP 地址访问它。

路由

路由器就像您当地的邮局;你把邮件包裹交给他们,他们会知道如何投递。如果我们深入挖掘,您可能会将某些内容邮寄到另一个城市或国家的地址。邮局将检查地址并决定下一步寄往何处。例如,如果要离开该国,我们希望一个中央办公室处理所有国外货物。

用技术术语来说,路由器将数据包转发到适当的网络。通常,数据包在到达最终目的地之前会经过多个路由器。路由器在第 3 层运行,检查 IP 地址并将数据包转发到最佳网络(路由器),以便数据包更接近其目的地。

image-20250407235608659

UDP和TCP

IP 协议允许我们访问网络上的目标主机;主机由其 IP 地址标识。我们需要使联网主机上的进程能够相互通信的协议。有两种传输协议可以实现此目的:UDP 和 TCP。

UDP 协议

UDP(用户数据报协议)允许我们访问此目标主机上的特定进程。UDP 是一种简单的无连接协议,在传输层(即第 4 层)运行。无连接意味着它不需要建立连接。UDP 甚至没有提供一种机制来知道数据包已投递。

IP 地址标识主机;我们需要一种机制来确定发送和接收过程。这可以通过使用端口号来实现。端口号使用两个八位字节;因此,它的范围介于 1 和 65535 之间;端口 0 被保留。(数字 65535 由表达式 216 − 1 计算得出。)

一个类似于 UDP 的真实示例是标准邮件服务,没有送达确认。换句话说,不能保证已成功接收 UDP 数据包,类似于使用标准邮件发送包裹而不确认送达的情况。对于标准邮件,这意味着比带确认的邮件递送选项更便宜。对于 UDP,这意味着比提供 “确认” 的传输协议更快

TCP 协议

TCP(传输控制协议)是一种面向连接的传输协议。它使用各种机制来确保网络主机上不同进程发送的可靠数据交付。与 UDP 一样,它是一个第 4 层协议。由于面向连接,它需要先建立 TCP 连接,然后才能发送任何数据。

在 TCP 中,每个数据八位字节都有一个序列号;这使得接收方可以轻松识别丢失或重复的数据包。另一方面,接收方使用指定最后接收的八位字节的确认号来确认数据的接收。

TCP 连接是使用所谓的三次握手建立的。使用了两个标志: SYN (同步)ACK (确认)。数据包的发送方式如下:

SYN 数据包:客户端通过向服务器发送 SYN 数据包来发起连接。此数据包包含客户端随机选择的初始序列号

SYN-ACK 数据包:服务器使用 SYN-ACK 数据包响应 SYN 数据包,该数据包添加服务器随机选择的初始序列号

ACK 数据包: 当客户端发送 ACK 数据包以确认收到 SYN-ACK 数据包时,三次握手完成。

image-20250408000451140

与 UDP 类似,TCP 使用端口号标识启动或等待(侦听)连接的过程。如前所述,有效端口号的范围介于 1 和 65535 之间,因为它使用两个八位字节,并且端口 0 是保留的。

封装

在结束之前,解释另一个关键概念至关重要: 封装 。在这种情况下,封装是指每一层向接收到的数据单元添加标头(有时是尾部)并将“封装”单元发送到下一层的过程。

封装是一个基本概念,因为它允许每个层专注于其预期功能。在下图中,我们有以下四个步骤:

  1. 应用程序数据 :当用户输入他们想要发送到应用程序中的数据时,这一切都开始了。例如,您编写电子邮件或即时消息并点击发送按钮。应用程序格式化此数据,并根据使用的应用程序协议开始发送数据,使用其下面的层(传输层)。
  2. 传输协议分段或数据报 :传输层(如 TCP 或 UDP)添加适当的标头信息并创建 TCP 分段 (或 UDP 数据报 )。此段将发送到其下面的层,即网络层。
  3. 网络数据包 :网络层(即 Internet 层)将 IP 标头添加到接收到的 TCP 分段或 UDP 数据报中。然后,此 IP 数据包被发送到其下面的层,即数据链路层。
  4. 数据链路帧 :以太网或 WiFi 接收 IP 数据包并添加适当的标头尾部,从而创建一个

我们从应用程序数据开始。在传输层,我们添加 TCP 或 UDP 标头以创建 TCP 分段UDP 数据报 。同样,在网络层,我们添加适当的 IP 报头,以获取可以通过 Internet 路由的 IP 数据包 。最后,我们添加适当的标头和尾部,以在链路层获得 WiFi 或以太网

image-20250408000930650

该过程必须在接收端反转,直到提取应用程序数据。

数据包的生命周期

根据我们目前的研究,我们可以解释数据包生命周期的简化版本 。让我们考虑一下你在 TryHackMe 上搜索房间的场景。

  1. 在 TryHackMe 搜索页面上,输入搜索查询并按 Enter。
  2. 使用 HTTPS 的 Web 浏览器准备 HTTP 请求并将其推送到其下面的层,即传输层。
  3. TCP 层需要通过浏览器和 TryHackMe Web 服务器之间的三次握手建立连接。建立 TCP 连接后,它可以发送包含搜索查询的 HTTP 请求。创建的每个 TCP 分段都会发送到其下面的层,即 Internet 层。
  4. IP 层添加源 IP 地址(即您的计算机)和目标 IP 地址(即 TryHackMe Web 服务器的 IP 地址)。要使此数据包到达路由器,您的笔记本电脑会将其传送到其下方的层,即链路层。
  5. 根据协议,链路层会添加适当的链路层报头和尾部,并将数据包发送到路由器。
  6. 路由器删除链路层报头和尾部,检查 IP 目标等字段,并将数据包路由到正确的链路。每个路由器都会重复此过程,直到到达目标服务器的路由器。

然后,当数据包到达目标网络的路由器时,这些步骤将相反。在介绍其他协议时,我们将重新审视此练习并创建更深入的版本。

远程登陆

TELNET (Teletype Network) 协议是一种用于远程终端连接的网络协议。简而言之,telnet 是一种 TELNET 客户端,允许您连接到远程系统并与之通信,并发出文本命令。虽然最初它用于远程管理,但我们可以使用 telnet 连接到任何监听 TCP 端口号的服务器。

在目标虚拟机上,正在运行不同的服务。我们将试验其中的三个:

  • Echo server:此服务器会回显您发送的所有内容。默认情况下,它侦听端口 7。
  • aytime server:此服务器默认侦听端口 13 并回复当前日期和时间。
  • Web (HTTP) 服务器:默认情况下,此服务器侦听 TCP 端口 80 并提供网页。

在继续之前,我们应该提到 echo 和 daytime 服务器被视为安全风险,不应运行;但是,我们显式启动它们是为了演示使用 Telnet 与服务器的通信。在下面的终端中,我们连接到位于 echo 服务器的 TCP 端口号 7 的目标 VM。要关闭连接,请按 CTRL + ] 键同时。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
user@TryHackMe$ telnet 10.10.118.233 7
telnet 10.10.118.233 7
Trying 10.10.118.233...
Connected to 10.10.118.233.
Escape character is '^]'.
Hi
Hi
How are you?
How are you?
Bye
Bye
^]

telnet> quit
Connection closed.

在下面的终端中,我们使用 telnet 连接到在端口 13 监听的日间服务器。我们注意到,一旦返回当前日期和时间,连接就会关闭。

1
2
3
4
5
6
user@TryHackMe$ telnet 10.10.118.233 13
Trying 10.10.118.233...
Connected to 10.10.118.233.
Escape character is '^]'.
Thu Jun 20 12:36:32 PM UTC 2024
Connection closed by foreign host.

最后,让我们使用 telnet 请求一个网页。连接 80 端口后,需要发出命令 GET / HTTP/1.1 并确定任何内容的去向主机,例如 Host: telnet.thm。接下来,您需要按两次 Enter 键,使最后一个输入行为空行。下面的输出显示了交换。(该页面已被编辑。)

注意 :发送信息后,您可能必须按 Enter,以免您没有收到回复。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
user@TryHackMe$ telnet 10.10.118.233 80
Trying 10.10.118.233...
Connected to 10.10.118.233.
Escape character is '^]'.
GET / HTTP/1.1
Host: telnet.thm

HTTP/1.1 200 OK
Content-Type: text/html
[...]

Connection closed by foreign host.
使用 Hugo 构建
主题 StackJimmy 设计