网络通信入门

我们一直听说,要进行渗透测试,渗透测试人员必须了解基本的网络概念,如 IP 地址、有类子网划分、无类子网划分、端口和广播网络。第一个原因是,哪些主机在批准范围内处于活动状态,以及它们开放并响应哪些服务、端口和功能,这些活动将决定评估人员在渗透测试中要执行哪种活动。环境不断变化,系统经常重新分配。因此,旧的漏洞很可能会再次出现,如果没有良好的网络扫描知识,可能会发生必须重新进行初始扫描的情况。在后续章节中,我们将讨论网络通信的基础知识。

参考模型

参考模型提供了一种标准化方法,这种方法在全世界范围内都适用,因为使用计算机网络的人位于广泛的物理范围内,他们的网络设备可能具有异构架构。为了实现异构设备之间的通信,我们需要一个标准化模型,即参考模型,该模型将为我们提供这些设备通信的方式。

我们有两个参考模型,例如 OSI 模型和 TCP/IP 参考模型。但是,OSI 模型是假设的,而 TCP/IP 是实用的模型。

OSI 模型

开放系统接口由国际标准化组织 (ISO) 设计,因此也称为 ISO-OSI 模型。

OSI 模型由七层组成,如下图所示。每一层都有特定的功能,但每一层都为上一层提供服务。

OSI 模型

物理层

物理层负责以下活动 −

  • 激活、维护和停用物理连接。

  • 定义传输所需的电压和数据速率。

  • 将数字位转换为电信号。

  • 确定连接是单工、半双工还是全双工。

数据链路层

数据链路层执行以下功能 −

  • 执行对通过物理链路传输的信息进行同步和错误控制。

  • 启用错误检测,并将错误检测位添加到要传输的数据中。

网络层

网络层执行以下功能 −

  • 通过各种通道将信号路由到另一端。

  • 通过决定数据应采用哪条路由来充当网络控制器。

  • 将传出的消息分成数据包,并将传入的数据包组装成消息以供更高级别使用。

传输层

传输层执行以下功能 −

  • 它决定数据传输是否应在并行路径或单路径上进行。

  • 它执行多路复用,拆分数据。

  • 它将数据组分解为更小的单元,以便网络层更有效地处理它们。

传输层保证从一端到另一端的数据传输。

会话层

会话层执行以下功能 −

  • 管理消息并同步两个不同应用程序之间的对话。

  • 它控制登录和注销、用户识别、计费和会话管理。

表示层

表示层执行以下功能 −

  • 此层确保信息以接收系统能够理解和使用的形式传递。

应用层

应用层执行以下功能 −

  • 它提供不同的服务,例如以多种方式处理信息、重新传输信息文件、分发结果等。

  • 应用层还执行登录或密码检查等功能。

TCP/IP 模型

传输控制协议和 Internet 协议 (TCP/IP) 模型是一种实用模型,用于 Internet。

TCP/IP 模型将两层(物理层和数据链路层)合并为一层 - 主机到网络层。下图显示了 TCP/IP 模型的各个层 −

TCP/IP 模型

应用层

此层与 OSI 模型相同,并执行以下功能 −

  • 它提供不同的服务,例如以多种方式处理信息、重新传输信息文件、分发结果等。

  • 应用层还执行登录或密码检查等功能。

  • 以下是应用层使用的不同协议 −

    • TELNET
    • FTP
    • SMTP
    • DN
    • HTTP
    • NNTP

传输层

它的功能与 OSI 模型中的传输层相同。考虑以下与传输层相关的要点 −

  • 它使用 TCP 和 UDP 协议进行端到端传输。

  • TCP 是一种可靠且面向连接的协议。

  • TCP 还处理流量控制。

  • UDP 不可靠,无连接协议不执行流量控制。

  • 此层采用 TCP/IP 和 UDP 协议。

Internet 层

此层的功能是允许主机将数据包插入网络,然后使它们独立传输到目的地。但是,接收数据包的顺序可能与发送数据包的顺序不同。

