用户 IP,里面藏了多少秘密?
大家都知道,要邮寄一封信给正确的收件人,需要提供准确而精细的地址,这个地址需要从国家和城市精确到邮政编码,街道和门牌号码。只有这样,邮局的工作人员才能知道将信送到那里。
Internet 上也是如此,每个设备都需要一个唯一的“门牌号”才能与其他设备进行网络通信交换数据,这个“门牌号”就是 IP 地址。在设备建立连接期间,IP 地址会被自动或手动地分配给联网设备,分配过程中 Internet 协议(IP)起着重要作用。

互联网协议地址(也被称为“IP 地址”或简称为“IP”)是互联网的基础。它基于 Internet 协议,是指内部或外部网络中的设备(例如计算机,Web 服务器或打印机等)的唯一可识别地址。IP 地址可以指定整个设备组,也可以为一台计算机分配多个地址。同时网络中的每个 IP 地址在任何给定时间只能使用一次。下面我们来详细说说 IP 地址的运作原理。
IPv4、IPv6 及 IP 的类型
IP 地址现在有两个版本,分别是 IPv4 和 IPv6。
IPv4 地址
大多数设备当前主要使用 Internet 协议版本 4(IPv4)的地址。它由 32 位二进制数组成,例如 11000000 10101000 10110010 00011111。为了使此数字好分辨,通常将这 32 位二进制数表示为四个十进制数字的组合,其值从 0 到 255,以点 . 分隔。例如:192.168.178.31。
IPv4 总共可以构成约 43 亿个不同的地址。对于早期全球互联网设备而言,因为所有设备不会同时使用,而某些设备也仅在专用网络中使用, IP 地址数目就显得很充足。但现在越来越多的日常设备需要连接到互联网,尤其是物联网(IoT)的出现让很大一部分设备都需要有自己的 IP 地址,IPv4 地址数量已经使用完毕,并且无法满足数量需求。
已经到来的 IPv6
IPv6 的地址具有 128 位,因此必须写为 128 位的二进制数。由于这样的数字太长且不切实际,所以采用十六进制表示法将 128 位压缩为 16 位的 8 个块,并用冒号 : 分隔。例如 0000:0000:0000:0000:0000:ffff:c0a8:b21f。字母 a 至 f 也用作十六进制数字。如果我们在每个块的开头省略零,并用两个冒号“:: ”替换一系列连续的 0000 块,则可以进一步简化格式。上面的例子可以简写为 :: FFFF:c0a8:b21f。

IP 地址的类型
除去 IPv4 与 IPv6 的区别,IP 地址还分为动态 IP 地址、静态 IP 地址,以及保留给专用网络使用的“用于特殊目的”的 IP 地址。
动态 IP 地址
动态 IP 地址最常用于日常的在线浏览。当 DSL (数字用户线路)客户使用其路由器接入 Internet 时,Internet 服务提供商(ISP)会为其分配一个地址池中的随机 IP 地址。该分配的 IP 会在每次使用后进行删除,或者定期(例如每 24 小时一次)自动更改。
由于通过这种“重用” IP 地址的方式,有效减轻 IPv4 地址空间的稀缺性,因为企业可以按照客户需求配置 IP,不用考虑多买备用的问题。
静态 IP 地址
除非所有者自己主动更改,否则静态 IP 地址始终保持不变。这些 IP 地址经常用于 Web 服务器,因为网站必须始终在同一地址上进行访问。静态 IP 还用于专用网络(LAN)中,用于与本地打印机或家庭网络中的另一台计算机进行通信。从用户的角度来看,静态 IP 地址与动态地址相比的最大缺点是它们更容易跟踪。
保留专用 IP 地址
IANA (互联网数字分配机构,一个协调全球 IP 地址分配的机构)将一部分地址保留作为私人 IP 地址空间或其他特殊目的使用,大约预留了 14.5% 的 IPv4 地址空间。例如:
封装在 CIDR 地址块 0.0.0.0/8 中的 IPv4 地址空间 0.0.0.0 到 0.255.255.255 是指网络的主机。
输入 IP 地址 127.0.0.1 时,可以与本地主机(localhost)进行通信。这对于测试新的应用程序是很有必要的。
IP 地址 255.255.255.255 指定用于广播。
地址空间 10.0.0.0 - 10.255.255.255,172.16.0.0 -172.31.255.255 和 192.168.0.0 - 192.168.255.255 保留给专用网络使用。对于 IPv6,前缀 fc00 :: / 7指定为专用。
这些 IP 是不会被 Internet 分配的,因此它们在 Internet 上也从来不会被路由。但是,如果想上网,路由器会通过网络地址转换(NAT)将专用 IP 地址转换为适用于本地网络的有效 IPv4 或 IPv6 地址。网络管理员可以手动或通过 DHCP 服务器自动分配专用 IP 地址。
如何找到自己的 IP 地址?
了解了 IP 的类型,那在哪里可以找到我们的 IP 地址呢?
不同的操作系统使用不同的方法查看计算机的本地 IP:
对于 Windows,在命令提示行中输入命令“ ipconfig ”。可以通过按 [Windows] + [R] 键在弹出的框中输入“ cmd ”来打开命令提示行。
Mac 系统的本地 IP 可以按以下方式查看:系统设置 > 网络。
Linux 系统,在命令行中输入 “ifconfig”,即可查看本机 IP 等信息。
IP 地址与数据保护
尽管 IP 地址本身不包含任何信息,但是因为她们可用于作为用户的标识,所以时不时会成为数据隐私话题者之间争论的主题。那么 IP 地址到底有没有和用户信息有关联呢?
首先,根据用户的 IP 地址就可以链接到其对应的互联网提供商。例如,183.128 、125.112 开头的 IP,则该地址属于浙江电信。
另外,根据用户 IP 与下一个 Internet 拨入节点的距离,可以在某种程度上确定其确切的位置。在农村地区,或许只能确定一个大概区域。但是在城市地区,因为在这里几乎每隔几百米就可以找到一个拨入节点,所以确定的地理位置就要精确得多。
对于一些网站管理者,网站服务器 IP 暴露在外引起黑客攻击也是比较头疼的问题。所以通过合理的方式隐藏自己的 IP 就变得极为重要。隐藏自己的 IP 可以通过以下几种方法:
架设代理服务器或配置防火墙。
使用高防 IP 服务,将真实 IP 映射到高防 IP 进行隐藏。
使用 CDN 服务来隐藏自己的 Web 服务器 IP 也是一种好办法。

