菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

网络安全 网络传输


深入的传输层和链接层

计算机系统通常需要与其他系统进行通信;这是通过将它们置于同一网络上来实现的。有许多不同的技术可以使计算机在不同类型的网络上进行通信。在本节中,我们将深入探讨大多数网络中使用的协议。

我们使用的网络由多个协议组成,其中一些在本课程中有所介绍。网络中还有许多其他协议在使用,所有这些协议都有可能带来安全风险。


TCP (“传输控制协议”)

就像 IP 使用 IP 地址进行寻址一样,TCP 和 UDP 也使用端口。端口,表示为 0 到 65535 之间的数字,决定了哪个网络服务应该处理请求。 

在下面的图片中,我们可以看到一个 TCP 数据包,以及任何人在网络上检查流量时会看到它的样子。

TCP Header

我们可以看到图形显示了源端口和目标端口各 16 位,UDP 也一样。序列号和确认号用于三次握手和可靠地传输数据。我们还可以看到用于指示数据包类型的控制位。其他头部也起着重要作用,但超出了安全课程的范围。


TCP 三次握手

TCP 使用三次握手来允许两个系统进行通信。握手使用 32 位 PRNG(“伪随机数生成器”)数字来建立握手。握手强制双方都打算进行通信。

这是一张说明图

TCP Handshake

TCP 如何进行通信的说明

  1. 客户端通过发送一个头部中的控制位 SYN 设置的数据包来启动通信,在序列号字段中包含一个 PRNG 数字,并指定目标端口。网络层(第 3 层)允许数据包发送到远程系统。此数据包称为 SYN 数据包。
  2. 服务器接收数据包,读取来自客户端的序列号并构造响应。响应在确认字段中包含客户端的序列号加上 1。此外,响应包含 SYN 和 ACK 控制位,序列号设置为服务器的 PRNG 数字。此数据包称为 SYN/ACK 数据包。
  3. 客户端接收 SYN-ACK 数据包,并为了完成握手,返回一个设置了 ACK 控制位的数据包。最后一个数据包还通过在头部的确认字段中返回服务器的 PRNG 数字来确认它。

这个过程通常被称为 SYN、SYN/ACK、ACK 三次握手。

在下面的图片中,我们可以看到两个主机正在执行三次握手: 

Handshake in Wireshark

屏幕截图显示了使用 Wireshark 工具捕获和检查数据包。Wireshark 是一个非常有用的实用工具,因为它允许我们可视化数据包并进行更深入的检查。屏幕截图显示了代表三次握手的 3 个数据包。注意源列和目标列,它们代表正在通信的两个方。Info 字段显示源端口和目标端口,包括(方括号内)SYN、SYN/ACK 和 ACK。

下一个屏幕截图显示了三次握手后各方之间通信的数据。TCP 数据包中的数据在图片底部附近被高亮显示。 

TCP Data

截图显示了一条发给 W3School 学生的问候。您能看到它吗?



欺骗流量

如今,网络对任何人以他们想要的方式创建数据包几乎没有任何限制。任何人都可以创建具有任意头部字段值的任意数据包。这被称为欺骗,允许攻击者代表他人发送流量。

Spoofing

TCP 在协议中内置了安全性,但这依赖于 PRNG(“伪随机数生成器”)数字生成器的强度。如果通信双方的序列号可以被猜测,TCP 的安全性可能会受到损害,因为攻击者可以通过 TCP 进行欺骗通信。

许多协议很容易被欺骗,但 TCP 提供了一些抵抗能力。UDP 和 ICMP 等协议不提供类似的保护。

欺骗数据包通常由具有 root / 系统权限的攻击者执行,即操作系统上的最高权限。原因是操作系统强制使用 API,迫使用户遵守 RFC(“请求意见书”)中指定的通信规则。如果攻击者没有最高权限,他们将无法在网络上创建自己的数据包。


UDP (“用户数据报协议”)

UDP 用于不需要 TCP 的弹性和安全性的流量,通常是 VOIP 等应用程序,但在现代世界中,越来越多的应用程序使用 UDP 来支持具有内置弹性和安全性的快速数据包传输,这些功能已集成到 OSI 模型的更高层;QUIC 就是一个例子。

查看 UDP 头部,我们可以看到相同的源端口和目标端口,但没有序列号或控制位。该协议的开销少得多,从而实现了更快的数据传输。

UDP Header

由于 UDP 没有三次握手等功能,UDP 很容易被欺骗。


交换式网络

系统通过交换机连接到 LAN(“局域网”)。交换机使用 MAC(“媒体访问控制”)地址进行寻址,而不是更广为人知的 IP 地址。交换机在局域网上传输流量,例如您的家庭网络或组织内的分支机构。MAC 地址被设计为唯一的,但只要管理员有权限,任何人都可以更改他们的 MAC 地址。

MAC 地址由 6 个八位字节定义,例如:FC:F8:AE:12:34:56

前三个八位字节代表制造通信设备的组织,称为 OUI(“组织唯一标识符”)。上面的 MAC 地址分配给了 Intel 公司。您可以在许多地方搜索 MAC 地址,例如:https://www.adminsub.net/mac-address-finder/intel。

后三个八位字节由制造商确定。


ARP

ARP(“地址解析协议”)是允许计算机系统知道哪个 MAC 地址属于哪个 IP 地址的协议。如果流量需要路由,计算机系统将把流量转发到系统上配置的默认网关。

ARP 像 DNS 一样,是一种将一个地址解析为另一个地址的协议。每当系统尝试与 LAN 上的 IP 地址通信时,它都会检查其 ARP 缓存,以查看最近是否解析过。

您可以检查自己的 ARP。只需在 Linux 或 Windows 上运行命令 arp -a。这会显示您的系统最近与哪些系统通信过。

Alice:有人知道 192.168.10.10 的 MAC 地址吗?
Bob:当然了 Alice,这是我的 MAC 地址。

VLAN(“虚拟局域网”)

VLAN,通常称为私有 VLAN,是一种交换机将标签(或 VLAN ID)嵌入帧中的方式。多个交换机然后可以确保 LAN 上的计算机系统只能与某些其他系统通信,即与具有相同 VLAN ID 的其他系统通信。



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持