Internet 层采用 Internet 协议 (IP)。

主机到网络层

这是 TCP/IP 模型中的最低层。主机必须使用某种协议连接到网络,以便可以通过网络发送 IP 数据包。此协议因主机和网络而异。

此层使用的不同协议包括 −

  • ARPANET
  • SATNET
  • LAN
  • 分组无线电

有用的架构

以下是一些用于网络通信的有用架构 −

以太网帧架构

1973 年,一位名叫 Robert Metcalfe 的工程师首次发明了以太网,该网络根据 IEEE 标准 802.3 定义。它最初用于工作站和打印机之间的互连和发送数据。超过 80% 的 LAN 使用以太网标准,因为它速度快、成本低、安装方便。另一方面,如果我们谈论帧,那么数据以这种方式从主机传输到主机。帧由各种组件组成,例如 MAC 地址、IP 报头、开始和结束分隔符等。

以太网帧以前导码和 SFD 开头。以太网报头包含源 MAC 地址和目标 MAC 地址,之后是帧的有效载荷。最后一个字段是 CRC,用于检测错误。基本以太网帧结构在 IEEE 802.3 标准中定义,解释如下 −

以太网 (IEEE 802.3) 帧格式

以太网数据包将以太网帧作为其有效载荷进行传输。以下是以太网帧的图形表示以及每个字段的描述 −

字段名称 前导码 SFD(帧起始分隔符) 目标 MAC 源 MAC 类型 数据 CRC
大小(以字节为单位) 7 1 6 6 2 46-1500 4

前导码

以太网帧前面有一个 7 字节大小的前导码,用于通知接收系统帧即将开始,并允许发送方和接收方建立位同步。

SFD(帧起始分隔符)

这是一个 1 字节字段,用于表示目标 MAC 地址字段从下一个字节开始。有时,SFD 字段被视为前导码的一部分。这就是为什么前导码在许多地方被视为 8 个字节的原因。

  • 目标 MAC − 这是一个 6 字节字段,其中有接收系统的地址。

  • 源 MAC −这是一个 6 字节字段,其中有发送系统的地址。

  • 类型 − 它定义帧内的协议类型。例如,IPv4 或 IPv6。其大小为 2 个字节。

  • 数据 − 这也称为有效负载,实际数据插入此处。其长度必须在 46-1500 字节之间。如果长度小于 46 字节,则添加填充 0 以满足最小可能长度,即 46。

  • CRC(循环冗余校验) −这是一个包含 32 位 CRC 的 4 字节字段,可用于检测损坏的数据。

扩展以太网帧(以太网 II 帧)格式

以下是扩展以太网帧的图形表示,使用该帧我们可以获得大于 1500 字节的有效负载 −

字段名称 目标 MAC 源 MAC 类型 DSAP SSAP Ctrl 数据 CRC
大小(以字节为单位) 6 6 2 1 1 1 >46 4

与 IEEE 802.3 以太网帧不同的字段描述如下 −

DSAP(目标服务访问点)

DSAP 是一个 1 字节长的字段,表示要接收消息的网络层实体的逻辑地址。

SSAP(源服务访问点)

SSAP 是一个 1 字节长的字段,表示创建消息的网络层实体的逻辑地址。

Ctrl

这是一个 1 字节的控制字段。

IP 数据包架构

Internet 协议是 TCP/IP 协议套件中的主要协议之一。该协议在 OSI 模型的网络层和 TCP/IP 模型的 Internet 层工作。因此,该协议负责根据主机的逻辑地址识别主机,并通过底层网络在主机之间路由数据。IP 提供了一种通过 IP 寻址方案唯一标识主机的机制。IP 使用尽力而为的交付方式,即它不保证数据包会被交付到目的地主机,但它会尽力到达目的地。

在后续章节中,我们将了解 IP 的两个不同版本。

IPv4

这是 Internet 协议版本 4,使用 32 位逻辑地址。以下是 IPv4 标头的图表以及字段 − 的描述