又拍云作为一家资深云服务提供公司,对于网站 IP 自然也有完备的保护方式,CDN 在保护 IP 的同时还能为网站访问提速
用户 IP,里面藏了多少秘密?的更多相关文章
- php 用户ip的获取
$_SERVER 这个变量我很喜欢,里面有很多服务器和用户的配置.资料.特别是在获取用户ip 的时候 直接$_SERVER['REMOTE_ADDR'] 就可以或许,但这是没有使用 反向代理服务器的情 ...
- SAP中关于用户IP信息的获取(转载)
SAP中如何获取登录用户的IP? 或如何查看哪些IP登录到SAP中: 在Table: USR41中查看,具体字段的说明如下: MANDT --- ClientBNAME --- 登录的 ...
- Flask框架获取用户IP地址的方法
本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最 ...
- C# 获取用户IP地址(转载)
[ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...
- 【用jQuery来判断浏览器的类型】及【javascript获取用户ip地址】
用jQuery来判断浏览器的类型,主要是使用$.browser这个工具类,使用方法: $.browser.['浏览器关键字'] //谷歌浏览器.360浏览器等其他一些浏览器,没有专门的判断 funct ...
- Java获取登录用户IP地址
/** * 获取登录用户IP地址 * * @param request * @return */ public static String getIpAddr(HttpServletRequest r ...
- Nginx 反向代理 如何在web应用中获取用户ip
转载:http://blog.csdn.net/bao19901210/article/details/52537279 问题背景: 在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断 ...
- Shell-history命令加记录用户IP
记录输入的命令 history命令可以查看用户输入过的命令,一个典型history命令输出如下: 980 2017-05-29 20:17:37 cd - 981 2017-05-29 20:17:4 ...
- Tomcat的配置,设置内存,获取用户IP
一.修改配置文件 tomcat配置文件路径/tomcat/bin/server.xml # shutdown指定终止Tomcat服务器运行时,发给Tomcat 服务器的shutdown监听端口的字符串 ...
- Linux history时间用户ip设置
Linux history时间用户ip设置 在使用linux服务器的时候发生一些不知道谁操作的问题,google一下说history命令可以查看到历史记录,用过之后发现还是不够详细,再g ...
随机推荐
- vue 项目中遇到的问题及解决方案
问题:从码云上提前代码时npm run dev 报错 解决方法 在目录外层新建一个postcss.config.js 放入以下代码 module.exports = { plugins: ...
- JavaScript高级程序设计笔记07 迭代器与生成器
迭代器与生成器 1.迭代 反复多次执行一段程序,(有明确的终止条件) 迭代器.生成器 ES6 计数循环(for):最简单的迭代 迭代次数.迭代每次执行的操作 (顺序已知) 古早迭代(有序->数组 ...
- 从一道题来看看golang中的slice作为参数时的现象
1.题目 最近看群友在群里问一道关于golang中slice的题,题目如下: package main import "fmt" func main() { k := []int{ ...
- 6款AI工具网站,赶紧收藏,以备不时之需
1.海鲸AI-支持AI对话.AI文档解析.AI绘画 海鲸AI-基于新一代人工智能技术,只需输入问题,即可得到智能回答 https://www.weijiwangluo.com/talk/ 海鲸AI是 ...
- keil 5 安装教程
一.下载 keil 官网 二.安装教程 1.开始安装 双击安装包,开始安装,直接下一步 2.勾选同意,下一步 3.选择软件安装路径,下一步 4.填写信息 可以随意填写,下一步. 5.等待安装 6.安装 ...
- IDEA的两个实用插件“汉化”和“翻译”
1.汉化包插件 Chinese (Simplified) Language Pack EAP 2.翻译插件 translation 3.效果图 这两个不局限这一软件,IntelliJ这一公司旗下都可以 ...
- C++ Qt开发:ComboBox下拉组合框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ComboBo ...
- C++中数字与字符串之间的转换(转载自http://www.cnblogs.com/luxiaoxun/)
C++中数字与字符串之间的转换 1.字符串数字之间的转换(1)string --> char * string str("OK"); char * p = str ...
- ElasticSearch之Search settings
相关参数 indices.query.bool.max_clause_count 本参数当前已失效. search.max_buckets 本参数用于控制在单个响应中返回的聚合的桶的数量. 默认值为6 ...
- kubernetes安装(一)
参考: https://www.cnblogs.com/liuyangQAQ/p/17299871.html 部署组件包 名称 安装包 kubeadm集群组件 kubelet-1.20.9 kubea ...