赞
踩
某一天,我突然发现,电脑跟手机的IP地址居然一模一样,所以引起了我的好奇心。所以有了下面这篇文章
很久很久以前,一群聪明的程序员,为了方便网络中交流,发明了IP地址,经过激烈讨论,考虑了人口,成本,速度等多个因素后,规定了IP地址有2^32个(大约40亿个),觉得这个数量完全够用了,而且这个数量比较节约成本,他们满意的把这第四版IP地址叫做IPV4。
但是,他们没有想到的是,互联网发展速度堪称恐怖,各个国家需要的IP地址数量都很多。短短几十年,IP地址的数量就不太够用了, 但是,如果增加IP地址数量,现有的路由之类的都要更换。因此,他们又发明了一个东西,叫NAT(Network Address Translation)也即网络地址转换协议。可以将私有地址转化为公有地址。
有个这个NAT。现在的IP地址分为公有地址跟私有地址。只有有了公有地址,才能上全世界的网站。而私有地址,是局域网内使用的,连连魔兽之类的单机还是没问题的,也就是平常的192.168.x.xxx。
国家跟企业有钱可以购买一定数量的公有IP地址,这个IP地址是固定的,或者说静态的。而我们这些平民由于没钱也没必要,因此我们是不会去购买一个公有IP地址的,只能由我们的IP地址随意被联通电信等随意更改,所以我们的的IP地址是动态的IP地址。
对我们这些平常普通使用电脑,并没有什么问题,但是对于大企业,比如google,如果他们的IP地址是动态的,你会发现,今天你上google搜索,明天它就访问不了,因为他的IP地址变了,导致我们用原来的IP地址范问不到了。
就像你动不动就换电话号码,其他朋友怎么联系得到你?
可能你想问,那我平常跟朋友聊微信,我的IP地址变了,怎么还能跟他说话?
那是因为,你在微信上给别人发消息,其实是你发消息给服务器,服务器再把这消息发给你朋友, 即你→服务器→朋友。
你的IP地址确实会随意变动,但是,你发的消息是发给腾讯服务器的,它的IP地址可没有改变。你不知道你朋友的IP地址也没关系,只要你朋友上微信,服务器就知道它的IP了,这样,服务器就能给你朋友发消息。结果就是你朋友就能收到你发给他的消息了。
明明是同一个IP地址,为什么不同应用程序之间的消息不会搞错?你可能不屑,这简单啊,我标注好一个通道是QQ的,一个通道是微信的,QQ的消息就发到QQ那,微信的消息就发到微信那,不就行了。是的,确实是这样就解决了,但是实现方面,却是在TCP层加上了一个端口号。不同进程有着不同的端口号。因此才不会搞错。就像你家的地址只有一个,但一般都会写个谁谁谁收件,因此你妈的快递不会拿给你。
回到标题的问题,为什么两个客户端会有同一个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,每个路由器都会维护这么一个表。
可喜可贺,问题解决。不过需要注意的是,我这个例子里的学校地址并没有设置为动态的,如果是动态的地址, 路由器过一段时间就需要向电信等服务商申请一个或者多个。
据预测,IPV4的地址将在2020年全部发完。因此,出现了IPV6,IPV6地址数量高达2^128(约3.4×10^38)个,全世界的人一人分配几百个IP地址都够用。不仅有些企业的软件已经支持IPV6,而且有一些标准表示只支持IPV6,不再兼容IPV4,估计再过不久,我们就都能有自己固定的公有IP地址了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。