尽管如此 我可以呆在你身边吗? 每日签到 收藏本站
登陆 / 注册 搜索

USERCENTER


查看:7025   回复: 5

一个路由器的自述

[复制链接]
发新帖
跳转到指定楼层
楼主
仗剑天涯吾是土豪 发表于 2017-7-5 23:45:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

        我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:
9 U% z# s4 }, X. `& V' j: O5 v4 P5 o
1 S- \" u, r! F: {, w: @& ^, J4 l
 1-路由器.jpg 一个路由器的自述
  G  B8 f9 m' l$ D0 B+ Y
2 |( j5 q1 ]( l6 Q: h1 p
        为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330:) S% h" o% k$ H7 ~% o
9 U- `+ N" s, g' U" D! T+ Z
        这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。$ j; I8 e0 B) B) L  Z; L* Z' `

9 _- Q2 L( Y0 {! Y        可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。
9 E; n% Y' o* Y/ J
5 {/ [% `  w6 O# ~+ z        于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。- S# g" t; H: q0 `2 g6 E. j
        1 E7 A. s5 d7 c( b9 ]
NAT (网 络 地 址 转 换)

8 F+ C; u7 a2 h6 `: C6 Z, V        4 F; e  K* T& Z9 P5 ]2 P
        还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。$ A* C/ \+ o) G/ P: Y/ k

# @" F, `2 P" T, e$ U+ C, B        我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 www.guhei.net 根本都不知道!
# i3 `1 h0 p1 J3 @2 b1 S: a$ K) X0 V2 k* J, T1 x3 a( ^, q
        即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个?
* p& |4 F& @. u+ ~' `1 K
8 O/ o/ w( }  i+ n        所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧:
6 P" E. G, _' c5 z7 p+ m; r* _- F/ t+ W' z- O
 2-路由器.png 一个路由器的自述
, j: M$ w2 C3 H# o+ d3 }5 D8 ?1 O

& x( Q( b6 k+ x  K! F# z4 g        我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。* B& c- H, R) I- s

# P/ ^9 k% w" E; W: V7 M, f) I        这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子:, Z1 q. z4 X" x( y6 F2 A3 z0 I- l# E
! C. f- f' l8 w7 t+ U
 3-路由器.png 一个路由器的自述

7 ^: g. t5 t' M/ f0 R" i% C
* H, d$ p; `2 U# B        不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡!5 ^3 L) b; {3 J) J
& O# d9 Z+ B- L. W1 D
        然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。! ^; Z! F( ^$ f- P/ s

8 @, q8 r( E7 k8 ~
 4-路由器.png 一个路由器的自述

. n  B+ x" l6 n+ S, P- G, Y7 {! E: n& k0 |) g( H( N. Q  I
        注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。
5 _+ x' k- P9 E8 O# ?/ J$ J: F! {' i
' N, @" F. ]" W" n$ O3 q9 f. ?3 N        当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表:1 |1 Z1 S& a1 h4 ~9 Y* y

( ~; H/ G2 V% ]7 X" S
 5-路由器.png 一个路由器的自述
; S5 s8 v6 D8 g, X+ |0 O- J
& R" c/ c, ^) o& e
        过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍:% E. P: N0 ]5 d- l8 d1 v8 r2 L5 m
       
" ?( C/ j5 Z% z5 a4 c$ A        首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息:
/ I  \. T/ T0 t        8 w8 b. @+ ?% t9 `
        目的地IP:61.52.247.112,端口2001
% p3 u: U' {* J2 k6 |1 U! o* S) T; L% A4 C* L) w
        这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。( p' v# C" f# w* F' U7 m! Q
  R4 \0 h) {5 c2 ~& R  [6 `
        那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事!! e- y8 z0 B) H4 ]& B
9 D# j# a0 Z3 u' z
NAT 穿 越

2 K8 @- [, Y1 g
6 o4 O. i+ ?; f+ M+ n* {        欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。
2 X7 O# o2 W8 V8 X, w9 }! D) j* e# l1 \- @! H
        所谓的P2P就是Peer to Peer,即网络中的机器是对等的。
5 z1 k- n: s8 V' h+ Y" c) o
( O  k6 z1 {$ r% C& m/ ^        所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。& h; J$ U3 W+ L* R

0 |6 r( e) ~3 J# f2 x: x" C8 A$ Z0 m* w        这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。' u: S  B  z: m; @5 t; \, y

' M: k8 p. |- t        人人为我,我为人人啊。#j344:& x0 d9 v. n1 j4 z$ e4 w

$ r9 z$ M. I% F9 _# E        可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么?
3 t  _4 C/ i# i  g
- ^9 t$ C9 `1 z8 C8 l% Y        因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。, t7 E) p6 n" Z$ o. b- G

" n% Y# a; T" i: I; K4 h        我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。
: |# X. v# D) @  x/ w" }1 F0 @, Y2 J6 H
        我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。”
1 E: p* F  `" m* W* M& m  `& L; W# R- P$ {2 u2 i( S) c
        D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!"
- m, q: Y& `  y8 Z  s' F! X! I2 r9 P' X. R* X% H0 ^
        可是我实在是没有办法,就这一个外网的IP地址啊。; t& r7 F1 p! Z7 K0 o
- ^+ _0 r/ ~" v: F0 H4 ~  x
        TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。
! K0 h: Q# K! @" z# Y! H1 n
+ D5 Q9 K/ R. u; G1 |3 ~2 z; |        “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。3 B2 T' L" `' r& s
, l* W# R. A8 _* d
        大家一致认为这个方法很简单,很实用,就这么决定了。, o% P  _( k1 b1 W) q

. g2 I6 p& q& l7 W" d, g        这其实就是UPnP,你打开你的无线路由器,就能看到:% h4 C1 G+ [; c& E( m6 y7 w/ J
- W2 x5 c% N' g0 E
 QQ截图20170705233334.jpg 一个路由器的自述
7 T9 r1 J  O3 E, A! `8 x/ W& e

" `1 ?, w5 l& K+ s2 F        事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。
" v, i, Y* W% t# ?! ~1 A+ `9 ^. P

上一篇:  一块网卡的自述

下一篇:  CPU的自述

评分

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

查看全部评分

逆天技「初入古黑」 发表于 2017-7-6 11:54:22 | 只看该作者
看不懂啊呜呜
我的世界是安定「初入古黑」 发表于 2017-7-7 23:09:11 来自手机 | 只看该作者
还有更多的分享吗?
清风霁月「出类拔萃」 发表于 2017-10-3 23:15:47 来自手机 | 只看该作者
LZ是天才,坚定完毕
安心的味道「锋芒初露」 发表于 2018-1-21 12:23:16 来自手机 | 只看该作者
无论是不是沙发都得回复下
映画「出类拔萃」 发表于 2018-1-21 22:48:59 | 只看该作者
解释就系掩饰,掩饰等于无出色,无出色不如回家休息!!!
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

关于我们|小黑屋|手机版|Archiver|古黑论

GMT+8, 2019-8-26 13:55 , Processed in 0.069344 second(s), 37 queries , Gzip On, Redis On.

© 2015-2019 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表