Menu
×
   ❮   
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 地址被分配给英特尔公司。您可以在许多地方搜索 MAC 地址,例如:https://www.adminsub.net/mac-address-finder/intel。

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


ARP

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

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

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

爱丽丝:有人知道 192.168.10.10 的 MAC 地址吗?
鲍勃:当然,爱丽丝,这是我的 MAC 地址。

VLAN(“虚拟局域网”)

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



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.