原谅我,佐助,这是最后一次了。 收藏本站
登陆 / 注册 搜索

阅读: 7.7K   回复: 5

一个路由器的自述

仗剑天涯论坛大牛 2017-7-5 23:45 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
        我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:& _) k# K" M! ]
4 |- a2 r* d6 \
一个路由器的自述 1-路由器.jpg

, j+ u4 |5 P/ T  n5 Z' t# u3 Z& m( E! {( P& `  J
        为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330:
; e9 U% j; W' T+ b7 M" I- h
6 D( ~* T2 d* w9 O/ z% y: f( R        这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。6 s" e- r4 m0 O4 v" _. R5 t4 ?7 y

0 M: h4 T5 ?2 a: y$ j        可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。2 c& y( g8 r* A8 \/ P: y
6 m8 \4 _1 c1 n* S7 g+ M/ u; b& Y+ N2 f4 T
        于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。, K. r' ^- u) j
       
- k" z5 a6 E) i( w# \5 u2 ~
NAT (网 络 地 址 转 换)

" r  Q  i: [8 X/ G       
% w; ]6 ~  M6 q, V! q$ N" |& C2 W        还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。) f, R2 T' I6 R7 G

) X& n1 U% O* x; |) i        我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 www.guhei.net 根本都不知道!0 d3 y3 ?  \3 O; m( ~1 q
" @1 m( T2 D# c8 O3 M2 l
        即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个?1 E% w! }! ?5 K- w* M3 `
8 D: z- I5 S7 v/ X4 q7 g, C3 Z3 E
        所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧:
( u' ^: p! P, D7 F4 e0 Z  h4 y; F9 j, c$ \' F
一个路由器的自述 2-路由器.png

- U) N5 V! P" e3 d* c& R, S# G1 g7 P) R: [3 F6 b
        我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。1 `+ n: V/ t; _9 n: H6 ^& P
& g  P: _, R/ k- ~  u) L' V5 h5 T3 K: s
        这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子:; n$ o9 W+ ~  R! R9 u
2 k* l) o& h' w* s; R% ^: U
一个路由器的自述 3-路由器.png

4 S7 Q) q. O3 ?/ p' c; q! _1 V) F
8 l3 i( I/ v0 R4 J        不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡!* i! x" Y5 j& k- n& @: M& k
! T/ f# c  `4 i. v3 P
        然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。
2 i- w" j6 [/ E2 \4 q" T
) u: n. H2 F; Y5 l* v1 H
一个路由器的自述 4-路由器.png
2 Y; }6 E" A& _" O
5 M/ D/ J8 B- X# I; T
        注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。$ v/ t/ @9 W  |

) E/ R2 f1 r8 o6 W        当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表:
8 w: q8 }% y) q; Z! C* V( o$ P- P- A% `) ~+ N; \% T
一个路由器的自述 5-路由器.png
  J( x+ G9 u- m& m! ?

4 N/ s# U& x3 L        过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍:$ [& I3 ^5 N( D7 D5 T- E
       
' N" N9 d" [% F0 \: c$ \        首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息:
: e0 [/ `& T' F& D* j: c  i' q  @9 e        6 {  i' I+ ?" t& c9 H
        目的地IP:61.52.247.112,端口2001
: j0 H7 e  X3 @) e% b9 j. M! j6 O  J$ x
        这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。
! S9 ?8 S; z6 e+ F- b9 A. J; j( p0 G( M0 u8 n$ _5 o3 J
        那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事!. a) }$ G2 K7 e1 M3 k: r

- X. d( t- A9 c, O
NAT 穿 越

' B. _! G3 ?: n% k$ A, y
% x4 e7 [3 e3 s        欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。
6 F0 ?# m$ A6 M: X( {1 P/ s! a: b+ a5 h7 A
        所谓的P2P就是Peer to Peer,即网络中的机器是对等的。1 S! d9 v$ s- F& b2 ^) Q
/ H+ J- U7 }0 F( z1 u* {
        所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。
/ u7 K0 \% k1 N7 G- V) g: d
2 T. l  U$ c$ f! y+ d        这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。3 {6 A# Y7 P8 K) H5 a* Y: \4 g

" H! J, R8 I: r1 p        人人为我,我为人人啊。#j344:
& R( g, r5 n+ _8 e
; S% w" r: L0 B+ I        可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么?
: M, b5 h7 {8 a' w3 s' s! x; w; r8 G" J# y4 M: z4 ?5 v
        因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。
% {; Q! o; f! y
$ R* R1 q6 a6 M+ z) _# t& o. ]        我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。$ S$ \' J! R& D  P

3 Q3 o/ I. f0 t/ l; q1 C" X# o        我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。”
. y% r. P: \5 e7 m0 M% Z2 H1 M
& G2 g5 K. S' W: o8 V* Y2 U* T2 h        D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!"+ |: O; [, W) x; N* R7 @( S7 J
3 t* m' S- a( }6 u3 ?
        可是我实在是没有办法,就这一个外网的IP地址啊。4 v1 i" Z: {$ Y$ k0 ]1 K

5 ~& E( L2 s6 a# c4 m5 c* A& e; m        TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。
! x6 q* j! ^6 Y# \6 ?$ r5 ^4 H+ {. X: }9 _4 ?. D1 y
        “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。
6 G4 m4 D0 z# m+ f: u
+ j, o8 W1 W) V1 L8 M$ k0 g  d        大家一致认为这个方法很简单,很实用,就这么决定了。& k4 P& @0 |0 G. j" q

7 r  [' ?( u! R0 r! L+ \  t        这其实就是UPnP,你打开你的无线路由器,就能看到:6 u5 v2 R3 u  J( g
( _: T# B# G5 {" T4 h
一个路由器的自述 QQ截图20170705233334.jpg
  ?! ]7 `) n7 B/ g& c3 t/ v4 M# `

  S$ Y# l+ F; b        事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。+ v& U; m' O/ k

上一篇:  一块网卡的自述

下一篇:  CPU的自述

评分

参与人数 1成长值 +1 金币 +1 展开 理由
清风徐来 + 1 + 1 我很赞同!

查看全部评分


逆天技 「初入古黑」 2017-7-6 11:54 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

看不懂啊呜呜
我的世界是安定 「初入古黑」 2017-7-7 23:09 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

还有更多的分享吗?
清风霁月 「出类拔萃」 2017-10-3 23:15 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

LZ是天才,坚定完毕
安心的味道 「锋芒初露」 2018-1-21 12:23 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

无论是不是沙发都得回复下
映画 「出类拔萃」 2018-1-21 22:48 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

解释就系掩饰,掩饰等于无出色,无出色不如回家休息!!!
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2020-12-1 04:59 , Processed in 0.035784 second(s), 22 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表