起因

某一天,我突然发现,电脑跟手机的IP地址居然一模一样,所以引起了我的好奇心。所以有了下面这篇文章

IPV4

很久很久以前,一群聪明的程序员,为了方便网络中交流,发明了IP地址,经过激烈讨论,考虑了人口,成本,速度等多个因素后,规定了IP地址有2^32个(大约40亿个),觉得这个数量完全够用了,而且这个数量比较节约成本,他们满意的把这第四版IP地址叫做IPV4

NAT

但是,他们没有想到的是,互联网发展速度堪称恐怖,各个国家需要的IP地址数量都很多。短短几十年,IP地址的数量就不太够用了, 但是,如果增加IP地址数量,现有的路由之类的都要更换。因此,他们又发明了一个东西,叫NAT(Network Address Translation)也即网络地址转换协议。可以将私有地址转化为公有地址。

公有地址跟私有地址

有个这个NAT。现在的IP地址分为公有地址跟私有地址。只有有了公有地址,才能上全世界的网站。而私有地址,是局域网内使用的,连连魔兽之类的单机还是没问题的,也就是平常的192.168.x.xxx。

静态IP与动态IP

国家跟企业有钱可以购买一定数量的公有IP地址,这个IP地址是固定的,或者说静态的。而我们这些平民由于没钱也没必要,因此我们是不会去购买一个公有IP地址的,只能由我们的IP地址随意被联通电信等随意更改,所以我们的的IP地址是动态的IP地址

IP地址随意变动有什么坏处呢?

对我们这些平常普通使用电脑,并没有什么问题,但是对于大企业,比如google,如果他们的IP地址是动态的,你会发现,今天你上google搜索,明天它就访问不了,因为他的IP地址变了,导致我们用原来的IP地址范问不到了。

就像你动不动就换电话号码,其他朋友怎么联系得到你?

可能你想问,那我平常跟朋友聊微信,我的IP地址变了,怎么还能跟他说话?

那是因为,你在微信上给别人发消息,其实是你发消息给服务器,服务器再把这消息发给你朋友, 即你→服务器→朋友。

你的IP地址确实会随意变动,但是,你发的消息是发给腾讯服务器的,它的IP地址可没有改变。你不知道你朋友的IP地址也没关系,只要你朋友上微信,服务器就知道它的IP了,这样,服务器就能给你朋友发消息。结果就是你朋友就能收到你发给他的消息了。

QQ的消息为什么不会发到微信?

明明是同一个IP地址,为什么不同应用程序之间的消息不会搞错?你可能不屑,这简单啊,我标注好一个通道是QQ的,一个通道是微信的,QQ的消息就发到QQ那,微信的消息就发到微信那,不就行了。是的,确实是这样就解决了,但是实现方面,却是在TCP层加上了一个端口号。不同进程有着不同的端口号。因此才不会搞错。就像你家的地址只有一个,但一般都会写个谁谁谁收件,因此你妈的快递不会拿给你。

讲故事:为什么会产生两个客户端同一个IP地址

回到标题的问题,为什么两个客户端会有同一个IP地址呢。原因是,由于路由器里的NAT协议,你连着同个wifi的两个客户端被转换成了同一个公有IP地址,当然,他们在局域网里的私有IP地址还是不同的,不然路由器就都分不清是谁了。

举个例子,就以大学快递来举例吧。假设你是某大学的校长。现在,你的学校宿舍楼刚刚建好,因此你给他们分配了门牌,你把校长室的门牌设为192.168.0.1,其他学生宿舍有,192.168.0.102或192.168.0.105之类的。可当你去跟快递公司交谈时,他们表示不能帮学生把快递送到宿舍门口,因此,这些地址只能学校内使用,你把它叫做私有地址

快递公司表示只能放在你们学校快递站,其他的学校里自己解决,学校快递站的地址,由于能对外使用,因此就是公有地址,这个学校的公有地址是223.168.200.200。而且,这家快递公司由于之前的客户信息泄露,导致产生了巨大亏损,所以他们还表示,快递上不会暴露客户的真实姓名。

而所有学生在收件的时候,都只能填写学校的地址(即标题的多个客户端拥有同一个IP地址)。那么,只有一个或者几个的快递站,如何做到对应这么多宿舍跟学生的快递呢?

聪明的你马上想到了办法,你买了一些快递柜放到快递站,这个快递柜有很多个柜子,你把这些柜子做端口,你给这些柜子一一编号,叫做端口号。然后你拿出了个表,用来记录给哪个宿舍的哪个学生的快递(忘了说,学生代表应用程序,宿舍代表客户端)。然后你跟学生说,记住自己是几号柜子,以后收件地址上顺便写上这个号码。比如,你是23204号柜子,你就这样填地址223.169.200.200:23204,然后,快递站工作人员根据表中对应的是哪个宿舍的哪个学生,比如你是192.186.102宿舍的第8000号学生,那么就对应比如192.168.102:8000, 进行发放就可以了。而这个表,就叫做NAT表。而这种私有地址转公有地址的办法,就叫做NAT,每个路由器都会维护这么一个表。

可喜可贺,问题解决。不过需要注意的是,我这个例子里的学校地址并没有设置为动态的,如果是动态的地址, 路由器过一段时间就需要向电信等服务商申请一个或者多个。

IPV6:每个人都有固定的公有IP

