大家好,给大家介绍一下,我是一个字节。相比于你们人类据说即将达到的百岁人生的寿命,我的一生简直不直一提(我只能存活零点几个毫秒)。
也许只有那些码农才会了解我,而且也只有一部分码农。那些整天做业务的猿们想来也不会真正的了解我,更别提人类其他行业的人了。
我不甘心,虽然我微不足道,但是我对人类的贡献实在是太大了。没有我的世界根本无法想像:不能听网易云音乐,不能刷抖音,不能上拼多多,所有和网络相关的活动都无法进行。
所以,今天我要讲讲我的一生,让更多的人知道我的存在,知道我的故事,也为证明自己曾经存在过吧。
诞生
我的主人是一个在西二旗知名互联网公司上班的程序猿,过着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
会被拆解成三部分: https
、 www.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屏幕上。
我的主人点开第一话题后,看了一会儿。然后瞅到了到植发广告,他偷偷地开启了隐身模式,仔细地研究了起来……
后记
第一次尝试这种题材的文章,供大家一乐!有写得不到位的地方,欢迎探讨!
另外,推荐大家去看《网络是怎样连接的》这本书,看完可以形成对网络的整体印象,写得非常好!
推荐阅读:
“三次握手,四次挥手”你真的懂吗?
深度解密HTTP通信细节