故事:唐三藏西行之网络原理通信全过程

网络 网络管理
贞观元年,玄奘结侣陈表,东土大唐的国王(指浏览器)让唐三藏(指要传输数据报文)西行求取真经(指目标 IP 地址)。

贞观元年,玄奘结侣陈表,东土大唐的国王(指浏览器)让唐三藏(指要传输数据报文)西行求取真经(指目标 IP 地址)。

这时,唐三藏只要自己的任务是取得真经,但是不知道取经具体的位置。于是唐三藏拿出了手写薄的,手写薄上很清晰的表明了地名对应的经纬度。

经过一番查阅后(指DNS查询),原来取经的地方叫做天竺国(指域名),在北纬 xxx 东经 xxx 处(指IP地址)。

既然唐三藏决定西行了,不得不收拾一下行李准备出发。东土大唐的国王跟唐三藏交代了一封信(指应用层中的数据报文信息),如果取到了真经,千万不要忘记把本王交给你的这封信亲自传递给西方的那位长老。

但是为了怕这封信丢失,所以将这封信缝到了他的身上,保证唐三藏在路上不会被偷走(指采用了 HTTPS 协议进行传输)。

同时这封信的封面会有部分的说明,比如谁才能看这封信以及写信人是谁(这里指 HTTP 头部对报文内容的一些说明信息)。

随后,将唐三藏派到了运输部门(指传输层),让其选择西行的方式,运输部部长问到,长老选择是步行(指UDP),还是骑马呢(指TCP)?

步行的话不能确保你能顺利走到目的地(UDP 是无状态连接协议),如果你半路失踪了,我们会继续重新派人去西行(指重新发送数据包)。

如果你选择骑马的话,会给你一匹上好千里马,可以保证你能够顺利的达到目的地(TCP是面向连接的,稳定性好)。

同时,这些马匹都是受过训练的,到了那里会知道从哪个门(指端口号)进入院子,找到该寺庙的长老,不然走错了寺庙或者大门,都无法准确的将这封信带到。

唐三藏心想,去一趟西行不容易,自己走丢了还不说,别把国王交给我的信弄丢了。还是骑马比较稳定,选择了一匹灵性十足的马,起名小白龙。

此时唐三藏打算开始从东土大唐骑着马开始准备出行,但是遇到一个问题,手写薄上虽然有着精确的经纬度,但是这个地址是是在本地还是在国外呢(指在本网络还是其他局域网)?

最后询问了一下东土大唐的国王,国王派信使去阅库查了查玄奘给的经纬度标识信息(指IP地址头部),嗯~ 这个地址是在国外的,并告知需要经过很多个国家(指路由/网关)才能到达。

这一路西行,要经过很多个国家和村落,宝象国,乌鸡国,车迟国,西梁女国,祭赛国,朱紫国,狮驼国,比丘国,灭法国,凤仙郡,玉华州,金平府等十几个国家。

国家与国家之间的国王是相互联系和商业上的交往的(指有路由表),当唐三藏来到一个国家不知往哪走了,此时国王会告诉他如何到达下一个国家,比邻国之间国王是比较熟悉的。

这些国家的经纬度(指网关的 IP 地址)都是联合国(指 DHCP 协议)同一发放的。国家又分为很多个小城镇,每个小城镇经纬度(指局域网中主机的 IP地址)这些都是由每个国家进行分配的。

如果国王想知道某个经纬度是哪个小城镇,就会派出多个信使(指ARP协议)去各个小城镇询问。此时高老庄的猪八戒回应,我老猪家的经纬度和你询问的这个经纬度(IP地址)是一样的,但是我老猪家真正的地名叫做高老庄(指MAC 地址)。

唐三藏和三个徒弟来到了宝象国(碗子山波月洞黄袍怪),参见宝象国的国王之后。

唐僧问到:“贫僧自动土大唐而来到西天取经的,路过本地,可知下一步往哪走?”

国王回答:“先坐下来用斋住宿一晚再出发也不迟呀,正好我也帮你问问邻国的其它国王(指查路由表),自然而然知道下一步往哪走了。”

于是国王派守城的门卫去给临国的国王飞鸽传书(指路由协议 OSPF/BGP),问一下去西天取经是否经过你们那里。

