握不住的沙,不如扬了它。 收藏本站
登陆 / 注册 搜索

阅读: 8.6K   回复: 5

一个路由器的自述

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

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

主题破百
        我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:- ]3 r: O" C- J" s
/ S' J  l9 N6 m9 b% ?/ R: k+ v+ y
一个路由器的自述 1-路由器.jpg
( X5 ~! w$ [2 r- z# {$ L& ^7 {
" x$ z% m6 ^, O4 A
        为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330:
2 L, E: X. C" v+ ~' D( z: ?& b6 i/ _# g  Z; |8 f0 T  a  h- s
        这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。6 c/ z8 m+ W6 C0 _2 G

! V) N$ Z0 I5 u        可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。3 a' \( `2 z2 t1 e# U

" H9 {7 L1 s' m2 I2 ]7 ~9 {7 Y        于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。" G( {' r% k( m) S! l  x9 ?
        : y2 f6 \# o8 y! }! Y  H. C% ?) ?
NAT (网 络 地 址 转 换)
0 O4 ?2 [# h! d9 v
       
* R: @& L, u, Y& E        还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。  m& N5 x1 x% e( c. H8 j
% ^+ W9 W% R. k" l& K  r
        我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 www.guhei.net 根本都不知道!/ H8 u, j) p# P( ^! ?' G
7 }- p, w9 @6 F. [2 p# W& c4 a
        即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个?: x- ^  Q5 A0 f. C/ R' R/ A) S. W

4 {5 I% |; L: |) j9 n) ]' ^        所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧:
3 C7 W, b0 t& f! S
& ]* v/ g3 G4 n4 f, ?' r
一个路由器的自述 2-路由器.png

/ v# O1 l% T2 ]  k- G2 H) [
" k- Y' ~, K% l) u        我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。, C+ j5 z8 a; Q2 R( ?
" o# s3 X) {  P  w, p7 c
        这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子:
) [/ v2 p( o/ S3 T
. ^+ P' D( H0 k# d! \; A7 w
一个路由器的自述 3-路由器.png
0 N" K6 ?5 ^- {8 E" r
; C& F3 E% }; _6 F! t% V6 z# C
        不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡!
( |- I5 l$ t( \6 N+ ?; w1 G/ V4 \! B+ S* J# Y' h
        然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。
; A! L5 x* {; n; o; E; d/ X1 L! j3 f: ?/ W/ B
一个路由器的自述 4-路由器.png
. v! p/ H$ F! J* r

, v& S7 ?1 q6 J7 R* M        注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。! s* w  f- x3 A, G% \
, N0 \5 V  t- p) q$ {: ?
        当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表:
- z& z$ j, q0 T& j# B  Z
* C  Y3 s5 h- c. d0 [' Y. M
一个路由器的自述 5-路由器.png
  ^# k7 A8 {* O
5 Q+ N( d+ n$ A' s
        过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍:
0 Q$ \( E4 `+ F: y/ P" ?+ f        ) R1 c" D7 W3 C1 d+ J- K, c- n
        首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息:
" k0 [, J& O5 o       
6 \# ]. i0 e: Y/ b        目的地IP:61.52.247.112,端口20018 H/ c8 A! @6 k6 A3 C( J
5 X  O& T: Y+ \+ w! K
        这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。* K/ @; k/ g3 C( Y; k0 m

# o' a$ K+ c3 u3 H0 m: T1 q2 Z        那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事!, d. Y% s) x3 d, f

0 y' d$ P9 ~* L) ?
NAT 穿 越
1 t- i+ w8 U3 `8 ?

; h  R0 A8 K: x  W/ X        欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。4 t9 b% i7 t1 a! B3 e  L% g$ i# v

2 W- m$ G' k, O* @        所谓的P2P就是Peer to Peer,即网络中的机器是对等的。6 O6 \# b" a7 H( _

0 O4 E) B" c, d" j" {. P0 u4 b        所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。- v+ k, H7 B# @  @3 H
6 \4 V: p9 G; q8 I& a& R
        这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。$ R; J2 B$ i+ d; b3 p; c

: W. [1 Y0 e5 A# T/ S0 E        人人为我,我为人人啊。#j344:5 b) `9 e1 X3 u% s% v

0 p6 m* X" L) v        可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么?
  n$ @9 I+ i( D9 o; Y
2 R( J* e, E8 J% l/ B# X. X! U4 {        因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。- f8 F) L( {) j; o! J

% z+ D; h# Z( s: t        我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。
3 i) k( x) m0 {7 p
( |' {2 ^: g4 n7 D        我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。”
' @/ O: _5 O1 D
  W, S( w. A( Q( n        D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!"
" U. g. i5 v3 W$ }! _( X
/ g% ]: i! d0 U$ S        可是我实在是没有办法,就这一个外网的IP地址啊。1 X2 H  ]% l, V

' \- m9 r' j' a9 ~        TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。
( s, s- C" h0 b/ K3 r2 \% ~
+ P" K' c& u  ~9 S3 m0 K, D        “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。
! ~, T% i9 J3 ?. j+ v) t- Y" C- y! x& h3 L  [# T% k' m/ U
        大家一致认为这个方法很简单,很实用,就这么决定了。, F+ J" e4 h, }

( L2 ~  k" m1 r) A        这其实就是UPnP,你打开你的无线路由器,就能看到:7 E0 n  P( K5 X& ]! _

( N! O) v& d& L( `  ~
一个路由器的自述 QQ截图20170705233334.jpg

8 R% R- m0 d- W% q6 e( u1 r! z: z2 h" }
        事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。
- }2 e+ K3 _6 A0 J" |6 `9 {" |
上一篇
下一篇

评分

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

查看全部评分


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

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

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

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

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

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

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

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

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

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

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

本版积分规则

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

GMT+8, 2021-10-20 06:21 , Processed in 0.027577 second(s), 23 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表