网络通信入门
我们一直听说,要执行渗透测试,渗透测试人员必须了解基本的网络概念,例如 IP 地址、有类子网、无类子网、端口和广播网络。第一个原因是,诸如哪些主机处于批准的范围内以及它们开放和响应哪些服务、端口和功能之类的活动将决定评估人员将在渗透测试中执行什么样的活动。环境不断变化,系统经常重新分配。因此,旧的漏洞很可能会再次出现,并且如果没有良好的网络扫描知识,则可能需要重做初始扫描。在后续部分中,我们将讨论网络通信的基础知识。
参考模型
参考模型提供了一种标准化方法,这种方法在全世界范围内都可以接受,因为使用计算机网络的人们分布在广泛的物理范围内,并且他们的网络设备可能具有异构体系结构。为了提供异构设备之间的通信,我们需要一个标准化的模型,即参考模型,它可以为我们提供这些设备之间的通信方式。
我们有两个参考模型,例如 OSI 模型和 TCP/IP 参考模型。然而,OSI 模型是一个假设模型,而 TCP/IP 是一个实用模型。
开放系统互连模型
开放系统接口是由国际标准化组织(ISO)设计的,因此也称为ISO-OSI模型。
OSI 模型由七层组成,如下图所示。每一层都有特定的功能,但每一层都向上一层提供服务。
物理层
物理层负责以下活动 -
激活、维护和停用物理连接。
定义传输所需的电压和数据速率。
将数字位转换为电信号。
决定连接是单工、半双工还是全双工。
数据链路层
数据链路层执行以下功能 -
对物理链路上传输的信息进行同步和差错控制。
启用错误检测,并向要传输的数据添加错误检测位。
网络层
网络层执行以下功能 -
将信号通过各种通道路由到另一端。
充当网络控制器,决定数据应采用哪条路由。
将传出消息分成数据包,并将传入数据包组装成更高级别的消息。
传输层
传输层执行以下功能 -
它决定数据传输应该在并行路径还是单路径上进行。
它对数据执行复用、拆分。
它将数据组分解为更小的单元,以便网络层更有效地处理它们。
传输层保证数据从一端到另一端的传输。
会话层
会话层执行以下功能 -
管理消息并同步两个不同应用程序之间的对话。
它控制登录和注销、用户识别、计费和会话管理。
表示层
表示层执行以下功能 -
该层确保信息以接收系统能够理解和使用的形式传递。
应用层
应用层执行以下功能 -
它提供不同的服务,例如以多种方式操作信息、重新传输信息文件、分发结果等。
登录或密码检查等功能也由应用层执行。
TCP/IP模型
传输控制协议和互联网协议(TCP/IP)模型是一种实用模型,用于互联网中。
TCP/IP 模型将两层(物理链路层和数据链路层)合并为一层——主机到网络层。下图显示了 TCP/IP 模型的各个层 -
应用层
该层与 OSI 模型的层相同,执行以下功能 -
它提供不同的服务,例如以多种方式操作信息、重新传输信息文件、分发结果等。
应用层还执行登录或密码检查等功能。
以下是应用层使用的不同协议 -
- 远程登录
- 文件传输协议
- 邮件传输协议
- DN
- HTTP协议
- 国家结核病防治计划
传输层
它的功能与 OSI 模型中的传输层相同。考虑以下与传输层相关的要点 -
它使用TCP和UDP协议进行端到端传输。
TCP 是一种可靠且面向连接的协议。
TCP 还处理流量控制。
UDP 不可靠,无连接协议不执行流量控制。
该层采用TCP/IP 和UDP 协议。
互联网层
该层的功能是允许主机将数据包插入网络,然后使它们独立地传输到目的地。但是,接收数据包的顺序可能与发送数据包的顺序不同。
互联网层采用互联网协议(IP)。
主机到网络层
这是 TCP/IP 模型中的最低层。主机必须使用某种协议连接到网络,以便可以通过网络发送 IP 数据包。该协议因主机和网络的不同而不同。
该层使用的不同协议是 -
- 阿帕网
- 卫星网
- 局域网
- 分组无线电
有用的架构
以下是一些用于网络通信的有用架构 -
以太网帧结构
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 字节字段,可检测损坏的数据。
扩展以太网帧(Ethernet II 帧)格式
以下是扩展以太网帧的图形表示,使用它我们可以获得大于 1500 字节的有效负载 -
字段名称 | 目的地MAC地址 | 源MAC | 类型 | 数字化SAP | 安全性评估计划 | 控制键 | 数据 | CRC |
---|---|---|---|---|---|---|---|---|
大小(以字节为单位) | 6 | 6 | 2 | 1 | 1 | 1 | >46 | 4 |
与 IEEE 802.3 以太网帧不同的字段描述如下:
DSAP(目的地服务接入点)
DSAP 是一个 1 字节长的字段,表示打算接收消息的网络层实体的逻辑地址。
SSAP(源服务访问点)
SSAP 是一个 1 字节长的字段,表示创建消息的网络层实体的逻辑地址。
控制键
这是一个 1 字节的控制字段。
IP数据包架构
Internet 协议是 TCP/IP 协议族中的主要协议之一。该协议工作在 OSI 模型的网络层和 TCP/IP 模型的 Internet 层。因此,该协议负责根据主机的逻辑地址来识别主机,并通过底层网络在它们之间路由数据。IP 提供了一种通过 IP 寻址方案唯一标识主机的机制。IP采用尽力而为的传送方式,即它不保证数据包一定能传送到目的地主机,但会尽最大努力到达目的地。
在后续部分中,我们将了解两个不同版本的 IP。
IPv4
这是互联网协议版本 4,它使用 32 位逻辑地址。以下是 IPv4 标头的图表以及字段的描述 -
版本
这是所使用的互联网协议版本;例如,IPv4。
国际人道法
互联网标头长度;整个IP报头的长度。
数字化SCP
差异化服务代码点;这是服务类型。
电子通讯网络
明确的拥塞通知;它携带有关路线中所见拥塞的信息。
总长度
整个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
互联网协议版本 6 是最新的通信协议,与其前身 IPv4 一样,工作在网络层(第 3 层)。除了提供大量的逻辑地址空间之外,该协议还具有丰富的功能,可以解决 IPv4 的缺点。以下是 IPv4 标头的图表以及字段的描述 -
版本(4 位)
它代表互联网协议的版本——0110。
流量类别(8 位)
这8位分为两部分。最高有效 6 位用于服务类型,让路由器知道应向该数据包提供哪些服务。最低有效 2 位用于显式拥塞通知 (ECN)。
流标签(20 位)
该标签用于维护属于通信的数据包的顺序流。源标记序列以帮助路由器识别特定数据包属于特定信息流。该字段有助于避免数据包的重新排序。它专为流媒体/实时媒体而设计。
有效负载长度(16 位)
该字段用于告诉路由器特定数据包在其有效负载中包含多少信息。有效负载由扩展标头和上层数据组成。采用16位,最多可指示65535字节;但如果扩展头包含Hop-by-Hop扩展头,则有效负载可能超过65535字节,并且该字段设置为0。
下一个标头(8 位)
该字段要么用于指示扩展标头的类型,要么如果扩展标头不存在,则它指示上层 PDU。上层 PDU 类型的值与 IPv4 的相同。
跳数限制(8 位)
该字段用于阻止数据包在网络中无限循环。这与 IPv4 中的 TTL 相同。Hop Limit 字段的值在通过链路(路由器/跳)时减 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 标头的图表以及字段的描述 -
源端口(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 标志的数据包具有序列号,因此它们会按正确的顺序进行处理。
窗户尺寸
该字段用于两个站之间的流量控制,并指示接收器为段分配的缓冲区量(以字节为单位),即接收器期望有多少数据。
校验和- 该字段包含标头、数据和伪标头的校验和。
紧急指针- 如果 URG 标志设置为 1,则它指向紧急数据字节。
选项- 它促进了常规标头未涵盖的附加选项。选项字段始终以 32 位字描述。如果该字段包含小于 32 位的数据,则使用填充来覆盖剩余位以达到 32 位边界。
如果你想详细学习TCP,请参考这个链接 — https://www.tutorialspoint.com/data_communication_computer_network/transmission_control_protocol.htm
UDP(用户数据报协议)报头架构
UDP 是一种简单的无连接协议,与面向连接的协议 TCP 不同。它涉及最少量的通信机制。在 UDP 中,接收方不会生成对已接收数据包的确认,而发送方也不会等待对已发送数据包的任何确认。这个缺点使得该协议不可靠并且更容易处理。以下是 UDP 标头的图表以及字段的描述 -
源端口
该 16 位信息用于识别数据包的源端口。
目的端口
此 16 位信息用于识别目标计算机上的应用程序级别服务。
长度
长度字段指定UDP数据包的整个长度(包括报头)。它是一个16位字段,最小值为8字节,即UDP报头本身的大小。
校验和
该字段存储发送方在发送前生成的校验和值。IPv4 将此字段作为可选字段,因此当校验和字段不包含任何值时,它将设为 0 并且其所有位都设置为零。
要详细研究 TCP,请参考此链接 —用户数据报协议