虽然各个国家都是由联合国分配经纬度(IP 地址)的,但是在国家之间的交易中,通常使用的带有唯一标识的国家标识(指 MAC 地址)来辨认对方是哪个国家的商人来进行交易的。

随后师徒四人先后经过了乌鸡国,车迟国,西梁女国,祭赛国,朱紫国,最后来到了天竺国,见到天竺国的国王,又是一句老台词 “贫僧是自东土大唐而来到......”。虽然师徒四人来到了最终的取经的国家(指目标地址的网关),但是不知道要到哪个具体地方(指目标服务器)求取真经。

于是天竺国的国王派出很多信使,问问到底哪个小城镇可以取得真经。这时,有位寺庙主持回应道,可以来我这里取得真经,我的 MAC 地址是灵山雷音寺,最后师徒四人来到了灵山雷音寺,本以为很快可以取得真经,但是万万没想到的是....

“你们这几个人除了这个和尚,人不是人,鬼不像鬼的,是不是真的从东土大唐而来必须经过检验才能给你换的真经”,寺庙的老和尚说。

此时玄奘拿出路上记录的艰难险阻的文卷以及穿在袈裟等东西都要验证是否为真玄奘(指目标服务器开始在网络五层协议的每一层拆分报文判断信息的正确性)。

将袈裟交给了裁缝看,裁缝看后,这是真的。随后把记录的文卷交给文部查看,没错,也是对的,最后将化斋的金箔交给了商部检验,没错,是块好金,最终才确定是他真的唐三藏,最后取得真经后,唐三藏找到了该寺庙的老和尚,将国王的信亲手交给了他,老和尚表示非常的感激。

其实上述过程在网络中可以解释为以下过程。

报文信息到达目标服务器后,首先取出以太网协议 MAC 头部,判断是否和自己的 MAC 地址是否相同。

如果相同,然就交给上层的网络层取出 IP 头部,判断 IP 地址和目标服务器是否正确,发现正确无误。

最后,将 TCP 头部取出,交给了传输层,嗯,没错,包括端口号什么都是对应正确无误的 ,将报文的信息通过端口传给相应的应用程序。

这一路上,师徒四人路上经历的九九八十一难,唐三藏并没有被妖怪吃掉,国王的信封也没有丢失,才保证了整个通信中数据包的完整性。

万一被妖怪吃了唐僧肉或者在女儿国出嫁、过河掉入河里,整个网络通信过程数据包就此丢失了,只能重新派人去西天取经。

后记

其实玄奘还没有完成最后的任务,因为东土大唐的老百姓还不知玄奘是否活着,所以唐三藏不得不走原来的路,再回到东土大唐,百姓们,我回来了!看我给你们带什么回来了,是几百本文卷哦!

本文为了通俗易懂,可能兼顾不到里边很多的细节,主要为了让刚刚接触到网络原理的人对网络通信有一个大概的认识,后边学习来就相对较轻松一些,后续会继续写一些具体网络协议的文章。

 

责任编辑:赵宁宁 来源: 小鹿动画学编程
相关推荐

2011-02-22 10:46:02

Samba配置

2011-09-06 15:38:20

QT安装

2009-04-13 12:37:18

2011-01-21 17:51:52

2009-12-08 17:56:16

WCF配置

2011-04-18 15:56:10

软件测试

2020-12-23 07:53:01

TCP通信Netty

2022-08-22 08:45:57

Kafka网络层源码实现

2010-06-12 10:03:20

Ubuntu Grub

2011-03-11 10:39:02

YUM安装LAMP

2010-07-21 14:51:19

telnet-serv

2019-05-14 15:27:31

MongoDB自动备份数据库

2010-06-17 13:10:09

Linux Grub修

2012-11-06 10:19:18

Java自定义加载Java类

2010-11-19 10:11:49

Oracle物化视图

2010-03-01 17:01:03

Python编程技巧

2009-06-10 16:55:42

cygwin netb安装

2010-03-10 13:24:45

Zend Debugg

2010-11-19 09:30:29

2009-11-02 14:53:30

Oracle创建用户权
点赞
收藏

51CTO技术栈公众号