菜单
×
   ❮   
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
     ❯   

网络安全 深入:网络层


IP - Internet Protocol

IP 用于跨网络通信,不仅仅是跨物理链路,还包括路由器之间的网络。使用的寻址方案是 IPv4(“IP 版本 4”)或 IPv6(“IP 版本 6”)。

IP 网络可以划分为不同的部分,通常称为子网。这是通过在 IP 地址信息之外添加一个额外的信息来实现的,称为子网掩码。子网掩码决定了网络的规模,以及哪个数据包在网络内部路由,哪个应该在网络外部路由。

子网掩码可以通过十进制数字或斜杠表示法表示。  使用斜杠表示法时,斜杠跟在系统的 IP 地址后面。以下是一些示例

IP 地址 斜杠表示法 子网掩码
10.0.0.1 /8   - 示例:10.0.0.1/8 255.0.0.0
172.16.1.1 /12 - 示例:172.16.1.1/12 255.240.0.0
192.168.0.1 /16 - 示例:192.168.0.1/16 255.255.0.0
192.168.0.1 /24 - 示例:192.168.0.1/24 255.255.255.0

某些 IP 网络被保留用于特定类型的流量。上面表格中的 IP 地址仅保留用于内部组织使用,这意味着它们不应在 Internet 上路由。这些类型的 IP 地址通常被称为 RFC1918 地址。


不同的网络

让我们来看看 RFC1918 中的不同网络以及它们的规模

  • 10.0.0.0/8 - 超过 1600 万个 IP 地址
  • 172.16.0.0/12 - 大约 100 万个 IP 地址
  • 192.168.0.0/16 - 65534 个 IP 地址

IP 段可以进一步划分为更小、更精细的网络。

每个网络都有一个用于向网络中的所有主机广播流量的保留地址,这称为广播地址。广播数据意味着将数据发送给网络上的所有人,而不是只发送给单个主机。有许多应用程序和协议依赖于广播流量才能正常工作。

对于每个网络段,广播地址始终是网络中的最后一个 IP 地址。例如,在 192.168.0.0/24 网络中,广播地址是 192.168.0.255。

最小的子网掩码是 255.255.255.255,表示为 /32。这个网络只有一个 IP 地址。

如果流量需要发送回主机,例如用于应用程序之间的通信,则发送到 localhost 地址。这个地址始终是 127.0.0.1,是一个 /8 网络。

在 IP 网络中,流量由路由器路由。路由器是一种网络设备,它理解 IP 格式,并且可以在网络之间转发数据包。这与交换机不同,因为交换机在网络内部转发数据,而路由器在网络之间转发。

Router and Switch

网络上的数据包带有头部,这些头部描述了我们已经在 IP 协议中讨论过的许多重要细节。IPv4 头部看起来像这样

IP Header

图片来源:作者 Michel Bakni - Postel, J. (September 1981) RFC 791, Internet Protocol, DARPA Internet Program Protocol Specification, The Internet Society, p. 11 DOI: 10.17487/RFC0791., CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=79949694

源地址是发送数据包的系统的 IP 地址,目的地是数据包的目的地。头部中还有其他字段,用于 IP 协议的许多功能,但这些超出了本入门课程的范围。

您可以通过在命令行窗口中运行命令 ipconfig 来检查 Windows 上的 IP 地址。在 Linux 上,可以使用 ip addr showifconfig 命令。

当计算机需要与局域网(LAN)上找不到的设备通信时,它会根据系统的配置将流量发送到默认网关。默认网关是能够将流量转发到目标 IP 地址的路由器。



NAT(“网络地址转换”)

NAT 允许接受公共 IP 地址连接的系统将这些请求映射到内部 RFC 1918 IP 地址,反之亦然。执行 NAT 的系统通常是防火墙和路由器。

NAT 的典型实现方式是,外部 IP 地址作为多个内部 IP 地址的前端,并且目标端口号用于决定数据应该发送到哪个服务器。这允许内部 IP 地址接收来自外部系统的流量。

NAT Port

另一种非常常见的实现方式是允许内部 IP 地址使用外部 IP 地址访问 Internet。NAT 会跟踪从内部到目标地址的连接,并在连接上传输流量。

NAT 可以配置为多种方式,但在本课程中,我们不深入探讨该方法的更多细节。

注意:NAT 使网络工程师能够更灵活地进行部署,从而能够实现许多不同的用例。

IPv6 - IP Version 6

IP 版本 6 是 IP 的最新标准,旨在支持更多 IP 地址。它使用 128 位而不是 32 位进行 IP 地址寻址。这使得在可预见的未来有足够的 IP 地址,而 IPv4 已经耗尽。

IPv6 地址使用 8 组 4 位十六进制数字。IPv6 地址看起来像这样:2a00:1450:400f:80a::200e:。请注意,它没有 8 组 4 位十六进制数字。这是因为 IPv6 地址可以通过简单的规则进行缩短

  • 前导零可以缩短
  • 双冒号 (::) 可以用来表示连续的零串。

展开后的 IPv6 地址是:2a00:1450:400f:080a:0000:0000:0000:200e。

::1 和 :: 可以简化为 localhost。

IPv6 也有网络,即子网,就像 IPv4 一样。

IPv6 头部看起来像这样

IPv6 Header

我们可以看到一个更简单的头部,并且有更多的空间用于 IP 寻址。

