古黑币3 个
成长值6372 点
金币425 个
精华贴3 个
今生相逢便是缘分,何苦去怨恨,何苦去仇视。
我知道我一生的使命就是传递信件,但有一个前提:我需要知道对方的地址才行,其实我们网卡都有一个全球唯一的地址,这个地址一出生就确定了,就像你们人类的身份证一样,终生不变。
9 l/ H4 k. s+ V3 d
5 b5 K# j' y7 b: N 无论我走到哪里,我都拥有这个唯一的标志:11:27:F5:8A:79:54
# r) p6 L( s& n( t& y& P& `+ O5 }+ V5 L$ a; }! _: v W
挺长的是吧,你们人类把它叫做MAC地址,简单起见,你可以叫我“TP-Link7954”
5 P. k( y4 y8 [8 t' K" a
" {! o6 P6 n, g8 q1 a( t 刚开始的时候我非常孤独,因为这台电脑虽然经常开机,但却不联网,真不知道主人是怎么想的!
; K- x$ }4 h3 l; W. ~: w; v# A& Q4 S9 [3 u+ m; \" |
不上网就没人来找我发信,不发信我也就没什么价值,也没人搭理我,我整天听着CPU阿甘和金士顿内存在那里喋喋不休的聊天,真是烦死了。
+ P: w+ [& L; n& d; Y
/ G$ \8 Q3 b7 y0 q5 ]
- g x1 T, S& i! {0 t8 c9 r 只是这两人都记不住对方,每次重启都像是第一次相识,实在是太搞笑了。#j318:! Y+ c- ^. O8 c! ~6 m6 S0 g/ T1 [% [
7 y' i) ?& u+ YD H C P 在我入住机箱30天以后,音箱向大家报告说:“主人终于决定要上网了”这绝对是个重磅新闻!( Y# ?2 a H- [1 f) `' a
( D6 c7 B* S4 W0 n 我很兴奋,大家也很兴奋,早就听说外边的世界很精彩了。一天晚上,只听到“咔嗒”一声,一个RJ45的网线插头便和我亲密接触了。4 [9 S i& o8 f: B
" H& M0 n [! d- w |+ j3 Q, A# E
网线的那头传来了陌生而熟悉的声音,我的潜意识告诉我,那是交换机在转发信件。CPU阿甘看到了这种情况,也不和金士顿内存聊天了,他对着我大叫一声:TP-Link你在等啥,赶紧上网啊。6 A# d: x" Q0 o3 p l/ l3 C
W/ `2 y1 R6 Y8 X0 g& n
这是他第一次和我说话。
, W K4 X: e# _$ u% R1 O, Y
2 Y1 s7 v* C& `; X* i0 M4 I 操作系统老大是见过世面的,他镇定的说:“心急吃不了热豆腐,我们得先搞一个IP地址才行。这需要用到DHCP(动态主机配置协议)”' C% U4 E3 d% Y( _5 @. U, K8 k
+ @: \: {0 a$ p! _! g1 w
阿甘说:“谁那里有IP地址啊?”
$ W$ b' s: W8 \) m4 O( s5 @7 j
6 R' b+ V' L2 J- C# i “这个网络里应该有DHCP服务器,可以动态的分配地址,我们可以发个信广播下”老大接着说“阿甘,你和金士顿赶紧写一封信:”$ q; B1 e( }$ H( r: G
; U# x, g U" ?
收件人:255.255.255.255:67
! N4 j* r6 `- \8 o, c/ N9 G2 I 发件人:0.0.0.0:68
5 h# c- R7 j8 s 内容:我想租用一个ip地址,谁有啊?$ {9 f# r. J* C, r( r6 J
% e* a5 N! j/ ]$ y6 q# K (注:这里做了简化,实际上这里首先是一个应用层的DHCP发现报文,然后被一个UDP的报文封装,然后再被一个IP的数据报封装。形象化一点如下图所示)% v* T, p+ `+ w1 R
4 a- N2 k2 b% a$ ?: s5 ?; _
; J2 K- I1 }7 s3 X
阿甘傻乎乎的,也不问为什么收件人和发件人这么奇怪,只是飞快的按老大的指示写信,信马上写好了,交到我的手里。“给你,TP-Link7954,赶紧发出去吧”。
# f7 l. e1 i6 R1 D' [( S2 c7 D4 i1 {3 p+ c! z- E
我对外发信是有原则的:我工作在数据链路层,必须得知道对方的MAC地址才能发信,如果不知道,我就对外广播,那就是所有的电脑都会收到。
/ h; X1 r( o+ Y( P, z
) I+ i& h$ ^2 x9 ?# i9 U9 M) Z 这封信显然就是要广播的,因为到目前为止,我们还是网络大海中的一个孤岛,和外界没有任何联系,我还不知道任何其他电脑的MAC地址。
" H) c1 ^" l. M# l9 F5 {$ F* p& d. Y' V
按照规定,我又把阿甘写的信封装了一下,装到另外一个信封里,只有这样,我最重要的伙伴交换机才能看懂。
% [5 \& J+ y+ Q8 p9 r+ U6 u4 k6 U: D# w/ Q. D( l4 }
目的地:FF:FF:FF:FF:FF:FF (广播到同一子网内的所有电脑)
2 t4 x }. H+ ]) V! U# C 发件人:11:27:F5:8A:79:54(就是我自己了!)
9 t; P% h' t3 ?; q# Q; r! {6 \4 |, v
& W' K+ M4 e/ Q
我把它通过网线发给了交换机。交换机看到FF:FF:FF:FF:FF:FF,立刻转发给了所有连到交换机的设备。, L* q& i) k# M4 \/ ~
* H1 ?4 q& ^0 g* x" @ 如同老大所料,这个局域网里确实有DHCP服务器,还不止一个!因为没有多久,交换机转来两封信,我拆开其中一封,里边写着:
% u; ^" w! G! D! ^8 z7 ~9 H/ e9 q
; e; @+ h' n, v+ i5 t9 X “我是DHCP服务器192.168.1.1,我这里有个空闲的IP 192.168.1.2, 你租不租?”
8 \: M( h; i) J/ X. h9 [6 X L. c( `( K2 b& t
另外一封信也差不多,是另外一个DHCP服务器发来的,提供了另外一个IP地址。CPU阿甘迫不及待了:“看来我们很受欢迎啊,这么多人愿意给我们IP,老大,快抢一个吧。”
3 A, x2 Y6 l6 P& n1 Z x) `) j/ n6 i& j; g. K
操作系统老大说:好,我们要这个192.168.1.2吧,再写一封信:' h5 z6 Q3 d) @ i5 R) I# d
+ t# }3 \7 d' j) n8 K) N “你好,服务器192.168.1.1,我们就要这个IP192.168.1.2了”# W6 I: c3 W# k4 x
( r, _9 m) \: g. n+ r* m: ^$ t 我又把这封信广播出去,看来我们所处的网络非常快,确认的回信眨眼间就到:
) _5 d+ d, ~$ ~ I : X+ q. \8 X) g- C' K ~. c7 K
“这是一个确认信,IP192.168.1.2给你了。网关路由器是192.168.1.1,DNS服务器的地址是202.102.224.69”
* m, j* F. G. q; C3 C$ n4 }! ^3 \ _: f
金士顿内存说:“不容易啊,终于搞定一个IP了,我把它记下来”。
& c( s& E) l5 J. A4 }+ h: m. ^* c, @& G. l9 R$ Z u% @
操作系统老大说:“把所有信息都记下来,接下来很快就会用到”。 {6 ?) x B2 U( B5 n. A6 `/ ~$ B
. h$ V! i8 t9 J$ l
我们的IP:192.168.1.2
/ N' { K% R/ o8 @0 C 网关路由器:192.168.1.17 Z5 \- L& e1 `
DNS服务器:202.102.224.69
( j5 q8 X/ f6 R& Y4 X: W
9 G$ x, }# T0 b3 q+ A 阿甘说:“要是重启了,我们是不是要这么重来一遍?”
- a& e4 y" P9 K4 B# n
$ q/ z2 W8 Y b0 G( V j$ h1 d “阿甘,你现在越来越聪明了,确实是这样,除非主人手动的给我们配置IP地址,网关,DNS,但是那样很烦,容易出错,所以一般情况下,主人都是依赖我们自动的去用DHCP搞定一个IP。”
( J% H4 l% M2 k5 i; L
9 d4 V( ?- j7 P, Q 经过这一番折腾,我也初步了解了我们所在的网络结构:0 J$ q* e6 A6 o' n: G w5 U* V
: w) K( r$ i; A0 c6 G5 O$ Z
3 z5 M2 `) T+ F5 V! ?: ADNS 和 ARP ( D4 U3 c5 w& J/ s4 C: q/ `' Q
搞定了IP地址,大家都喜气洋洋。我们赶紧把浏览器村的老IE叫来,让它访问一下著名的google网站。1 K! i5 o! g2 d. x0 a, {# R4 A
) K! `8 Z4 W6 P; t) S
老IE说:“你们还不知道?google在中国被屏蔽了,访问不了,要不访问百度吧。”#j319:4 y$ M8 L n( }- N' m' @1 [
; U+ o. `2 J3 e( i
我说:“都行,我们先访问一下试试。”
Z, I# w& P. W$ w) r
- C# y9 T( q3 P* g+ i9 K 老IE说:”百度的域名是www.baidu.com,你们给我查查它对应的IP地址呗!”5 I: P7 b; n( B1 q9 F6 D g; n
; R* q3 o- O& p" ` 阿甘说:“上个网这么麻烦,这么多地址要查”
. e) c' {. l" `, e- H- `: f7 f+ v8 X
2 o. U( P, K/ J8 }% Z5 G2 p “是啊,网络世界的规矩就是这样,想要互联,我们得有IP地址,也得知道对方的IP地址,现在只知道域名www.baidu.com,我们得给他翻译成IP才行,阿甘你准备一个DNS查询吧”老大说
* l5 S+ U! f& y& |; b& }5 X6 i
CPU阿甘遵照指示,先向金士顿内存问了DNS服务器的地址,然后写了这么一封信,交给我:
% q8 o3 \# U4 @/ {! |1 H; d 0 p3 ? ?9 V* R; c& t
发件人:192.168.1.2(我们刚刚搞定的IP)( A- d z$ v3 D t' F; T6 |) [
收件人:202.102.224.69(DNS服务器)/ o+ q$ ]2 z: O; c
内容:哥们,给我查查www.baidu.com的IP地址吧' B! @) P, O% K* U. P$ q
9 q, W& w5 t( V- x9 I0 A
“但是这封信发给谁呢,我需要知道对方MAC地址啊,总不成还是对外广播吧。“我心里想。 m* t) ` s1 C
: s- _, T# e+ Z: I t# I: G( O 操作系统老大看出了我的疑虑,解释说:“DNS服务器不在我们的局域网内,我们要把这个信发给网关路由器,他会想办法转给DNS服务器的。”, t6 w( B" X* j% e' f$ P& H j
R2 ^7 K y3 r" _6 r" S; S 我说:“可是我不知道网关路由器的MAC地址啊”% h2 X3 v8 y1 [" i5 L4 ?
1 ?8 _2 @, R @. U7 _% _% M 金士顿内存说:“别急,我查查之前我们存下来没有,我靠,刚才那个DHCP服务器(192.168.1.1)也是网关服务器,他怎么没把MAC地址顺便发过来啊!”( x7 [4 w3 p0 x) N4 l8 X
9 X1 L) H5 v7 F% H: u2 _& T7 ?( i
CPU阿甘急了:“TP-LINK7954,你是怎么干活的,怎么非得要MAC地址,直接用IP地址不行吗?”+ n# E5 r( x* T7 h. c
. Q8 r+ Y9 O2 p/ R0 ?" Z7 V) T
我回答说:“没办法,这是规定,你不知道网络是分层的吗? 我只工作在数据链路层,就得用MAC地址。另外网络多种多样,可不仅仅是TCP/IP,我要是只用IP地址,那其他网络怎么工作?”5 |7 i+ j3 t. H. ~0 c9 z
9 y p) [0 ?2 t2 [; R9 y. k& z8 m 操作系统老大说:“我记得好像有个叫ARP东西,可以通过广播查询一个IP地址对应的MAC地址,你试试”。0 c1 d8 G$ e' Q6 n
6 b4 m9 C5 Y' I4 C 其实我也想起来了,这个ARP叫地址解析协议,我可以把下面的消息广播出去,这个子网内的所有机器都会收到,网关路由器也不例外,他收到以后,一看是查询自己的MAC地址,就会创建一个ARP的应答。' o. G. H4 @) g3 B
" {! K5 o- r$ \' a& z' c 收件人:FF:FF:FF:FF:FF:FF (同一子网内的所有电脑)
8 w- J) [2 R0 B# s/ ^. c/ i 发件人:11:27:F5:8A:79:54(就是我自己了!)
, D+ l) T5 h5 p. L 内容:呼叫网关路由器(192.168.1.1),请问你的MAC地址是什么?% A6 N! F' c3 b/ E$ e% \
9 j8 r7 v+ {& v# { 过了一会,ARP应答果然来了,我们看到了网关路由器的MAC地址:88-25-93-79-E0-C8
2 l9 x4 m" O& s2 M9 ?# T1 ]. d( l4 H7 m8 S3 P0 w: I3 Q7 {
我告诉金士顿内存:“赶紧记下来,下次咱就不用再查询了”
( @3 x' B6 U/ X A& v
3 @% ?, [7 Z- E8 Z% `3 d9 {# u 192.168.1.1<-->88-25-93-79-E0-C80 v+ K8 n8 |5 m: X
; ~: B U( o5 K/ f: Y" e0 n1 z2 @
有了网关路由器的MAC地址,剩下的事情就好办了,我只需要把之前准备好的DNS查询发给网关路由器即可。) b: @4 `* I z
% d. n' ?+ ?, e% u/ b- p+ o2 K 阿甘好奇问我:“你只把这个信发到网关路由器,剩下的事就不管了?”
+ }; V: t5 j0 S, q7 g( G; K- O5 o' x' {+ D- N* m# g- k
我没声好气的回答它说:“那当然了,我只能管局域网的事情,出了局域网,那就是路由器的事情了,路由器能抽取这个DNS查询的数据报,看到收件人是202.102.224.69(DNS服务器),自然可以转发出去,我们完全不用担心。”% n0 x. F" ?: h1 W$ L
: G6 \2 L) ]7 c4 O# s 我们等了一会,DNS服务器很快就返回了www.baidu.com的IP:115.239.211.112
) h$ Y- m' }* T- o( f! j
8 b& a# }$ `! p, [ 金士顿内存说:“我记下来了,上网看来一点都不好玩啊,这么费劲。”( l* A! z* A+ w
( d9 T* _! Z+ K8 A
老IE说:“好玩的在后面呢,现在所有的东西都齐活了,开工~”4 S# N; [4 @: }/ x
8 L" b+ V, d/ H% O0 Y' B. }0 ] 老IE开始创建TCP连接,然后通过TCP发送HTTGET请求,轻轻松松的把百度的主页给取了下来,展示了出来。
( ?5 u M5 p W }( r9 g* Q, S
8 ?' ~7 `- }( p8 H2 O 大家第一次看到外边的世界,激动万分。% g0 g: _) f- c k
1 X/ u+ a+ W$ u2 g4 ?' C 当然还是我最忙,因为老IE的所有信件都需要我去发送和接收。8 s9 Z+ M; B6 s& S* k' D- V
, ]) G/ I, A+ v% l) ~" b. T尾 声
% K& S: |% t% Q 这几个月以来我都是电脑里的最忙碌的人,一旦可以上网,大家都上瘾了,浏览网页,刷微博,看视频,玩游戏,每天把我累的要死。5 a: c0 p. s. x5 W& G+ o
$ U! f$ X2 T* K, \" s& }$ ^
日子就这么一天天过去,有一天,大家发现主人把一个新家伙通过USB接口插到了电脑上,然后顺手拔掉了网线!8 Y' q8 x6 Z! v, r1 L, f3 N. O0 n5 b
" | r5 Z' m( Q 我失去了和交换机的联系,无法联网了,难道我们电脑又要成为一个孤岛了吗?8 D8 e5 i( f' P) `, H3 D. J! n: Z
1 [6 V# n; g, v2 Q) N5 M
老IE还正在访问一个博客网站呢,一下子就断了。
+ E' P1 [7 y9 E- Y$ A2 O3 ^
7 U! A9 m3 d! w# `/ s& k 不过奇怪的是,CPU阿甘,金士顿内存,操作系统老大竟然都围着新来的家伙重新玩起了DHCP,DNS,ARP,并且连上网了,所有的信件都由这个新家伙来传递。. F: v& A" q6 L& I6 z. b$ w% S9 ]
) p+ u& E; r. s 我偷偷的问老IE:“这是怎么回事?”7 ?' I& i7 f+ T5 R
% M9 L Z, d& O) x: H5 F) T, A3 M/ X
老IE说:“看来你已经失宠了,新来的家伙叫无线网卡!” - G$ o1 M9 E9 K; P6 ^
- T" G, ^8 c1 r T |
|