IP 用于跨网络通信,不仅仅是跨物理链路,还包括路由器网络之间的通信。使用的寻址方案是 IPv4 ("IP Version 4") 或 IPv6 ("IP Version 6")。
IP 网络可以分为不同的部分,通常称为子网。这是通过添加一条额外的信息以及 IP 地址来完成的,称为网络掩码。网络掩码指示网络有多大以及哪些数据包在网络内路由以及哪些数据包应在网络外路由。
网络掩码可以通过十进制数字或斜杠表示法表示。使用斜杠表示法时,斜杠跟在系统 IP 地址后面。这里有些例子:
IP Address | Slash Notation | Netmask |
10.0.0.1 | /8 - Example: 10.0.0.1/8 | 255.0.0.0 |
172.16.1.1 | /12 - Example: 172.16.1.1/12 | 255.240.0.0 |
192.168.0.1 | /16 - Example: 192.168.0.1/16 | 255.255.0.0 |
192.168.0.1 | /24 - Example: 192.168.0.1/24 | 255.255.255.0 |
某些 IP 网络仅为特定类型的流量保留。上表中的 IP 地址仅供内部组织使用,这意味着它们不应在 Internet 上路由。此类 IP 地址通常称为 RFC1918 地址。
让我们看一下 RFC1918 中的不同网络以及网络有多大:
IP 段可以进一步分解为更小、更细粒度的网络。
每个网络都有一个保留地址,用于向网络中的每个主机广播流量,这称为广播地址。广播数据意味着将数据发送给网络上的每个人,而不是仅发送给单个主机。许多应用程序和协议都依赖广播流量才能工作。
对于每个网段,广播始终是网络中的最后一个 IP 地址。例如在网络192.168.0.0/24网络中,广播地址为192.168.0.255。
最小的网络掩码可能是 255.255.255.255,表示为 /32。该网络只有一个IP地址。
如果需要将流量发送回主机,例如应用程序之间的通信,则将其发送到本地主机地址。该地址始终为 127.0.0.1,并且是 /8 网络。
在 IP 网络中,流量由路由器路由。路由器是一种理解 IP 格式并可以在网络之间转发数据包的网络设备。这与交换机不同,因为交换机在网络内转发数据,而路由器在网络之间转发。
网络上的数据包具有描述许多我们已经在 IP 协议中讨论的重要细节的标头。 IPv4 标头如下所示:
图片来源:作者:Michel Bakni - Postel, J.(1981 年 9 月)RFC 791,互联网协议,DARPA 互联网程序协议规范,互联网协会,第 11 页。 11 DOI:10.17487/RFC0791.,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.html?curid=79949694
源地址是发送数据包的系统的 IP 地址,目的地是数据包的目标地址。标头中还有其他字段供 IP 协议的许多功能使用,但这些字段超出了本介绍类的范围。
您可以通过运行以下命令在 Windows 上检查您的 IP 地址ipconfig
在命令行窗口内。在 Linux 上,这是通过以下命令完成的ip addr show
或者ifconfig
命令。
当计算机需要与 LAN 上找不到的对象进行通信时,它会根据系统的配置方式将流量发送到默认网关。默认网关是能够将流量转发到目标 IP 地址的路由器。
NAT 允许接受公共 IP 地址上的连接的系统将这些请求映射到内部 RFC 1918 IP 地址,反之亦然。进行 NAT 处理的系统通常是防火墙和路由器。
NAT 的典型实现是使用外部 IP 地址作为多个内部 IP 地址的前端,并使用目标端口号来决定数据应发送到哪个服务器。这允许内部 IP 地址接收来自外部系统的流量。
另一种非常常见的实现是允许内部 IP 地址通过外部 IP 地址访问互联网。 NAT 跟踪从内部到目标地址的连接并通过连接转发流量。
NAT 可以通过多种方式进行配置,但是在本课程中我们不会详细介绍该方法。
IP 版本 6 是最新的 IP 标准,旨在支持更多 IP 地址。 IP 地址不使用 32 位寻址,而是使用 128 位。这使得在可预见的未来有足够的 IP 地址,而 IPv4 已经用完。
IPv6 地址使用 8 组,每组 4 个十六进制数字。 IPv6 地址如下所示:2a00:1450:400f:80a::200e:。请注意,它没有 8 组 4 个十六进制数字。这是因为 IPv6 地址可以通过简单的规则来缩短:
扩展后的 IPv6 地址为:2a00:1450:400f:080a:0000:0000:0000:200e。
localhost 可以简化为::1 和::。
IPv6 也有网络,即子网,就像 IPv4 一样。
IPv6 标头如下所示:
我们可以看到一个更简单的标头,具有更多的 IP 寻址空间。
IPv6 的使用越来越多,并且许多工具都内置了对该协议的支持。例如与ping
我们可以分别使用 -4 和 -6 标志在 IPv4 和 IPv6 之间切换。
跑步ipconfig
并查看是否看到任何 IPv6 地址。如果您启用了 IPv6,请尝试ping -6 google.com
和ping -4 google.com
。看看该命令如何允许我们使用 IPv4 或 IPv6?
ICMP 通常与 Ping 和 Traceroute 相关。 ICMP 还可用于其他用途,例如向节点询问其时间(称为 ICMP 时间戳请求)。 ICMP 时间戳请求仅允许路由器要求另一个路由器同步其时间,这是网络通信中的重要属性。
攻击者检查系统在网络上是否可用的常用策略是进行 Ping 扫描。此类活动的目标是使网络范围内的目标设备回复 ping 请求,以便攻击者知道它可用。这种方法很幼稚,因为许多系统默认会阻止传入的 ping。
跟踪路由是一种确定哪些路由器参与从系统 A 向系统 B 发送数据包的方法。了解数据包经过哪些路由器有助于更好地了解我们的网络,也有助于了解攻击面。路由器负责将包路由到正确的方向。想象一下在道路上行驶,十字路口的路标引导您到达目的地。十字路口的这些标志代表路由器。 Traceroute 可识别这些标志和交叉路口,并告诉您它们的距离(以毫秒 (ms) 为单位)。
IPv4 TTL 和 IPv6 跳数限制标头具有相同的功能。每个路由数据包的路由器都会将该值减 1,如果该值达到 0,路由器将丢弃该数据包并向发送者返回 ICMP 超时数据包。
要在 Windows 上执行跟踪路由:
tracert google.com
要在 Linux 上执行跟踪路由(默认情况下未安装):
traceroute google.com
通过这些工具进行跟踪路由的过程很简单:
重复此过程,将 TTL 加 1,直到到达目的地。
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 91xjr.com
,或在 Linux 类型上dig 91xjr.com
。您应该看到如下输出:
91xjr.com的IP地址可以在;;答案部分。捕获此屏幕截图时,91xjr.com 名称后面的 IP 地址是66.29.212.110。
权威名称服务器是负责对问题给出明确答案的 DNS 服务器。例如google.com的IP地址将由其权威名称服务器应答,我们可以通过查询来看到该服务器:
在 Windows 上查找权威名称服务器:
nslookup -type=SOA google.com
在 Linux 上查找权威名称服务器:
dig -t SOA google.com
顾名思义,DHCP 协议允许网络上的任何系统连接到服务器并接收配置。此类配置通常意味着接收 IP 地址和网络范围、默认网关和 DNS 服务器。
DHCP 允许轻松管理加入和离开网络的客户端。
如果您想知道现在是否正在使用 DHCP,您可以输入ipconfig /all
在 Windows 系统上并在输出中查找"DHCP Enabled: Yes"。您的计算机可能有多个网络接口
VPN 是一种允许两个系统建立加密形式进行通信的系统,从而使网络流量在传输过程中进行加密。许多 VPN 是客户端到服务器架构,允许客户端访问 VPN 背后的多种服务。您工作场所托管的 VPN 也可能提供对资源的访问,否则只能从内部访问。
某些 VPN 服务专为保护用户隐私和传输数据加密而设计。这些服务使用户能够通过 VPN 发送网络数据,从而在浏览互联网时有效地伪装用户的 IP 地址。
使用 VPN 来保护您的网络通信通常是一种良好的做法,但是我们不应该使用任何类型的 VPN 服务。免费 VPN 服务有时可能是恶意的,会检查、读取和存储您的敏感数据。