IPv6 的使用越来越多,并且许多工具都内置支持此协议。例如,使用 ping 命令,我们可以使用 -4 和 -6 标志分别在 IPv4 和 IPv6 之间切换。

运行 ipconfig 并查看是否看到任何 IPv6 地址。如果启用了 IPv6,请尝试 ping -6 google.comping -4 google.com。看看该命令如何允许我们使用 IPv4 或 IPv6?

注意:如果您今天还没有 IPv6,有许多公共云服务可以为您提供一个公共 IPv6 地址,您可以用于实验和探索。

ICMP

ICMP 通常与 Ping 和 Traceroute 相关联。ICMP 还可以用于其他目的,例如请求节点的时间,称为 ICMP 时间戳请求。ICMP 时间戳请求允许例如路由器请求另一台路由器同步它们的时间,这是网络通信中的一个重要属性。

攻击者检查网络上系统是否可用的常见策略是执行 Ping 扫描。这种活动的目标是让目标设备在网络范围内响应 ping 请求,以便攻击者知道它可用。这种方法很天真,因为许多系统默认会阻止传入的 ping。


Traceroute

Tracerouting 是一种确定将数据包从系统 A 发送到系统 B 所涉及的路由器的方法。了解我们的数据包经过哪些路由器对于更好地理解我们的网络以及理解攻击面都很有用。路由器负责将数据包路由到正确的方向。想象一下在道路上开车,道路上的路标会引导您到达目的地。这些路口的路标代表路由器。Traceroute 识别这些路标和路口,并告诉您它们有多远,以毫秒(ms)为单位。

IPv4 的 TTL 和 IPv6 的 Hop Limit 头部具有相同的功能。每个路由数据包的路由器都会将此值减 1,如果该值达到 0,路由器将丢弃数据包并将 ICMP Time Exceeded 数据包返回给发送者。

在 Windows 上执行 traceroute

tracert google.com

在 Linux 上执行 traceroute(默认未安装)

traceroute google.com

通过这些工具进行 tracerouting 的过程很简单

  1. 操作系统向 google.com 发送一个数据包,TTL 值设置为 1。
  2. 数据包在网络上路由,第一个路由器将 TTL 减 1,使其变为 0。这会导致路由器丢弃数据包并向源发送“ICMP Time Exceeded”消息。
  3. 客户端将 TTL 增加 1,允许数据包通过一个额外的跳数进行路由。

这个过程会重复进行,每次将 TTL 增加 1,直到到达目的地。


DNS(“Domain Name System”)

DNS 用于通过名称将应用程序映射到 IP 地址。例如,如果您想使用浏览器访问 http://google.com,浏览器必须首先向 DNS 服务器发出请求,以解析 google.com 背后的 IP 地址。

系统通常配置有主和辅域名服务器。这些设置可以手动配置,也可以由 DHCP 服务器提供。这使得我们的计算机系统能够访问 DNS 服务器以进行解析。

DNS 服务器负责解析请求。它会检查自己的缓存,看是否已经知道答案。每个 DNS 答案都可以缓存,即临时存储以加快未来的请求速度,缓存时间由一定的 TTL(“Time To Live”)决定。TTL 通常设置为几分钟,例如 10 分钟。

如果 DNS 服务器的缓存中没有答案,它将继续检查谁负责提供答案。这是通过递归过程完成的,该过程涉及询问分层名称服务器系统,最终将 DNS 请求导向权威名称服务器。

您现在可以尝试在 Windows 或 Linux 上进行 DNS 查询。在 Windows 的命令行终端上输入 nslookup w3schools.com,或在 Linux 上输入 dig w3schools.com。您应该看到类似以下的输出

DNS Dig

w3schools.com 的 IP 地址可以在;; ANSWER SECTION. 中看到。当此屏幕截图被捕获时,w3schools.com 名称背后的 IP 地址是66.29.212.110

权威名称服务器是负责提供对查询的最终答案的 DNS 服务器。例如,google.com 的 IP 地址将由其权威名称服务器回答,我们可以通过查询它来找到该服务器

在 Windows 上查找权威名称服务器

nslookup -type=SOA google.com

在 Linux 上查找权威名称服务器

dig -t SOA google.com

DHCP(“Dynamic Host Configuration Protocol”)

顾名思义,DHCP 协议允许网络上的任何系统联系服务器并接收配置。此类配置通常包括接收 IP 地址和网络范围、默认网关和 DNS 服务器。

DHCP 允许轻松管理加入和离开网络的客户端。

如果您想知道现在是否正在使用 DHCP,可以在 Windows 系统上键入 ipconfig /all,并在输出中查找“DHCP Enabled: Yes”。您的计算机可能具有多个网络接口


VPN(“Virtual Private Network”)

VPN 是一种使两个系统能够建立加密通信形式的系统,从而能够加密网络流量的传输。许多 VPN 是客户端-服务器架构,允许客户端访问 VPN 后面的多个服务。由您的工作场所托管的 VPN 也可能提供对否则只能从内部访问的资源的访问。

VPN

一些 VPN 服务专为用户隐私和传输中数据的加密而设计。这些服务使用户能够通过 VPN 发送网络数据,从而在浏览 Internet 时有效地隐藏用户的 IP 地址。

使用 VPN 来保护您的网络通信通常是明智的做法,但我们不应使用任何类型的 VPN 服务。免费 VPN 服务有时可能是恶意的,会检查、读取和存储您的敏感数据。

Malicious VPN



×

联系销售

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

报告错误

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

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

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