一个路由器的自述 |
我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:
![]() 为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330: 🧑🍳🪖🪗😍👄 这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。 可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。 💪🌧🍍🆚🐅 于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。NAT (网 络 地 址 转 换) 还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。🧑🌾👓🪥😫👁 我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 根本都不知道! 即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个? ✌🪐🍇🅱🐶 所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧: ![]() 我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。 🤌🗽🌰ℹ🐤 这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子: ![]() 🧑🌾👖🗝🤟 不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡! 然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。 ![]() 🧠🚘🍓❗🐻 注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。 当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表: 👂🥚🈸🐝 ![]() 过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍: 首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息: 👎🌧🍇🈸🪰 目的地IP:61.52.247.112,端口2001 这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。 👵👠📬😊💪 那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事! NAT 穿 越 欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。 ✌🧳🦞🈸🦄 所谓的P2P就是Peer to Peer,即网络中的机器是对等的。 所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。 👨🎨🛍📀😉🤳 这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。 人人为我,我为人人啊。#j344: 可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么? 🤳🏫🌶➡🐶 因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。 我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。 👦👖💾😳🖕 我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。” D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!" 可是我实在是没有办法,就这一个外网的IP地址啊。 👵👞🖥😚🤛 TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。 “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。 👮♂️💍🛒🤖🖕 大家一致认为这个方法很简单,很实用,就这么决定了。 这其实就是UPnP,你打开你的无线路由器,就能看到: ![]() 事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。 评分
帖子热度 1.1万 ℃
|
|