IPv4

版本

这是使用的 Internet 协议的版本;例如 IPv4。

IHL

Internet 报头长度;整个 IP 报头的长度。

DSCP

差分服务代码点;这是服务类型。

ECN

显式拥塞通知;它携带有关路由中看到的拥塞的信息。

总长度

整个 IP 数据包的长度(包括 IP 报头和 IP 有效负载)。

标识

如果 IP 数据包在传输过程中被分段,则所有分段都包含相同的标识号。

标志

根据网络资源的要求,如果 IP 数据包太大而无法处理,这些"标志"会告诉它们是否可以分段。在此 3 位标志中,MSB 始终设置为"0"。

片段偏移

此偏移量指示片段在原始 IP 数据包中的确切位置。

生存时间

为了避免网络中出现循环,每个数据包在发送时都会设置一些 TTL 值,该值会告诉网络此数据包可以跨越多少个路由器(跳数)。在每一跳,其值都会减一,当值达到零时,数据包将被丢弃。

协议

告诉目标主机的网络层此数据包属于哪种协议,即下一级协议。例如,ICMP 的协议号为 1,TCP 为 6,UDP 为 17。

报头校验和

此字段用于保存整个报头的校验和值,然后用于检查数据包是否无错误接收。

源地址

数据包发送方(或源)的 32 位地址。

目标地址

数据包接收方(或目标)的 32 位地址。

选项

这是一个可选字段,如果 IHL 的值大于 5,则使用该字段。这些选项可能包含安全、记录路由、时间戳等选项的值。

如果您想详细研究 IPv4,请参考此链接 - www.tutorialspoint.com/ipv4/index.htm

IPv6

Internet 协议版本 6 是最新的通信协议,其前身 IPv4 工作在网络层(第 3 层)。除了提供大量逻辑地址空间外,该协议还具有充足的功能,可解决 IPv4 的缺点。以下是 IPv4 标头的图表以及字段的描述 −

IPv6

版本(4 位)

它代表 Internet 协议的版本 — 0110。

流量类别(8 位)

这 8 位分为两部分。最高 6 位用于服务类型,让路由器知道应为该数据包提供哪些服务。最低 2 位用于显式拥塞通知 (ECN)。

流标签 (20 位)

此标签用于维护属于通信的数据包的顺序流。源标记序列以帮助路由器识别特定数据包属于特定信息流。此字段有助于避免数据包重新排序。它专为流媒体/实时媒体而设计。

有效载荷长度 (16 位)

此字段用于告诉路由器特定数据包的有效载荷中包含多少信息。有效载荷由扩展头和上层数据组成。使用 16 位,最多可以指示 65535 个字节;但如果扩展报头包含逐跳扩展报头,则有效负载可能超过 65535 字节,并且此字段设置为 0。

下一个报头(8 位)

此字段用于指示扩展报头的类型,或者如果扩展报头不存在,则指示上层 PDU。上层 PDU 类型的值与 IPv4 相同。

跳跃限制(8 位)

此字段用于阻止数据包在网络中无限循环。这与 IPv4 中的 TTL 相同。跳跃限制字段的值在通过链路(路由器/跳跃)时减 1。当该字段达到 0 时,数据包将被丢弃。

源地址(128 位)

此字段表示数据包的发起者的地址。

目标地址(128 位)

此字段提供数据包预期接收者的地址。

如果您想详细研究 IPv6,请参考此链接 — www.tutorialspoint.com/ipv6/index.htm

TCP(传输控制协议)报头架构

众所周知,TCP 是一种面向连接的协议,在开始通信之前,两个系统之间会建立会话。通信完成后,连接将关闭。TCP 使用三次握手技术在两个系统之间建立连接套接字。三次握手意味着在两个系统之间来回发送三条消息 — SYN、SYN-ACK 和 ACK。两个系统(发起系统和目标系统)之间的工作步骤如下 −

