IP地址是一个32位(IPv4)或128位(IPv6)的数字,用于唯一标识计算机、服务器、路由器或其他网络设备。每台连接到互联网的设备都必须拥有一个IP地址,这个地址充当设备在网络中的位置坐标。
简单来说,公网IP地址是可以通过 Internet 直接访问的 IP 地址,所有公共 IP 地址对其主机或服务器都是唯一的,不能重复。
私有IP地址是在局域网(LAN)中使用的IP地址,用于内部通信,通常不直接从互联网上访问。许多个设备在一个局域网中共享一个公有IP地址。私网IP地址不在 Internet 上路由,也无法从 Internet 向它们发送流量
**概况**:每一台设备都需要一个IP地址来进行区分标识,而IP地址中又有分为公网ip和私网ip,公网IP地址用于在互联网上可访问的设备。私有IP地址主要用于内部网络。
| 特征 | 公网IP地址 | 私网IP地址 | 
|---|---|---|
| 范围 | 全球性 | 本地 | 
| 是否免费 | 收费 | 免费 | 
| 安全性 | 不安全,容易受到攻击 | 安全 | 
是否需要NAT| 需要 NAT 才能与设备通信 | 不需要 NAT
 -   这是一个较大的私有IP地址范围,可以支持约16,777,216个IP地址。 -   通常用于大型企业或组织的内部网络。 -   这个范围包括16个连续的私有IP地址块,每个块支持约65,536个IP地址。 -   通常用于中型企业或组织的内部网络。 -   这是最常见的私有IP地址范围,用于小型家庭网络和小型企业内部网络。-   通常用于家庭路由器和小型办公室网络设备。这些私有IP地址范围允许内部网络中的设备进行本地通信,而不需要唯一的全球性标识。在连接到互联网时,路由器或防火墙会将内部私有IP地址转换为公有IP地址,以便与互联网通信。这有助于减少了IPv4地址枯竭问题,因为有限的公有IP地址可以用于多个内部设备。
可以使用Python类获奖
我们可以使用Python提供了socket库,来获取获取本地计算机的IP地址。
import socket
# 获取本地主机名
hostname = socket.gethostname()
# 获取本地IP地址
ip\_address = socket.gethostbyname(hostname)
print(f"本地主机名:{hostname}")
print(f"本地IP地址:{ip\_address}")在Web网站中,我们可以使用第三方API(ipify)来获取IP地址:
// 使用fetch函数发送GET请求到https://api.ipify.org?format=json
fetch('https://api.ipify.org?format=json')
  .then(response => response.json()) // 解析响应为JSON格式
  .then(data => {
    // 当JSON解析完成后,data对象包含了响应数据,其中的ip字段包含了客户端IP地址
    const clientIP = data.ip;
    console.log(`客户端IP地址:${clientIP}`);
  })
  .catch(error => {
    // 捕捉任何可能的错误,如网络连接问题或JSON解析错误
    console.error('获取IP地址时出错:', error);
  });代码讲解
fetch函数向指定的URL发送GET请求。在这里,URL是https://api.ipify.org?format=json,这是一个提供IP地址信息的API。fetch会返回一个Response对象,然后我们使用.json()方法将响应解析为JSON格式。.then块会在JSON解析完成后执行。此时,data对象包含了响应数据,其中的ip字段包含了客户端的IP地址。catch块会捕获并打印错误信息。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。