据预测,IPV4的地址将在2020年全部发完。因此,出现了IPV6,IPV6地址数量高达2^128(约3.4×10^38)个,全世界的人一人分配几百个IP地址都够用。不仅有些企业的软件已经支持IPV6,而且有一些标准表示只支持IPV6,不再兼容IPV4,估计再过不久,我们就都能有自己固定的公有IP地址了。

手机跟电脑居然是同一IP地址,你知道是怎么上网的吗?相关推荐

  1. 计算机 双 ip地址,win7双ip怎么设置_Win7电脑如何设置双IP地址

    通常电脑只有一个ip,是无法跨网段访问的,但是有时候需要跨网段访问的话要怎么办呢,那么其实我们可以设置双ip地址,但是许多win7系统用户可能还不知道win7双ip怎么设置,针对这个情况,本文给大家讲 ...

  2. win10怎么修改服务器地址,电脑Windows10怎么修改IP地址的方法

    我们电脑的P地址是Windows系统安装和使用过程中,被用户经常涉及使用到的,进行修改设置等.在Windows10操作系统中,怎么查看IP地址?下面是学习啦小编为大家整理的关于电脑Windows10怎 ...

  3. 通过ip无法获得计算机名称,电脑获取不到IP地址如何解决

    电脑获取不到IP地址是怎么回事?这是最近不少朋友都向小编咨询的问题.默认情况下,电脑的IP地址都是由路由器分配的,如果电脑获取不到IP地址,那可能是路由器或网卡出现了故障.下面,系统城小编就教大家如何 ...

  4. android中获取mac地址8.0,华为Mate10手机emui8.0系统怎么查看IP地址和mac地址?

    华为mate10手机怎么查看手机ip地址呢?华为mate10手机mac地址怎么查?华为华为Mate10和Mate10 pro都采用了最新的EMUI 8.0系统,使用起来十分舒服,下面就来说下华为Mat ...

  5. Windows电脑如何手动设置IP地址和DNS?

    Windows电脑如何手动设置IP地址和DNS? 1.在Windows电脑桌面找到[网络]: 2.鼠标右键点击[网络]并选择[属性]: 3.打开网络共享中心后,点击[以太网],再点击[属性]: 4.在 ...

  6. 如何设置计算机自动获得ip,电脑怎么设置为ip地址自动获取

    有时电脑无法上网就是ip地址设置错误,其实我们可以设置为自动获取就行,具体怎么设置呢,下面由学习啦小编为你整理了电脑怎么设置自动获取ip地址的相关方法,希望对你有帮助! 电脑设置自动获取ip地址的方法 ...

  7. 全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)

    全球免费公共 DNS 解析服务器 IP 地址列表推荐 基本上接触过网络相关知识的人应该多少都会听过 DNS 这个名词.因为 DNS 它非常重要,在我们上网的过程中扮演着重要的角色--"将网址 ...

  8. 解决macbook没有ip地址或者ip地址变为ipv6格式 无法上网的问题

    解决macbook没有ip地址或者ip地址变为ipv6格式 无法上网的问题 法一: 1.首先 问题产生原因是由于对于ipv6的支持产生的 2.关闭ipv6 法二:苹果官方客服 首先试试: 不好使的话, ...

  9. 每个计算机的ip地址要一样吗,同一ip网站-局域网中的所有电脑都是同一个IP地址吗? – 手机爱问...

    2008-05-15 在局域网中如何通过ip地址打开别人的电脑 1.Windows XP系统"远程协助"的应用"远程协助"是Windows XP系统附带提供的一 ...

最新文章

  1. GCT之数学公式(代数部分)
  2. word标题自动编号
  3. 解决android.permission.WRITE_APN_SETTINGS
  4. oracle asm 日志,Oracle+RAC+ASM数据库ora-00257日志归档器错误解决方法
  5. 负载均衡在分布式架构中是怎么玩起来的?
  6. python分块处理功能_python 对列表分块
  7. Change code to ensure that OPA5 work also in WebIDE
  8. centos7 mysql 安装_CentOS7安装MySQL8.0图文教程(相对最齐全)
  9. git rm -r --cached_【Git】工作中99%能用到的git命令
  10. java 命名参数动态替换_使用Kettle的命名参数动态执行作业
  11. kafka 的pom文件_Flink 消费 Kafka 数据
  12. “软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
  13. DataStream API及源算子
  14. atitit. java跟php的比较..为什么大企业喜欢java 而不是php
  15. WangEdit富文本编辑器图标修改
  16. spring-rabbitmq Direct reply-to 模式
  17. LICEcap 一款小巧的GIF屏幕录制软件
  18. 7.中文句法依存分析
  19. Java中打印程序执行的开始时间和结束时间
  20. 布袋除尘器过滤风速多少_布袋除尘器过滤风速的选择!

热门文章

  1. Java 是值传递还是引用传递
  2. 三国杀神话再临java版,神话再临 雷包10将 各版技能+台词 《三国杀》武将资料收录...
  3. 两年聚37亿美元,“庞氏骗局” 维卡币负责人在美被捕
  4. #define XXX do{ XXX } while(0) 为什么使用
  5. 博文视点名家讲坛之七经典对答回顾
  6. 记录一次Oracle自动化测试工具 - OATS实战分享
  7. Prior Posterior和Likelihood的理解与几种表达方式
  8. Idea stash 谨慎点玩
  9. 做自媒体必备,16个高质量素材网站
  10. 【Framework】透视Android中的Handler