OSI
please do not throw spinach pizza away
Layer 1: Physical Layer
物理层处理设备之间的物理连接;这包括介质 (如线路) 以及二进制数字 0 和 1 的定义。数据传输可以通过电、光学或无线信号进行。因此,我们需要数据线或天线,具体取决于我们的物理介质。
Layer 2: Data Link Layer
数据链路层,代表实现同一网段节点之间数据传输的协议。让我们用更简单的术语来表达。数据链路层描述了同一网段上不同系统之间关于如何通信的协议。网段是指使用共享介质或通道进行信息传输的一组联网设备。例如,假设公司办公室有 10 台计算机连接到网络交换机;那是一个网段。
第 2 层的示例包括以太网(即 802.3)和 WiFi(即 802.11)。以太网和 WiFi 地址为 6 个字节。它们的地址称为 MAC 地址,其中 MAC 代表媒体访问控制。它们通常以十六进制格式表示,每两个字节之间用冒号分隔。最左边的三个字节标识供应商。
Layer 3: Network Layer
网络层,关注在不同网络之间发送数据。用更专业的术语来说,网络层处理逻辑寻址和路由,即找到在不同网络之间传输网络数据包的路径。
在数据链路层,我们给出了一个公司办公室有 10 台计算机的示例,其中数据链路层负责在它们之间提供连接。假设这家公司在多个办事处,分布在不同的城市、国家甚至大洲。网络层负责将不同的办公室连接在一起。
下面的网络显示计算机 A 和 B 已连接,尽管位于不同的网络上。您还可以注意到连接两台计算机的两条路径;网络层将通过其认为更好的路径路由网络数据包。
网络层的示例包括 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年代主导研发。
关键技术特性解析:
- 军事级容错设计 您可能会问:为何国防部要开发该模型?其核心优势在于实现网络的"去中心化生存能力"——即使部分节点因军事打击失效,网络仍可维持基本通信能力。
- 自适应路由机制 这种韧性源于动态路由协议的设计创新,通过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 地址如下图所示。
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 的系统上,您可以发出命令 ifconfig
或 ip address show
,该命令可以键入 ip a s
。在下面的终端窗口中,我们显示 ifconfig
。
|
|
上面的 terminal 输出指示以下内容:
- 主机(笔记本电脑)的 IP 地址是
192.168.66.89
- 子网掩码为
255.255.255.0
- 广播地址为
192.168.66.255
让我们使用 ip a s
来比较网卡 IP 地址的显示方式
|
|
上面的 terminal 输出指示以下内容:
- 主机(笔记本电脑)的 IP 地址是
192.168.66.89/24
- 广播地址为
192.168.66.255
如果您想知道,子网掩码 255.255.255.0
也可以写为 /24
。/24
表示 IP 地址中最左边的 24 位在整个网络(即子网)中不会更改。换句话说,最左边的三个八位字节在整个子网中是相同的;因此,我们可以期望找到从 192.168.66.1
到 192.168.66.254
的地址。与前面提到的类似,192.168.66.0
和 192.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.7
或 172.31.33.7
等 IP 地址,并尝试从公有 IP 地址访问它。
路由
路由器就像您当地的邮局;你把邮件包裹交给他们,他们会知道如何投递。如果我们深入挖掘,您可能会将某些内容邮寄到另一个城市或国家的地址。邮局将检查地址并决定下一步寄往何处。例如,如果要离开该国,我们希望一个中央办公室处理所有国外货物。
用技术术语来说,路由器将数据包转发到适当的网络。通常,数据包在到达最终目的地之前会经过多个路由器。路由器在第 3 层运行,检查 IP 地址并将数据包转发到最佳网络(路由器),以便数据包更接近其目的地。
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 数据包时,三次握手完成。
与 UDP 类似,TCP 使用端口号标识启动或等待(侦听)连接的过程。如前所述,有效端口号的范围介于 1 和 65535 之间,因为它使用两个八位字节,并且端口 0 是保留的。
封装
在结束之前,解释另一个关键概念至关重要: 封装 。在这种情况下,封装是指每一层向接收到的数据单元添加标头(有时是尾部)并将“封装”单元发送到下一层的过程。
封装是一个基本概念,因为它允许每个层专注于其预期功能。在下图中,我们有以下四个步骤:
- 应用程序数据 :当用户输入他们想要发送到应用程序中的数据时,这一切都开始了。例如,您编写电子邮件或即时消息并点击发送按钮。应用程序格式化此数据,并根据使用的应用程序协议开始发送数据,使用其下面的层(传输层)。
- 传输协议分段或数据报 :传输层(如 TCP 或 UDP)添加适当的标头信息并创建 TCP 分段 (或 UDP 数据报 )。此段将发送到其下面的层,即网络层。
- 网络数据包 :网络层(即 Internet 层)将 IP 标头添加到接收到的 TCP 分段或 UDP 数据报中。然后,此 IP 数据包被发送到其下面的层,即数据链路层。
- 数据链路帧 :以太网或 WiFi 接收 IP 数据包并添加适当的标头和尾部,从而创建一个帧 。
我们从应用程序数据开始。在传输层,我们添加 TCP 或 UDP 标头以创建 TCP 分段或 UDP 数据报 。同样,在网络层,我们添加适当的 IP 报头,以获取可以通过 Internet 路由的 IP 数据包 。最后,我们添加适当的标头和尾部,以在链路层获得 WiFi 或以太网帧。
该过程必须在接收端反转,直到提取应用程序数据。
数据包的生命周期
根据我们目前的研究,我们可以解释数据包生命周期的简化版本 。让我们考虑一下你在 TryHackMe 上搜索房间的场景。
- 在 TryHackMe 搜索页面上,输入搜索查询并按 Enter。
- 使用 HTTPS 的 Web 浏览器准备 HTTP 请求并将其推送到其下面的层,即传输层。
- TCP 层需要通过浏览器和 TryHackMe Web 服务器之间的三次握手建立连接。建立 TCP 连接后,它可以发送包含搜索查询的 HTTP 请求。创建的每个 TCP 分段都会发送到其下面的层,即 Internet 层。
- IP 层添加源 IP 地址(即您的计算机)和目标 IP 地址(即 TryHackMe Web 服务器的 IP 地址)。要使此数据包到达路由器,您的笔记本电脑会将其传送到其下方的层,即链路层。
- 根据协议,链路层会添加适当的链路层报头和尾部,并将数据包发送到路由器。
- 路由器删除链路层报头和尾部,检查 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
+ ]
键同时。
|
|
在下面的终端中,我们使用 telnet
连接到在端口 13 监听的日间服务器。我们注意到,一旦返回当前日期和时间,连接就会关闭。
|
|
最后,让我们使用 telnet
请求一个网页。连接 80 端口后,需要发出命令 GET / HTTP/1.1
并确定任何内容的去向主机,例如 Host: telnet.thm
。接下来,您需要按两次 Enter
键,使最后一个输入行为空行。下面的输出显示了交换。(该页面已被编辑。)
注意 :发送信息后,您可能必须按 Enter
,以免您没有收到回复。
|
|