大家好,给大家介绍一下,我是一个字节。相比于你们人类据说即将达到的百岁人生的寿命,我的一生简直不直一提(我只能存活零点几个毫秒)。

也许只有那些码农才会了解我,而且也只有一部分码农。那些整天做业务的猿们想来也不会真正的了解我,更别提人类其他行业的人了。

我不甘心,虽然我微不足道,但是我对人类的贡献实在是太大了。没有我的世界根本无法想像:不能听网易云音乐,不能刷抖音,不能上拼多多,所有和网络相关的活动都无法进行。

所以,今天我要讲讲我的一生,让更多的人知道我的存在,知道我的故事,也为证明自己曾经存在过吧。

诞生

我的主人是一个在西二旗知名互联网公司上班的程序猿,过着1095(注:早10点晚9点,一周5天工作)的生活,很少能在晚霞中回家,自然也说不出“落霞与孤鹜齐飞”那样的句子。

这一天,他9点半到家,第一件事打开电脑,熟练地启动chrome浏览器,在地址栏敲下一个z字符,我所有的故事就从这里开始。

当主人按下键盘上的z键时,系统了产生一个中断信号,通知CPU过来读取键盘输入,CPU读取到z后,将z发送给chrome浏览器, chrome收到后,将z显示到浏览器的地址栏上,同时后台搜索主人平时访问过的地址,排名第一的https://www.zhihu.com/被快速补全了。

这时主人熟练地按下了回车键,chrome收到指令后,进行了一顿操作,在这电光火石之间,我诞生了,同时诞生的还有我的字节兄弟们。

上路

话说Chorme老大哥接收到了URL后,首先拆解成自己能看懂的东西。https://www.zhihu.com会被拆解成三部分:httpswww.zhihu.com/

https表示协议类型,通过这个Chorme老大哥知道他接下来该如何与远方的网站服务器通信;www.zhihu.com表示主机名,就是Chorme老大哥要通信的对象了;第三部分则是它要向服务器要的内容(注:这里表明是空,实际上隐含的表示主目录文件的概念)。

有了这三项,Chorme老大哥就能从服务器那里获取它想要的内容了,从而展示给我的主人。

Chorme老大哥跑到HTTP数据包生产车间,哼哧哼哧地倒腾半天,生产出了一个HTTP数据包(注:忽略https, 简单起见我们当成http),这个数据包实际上就是我和我的一群字节兄弟们,我们挤在一个集装箱内,熙熙攘攘。

我们马上就要搭乘IP列车到远方的服务器,见识外面的世界了。集装箱被装上了TCP专车,它将带我们来到列车站。TCP专车很安全也很舒适,我从集装箱的缝隙中看到车前贴上了车牌:80.

到了车站,TCP专车直接开到了列车上。这样也好,IP列车上很脏,我们坐在专车上更好。 只是列车还不知道具体要去哪,所以我们就只能先在列车上等着了。

不对啊,列车应该去www.zhihu.com这个网站,不是已经知道了吗?对的,但是IP列车挺笨的,也挺古板的,不认识这些字母。它只认识数字,人类称之为ip.

Chorme老大哥也有点抱怨,人类真是笨,连个ip都记不住,非得用域名来上网。害我还得拿着这个域名去问DNS老大爷,它知道所有域名对应的ip.

这不,Chorme老大哥又跑到另外一个车间————DNS数据包生产车间里倒腾出了一个DNS数据包,当然还是一群字节兄弟们,不过这里的兄弟就少一些了。它们在集装箱里叽叽喳喳,被装上了UDP敞篷车,车虽然很快,但不太安全,我这些兄弟们坐在上面,提心吊胆,生怕掉下去,因为掉下去,就永远消失了。

UDP敞篷车也直接开到了IP列车上,车前贴了车牌:53.

这回Chrome老大哥直接从操作系统大佬那要到了DNS老大爷的ip, 贴到了IP列车的车头,IP列车马上全速启动,载着我这些字节兄弟,赶到了DNS老大爷的城堡,UDP敞篷车开下列车,按照车牌号53找到了DNS老大爷的住处。从它那拿到了www.zhihu.com对应的ip.