步骤 1 − 设置了 SYN 标志的数据包

首先,尝试发起连接的系统从设置了 SYN 标志的数据包开始。

步骤 2 −带有 SYN-ACK 标志设置的数据包

现在,在此步骤中,目标系统返回带有 SYN 和 ACK 标志设置的数据包。

步骤 3 − ACK 标志已设置的数据包

最后,发起系统将向原始目标系统返回一个设置了 ACK 标志的数据包。

以下是 TCP 标头的图表以及字段说明 −

设置了 ACK 标志的 TCP 数据包

源端口(16 位)

它标识发送设备上应用程序进程的源端口。

目标端口(16 位)

它标识接收设备上应用程序进程的目标端口。

序列号(32 位)

数据包中段的数据字节的序列号会话。

确认号(32 位)

当设置 ACK 标志时,此数字包含预期数据字节的下一个序列号,并作为对先前收到的数据的确认。

数据偏移量(4 位)

此字段表示 TCP 标头的大小(32 位字)和当前数据包中整个 TCP 段的数据偏移量。

保留(3 位)

保留以备将来使用,默认设置为零。

标志(每个 1 位)

  • NS −显式拥塞通知信令过程使用此 Nonce Sum 位。

  • CWR − 当主机接收到设置了 ECE 位的数据包时,它会设置拥塞窗口减少以确认已收到 ECE。

  • ECE − 它有两个含义 −

    • 如果 SYN 位清除为 0,则 ECE 表示 IP 数据包已设置其 CE(拥塞体验)位。

    • 如果 SYN 位设置为 1,则 ECE 表示设备具有 ECT 功能。

  • URG − 它表示紧急指针字段具有重要数据并且应该进行处理。

  • ACK −它表示确认字段有意义。如果 ACK 被清除为 0,则表示数据包不包含任何确认。

  • PSH − 设置时,它是对接收站的请求,要求将数据(一到达)推送到接收应用程序而不对其进行缓冲。

  • RST − 重置标志具有以下特点 −

    • 它用于拒绝传入连接。

    • 它用于拒绝一个段。

    • 它用于重新启动连接。

  • SYN − 此标志用于在主机之间建立连接。

  • FIN − 此标志用于释放连接,此后不再交换数据。由于带有 SYN 和 FIN 标志的数据包具有序列号,因此它们将按正确的顺序进行处理。

Windows Size

此字段用于两个站之间的流量控制,并指示接收器为段分配的缓冲区量(以字节为单位),即接收器期望多少数据。

  • 校验和 −此字段包含报头、数据和伪报头的校验和。

  • 紧急指针 − 如果 URG 标志设置为 1,则指向紧急数据字节。

  • 选项 − 它有助于提供常规报头未涵盖的附加选项。选项字段始终以 32 位字描述。如果此字段包含的数据少于 32 位,则使用填充来覆盖剩余位以达到 32 位边界。

如果您想详细研究 TCP,请参考此链接 — https://www.tutorialspoint.com/data_communication_computer_network/transmission_control_protocol.htm

UDP(用户数据报协议)报头架构

UDP 是一种简单的无连接协议,与面向连接的协议 TCP 不同。它涉及最少量的通信机制。在 UDP 中,接收方不会生成对已接收数据包的确认,反过来,发送方也不会等待对已发送数据包的任何确认。这个缺点使得该协议不可靠,但更易于处理。以下是UDP报头的图表以及字段说明 −

UPD

源端口

此16位信息用于标识数据包的源端口。

目标端口

此16位信息用于标识目标机器上的应用程序级服务。

长度

长度字段指定UDP数据包(包括报头)的整个长度。它是一个16位字段,最小值为8字节,即UDP报头本身的大小。

校验和

此字段存储发送方在发送前生成的校验和值。 IPv4 将此字段作为可选字段,因此当校验和字段不包含任何值时,它将被设为 0,并且其所有位都设置为零。

要详细研究 TCP,请参考此链接 — 用户数据报协议