DNS老大爷学问渊博,他也很仗义,从自己城堡里的DNS数据包生产车间造出了DNS响应包,包里也是我这些字节兄弟们,它们拿着重要的资料数据————www.zhihu.com对应的ip, 坐上了另一趟返程的IP列车,而列车的终点就是我现在所在的地方。当然了,他们是由另一辆UDP敞篷车载着他们回来的。

Chorme老大哥在车间接见了这些兄弟,非常感动。因为他们带回了www.zhihu.com对应的ip. 那些兄弟争先恐后的报告自己知道的东西,有些兄弟报告1, 有些兄弟报告0, Chorme老大哥非常有经验,它把这些消息合并起来了,最终得到了它想要的ip: 118.89.204.192.

Chorme老大哥拿着这个ip来到了我所在的列车前面,我激动地要叫起来了:终于我要出发了!它熟练地把118.89.204.192贴到了列车的前面,马上列车就开动了,我上路了。

IP列车的列车长在掌管着车头的方向,决定着我们的命运走向。路网非常复杂,而车头上只有一个ip地址,根本没告诉列车长应该走哪条路。这不难,富有经验的列车长根据车头的ip地址查到了下一个大站(路由器)的地址,之后再根据这个大站地址查到(ARP协议)途经的下一个小站(交换机或集线器)应该走的轨道。在每个小站,对照这个大站地址,列车长就知道该走哪条路。搞定!

经过了很多的小站,我们终于到了下一个大站了。站点的工作人员看着我们车头前的ip地址,查了下表(路由表)告诉我们下一个大站的地址,并且告诉我们途径的下一个小站应该走哪条轨道。列车长就这样,一路拿这张表,顺利地把们带到了终点: 118.89.204.192.

不过,刚刚就在到终点的前一刻,列车被拦住了,一群荷枪实弹的警卫冲上来了,一些胆小的字节兄弟们都哭了,我也是屏气凝声。他们先是查看了车头的ip地址,再查看了列车长手里的表,还看了下我们的TCP专车的车牌。很快就放行了,虚惊一场!

新生

到了终点站后,列车首先停下接受工作人员的检查。列车长出示了他手里的表,对了一下表上标注的下一站地址确实是:知乎。接着又看了下列车头部标注的ip地址,就算检查通过了,第一关很轻松。

接下来,我们坐的TCP专车开下列车了。进了一个TCP车牌检查站,工作人员看了下车牌号80, 也挥手示意我们通过。

接着我们都下车走进了主页车间,进去后,我们先按我们身上的标号排好了位置,工作人员将我们每个人所代表的信息进行了聚拢。得到了各种关于主人的信息,比如他所用的浏览器的版本,cookie等等信息,我知道,我们的使命完成了。果然,一道光闪过,我们都消失了,完成了我们光荣的一生。

主页车间领导马上下达生产命令:1组去仓库拉取最新话题,2组去商业中心获取今天的广告主信息……

很快,各组都完成了任务,车间在一阵轰鸣过后,新的一批字节兄弟诞生了,他们带着这些话题、广告信息,和我们当年出生的时候一样,熙熙攘攘。但是我知道,我获得了新生。

归家

像我们当年一样,这些新出生的字节兄弟依次坐上了TCP专车IP列车一路跋涉,去往我出发的地方,那是我梦开始的地方。

我所经历的,他们未曾少过一分。

定格

Chrome老大哥终于等来了这些字节兄弟,在他们排好队后,老大哥看清了字节兄弟们代表的内容:话题如何在西二旗地铁优雅地装逼,热度10w, 广告上午植发,下午上班……

这些是Chrome老大哥最擅长的事情,分分钟将他们显示在了网页上。字节兄弟们终于完成了使命,定格在了retina屏幕上。

我的主人点开第一话题后,看了一会儿。然后瞅到了到植发广告,他偷偷地开启了隐身模式,仔细地研究了起来……

后记

第一次尝试这种题材的文章,供大家一乐!有写得不到位的地方,欢迎大家补充!

另外,推荐大家去看《网络是怎样连接的》,看完可以形成对网络的整体印象。写得非常好!

QR

参考资料

【知乎回答】 https://www.zhihu.com/question/292704461/answer/482549197

【当我们谈网络时】 https://segmentfault.com/a/1190000004094420

【按下键盘时】 https://www.zhihu.com/question/29707696

【mac地址和ip地址】 http://blog.sciencenet.cn/blog-411071-1037673.html