渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(1)
前情回放:楼主作为一个渣渣(学渣技术渣)小本,到了大四求职已经是迫在眉睫,前两天的处女面让楼主对于计算机基础学科复习的重视度迅速上升。于是,给自己定了一个规矩:每天都要写一篇技术博客,描述自己复习的内容和进度,欢迎大家督促——大小牛指点指点,同为渣渣的童鞋可以共同学习。
其实对于基础的重要性,我在大三末的时候已经有所意识到了,可为什么总是没有真正的重视起来,从而去认真复习巩固呢?打个比喻,一个宅男总是被人提醒说跑步能够锻炼身体,他自己呢,也觉得跑步是能让自己身体没那么虚弱的,但他从来没真正去跑过,坚持跑上几个星期几个月,让自己的身体真正感受到跑步的好处。回到我自己的身上,我之所以一直没有沉下心来复习基础,就是因为一直没感受到基础的重要性和好处。
在被UC面试官提醒之后,我抓紧时间开始复习,同时也提醒自己带着这么一个问题进行计划,那就是:我为什么要复习这些东西,复习这些东西有什么用?
———————————————————————————————闲聊结束—————————————————————————————————
首先,我们从TCP/IP协议栈开始。看到这篇博客的童鞋,有空的话帮我解决一个疑问:为什么要学习TCP/IP协议栈,学来有什么用呢?
主要参考书籍——《图解TCP/IP》(第五版)【日】竹下隆史著。
第一章——未来人工智能的奇幻之旅
谈到TCP/IP协议栈,我就不禁想起面试官问我的那道题——“TCP/IP协议栈分几层?”大家都应该知道有几层,分别是什么,楼主就先不写出来了。说到分层,大家在学习计算机网络课程的时候,一开始接触都无疑是最著名的OSI参考七层模型。许多通信协议,都对应了7个分层中的某一层。通过这一点,我们可以大致了解该协议在整个通信功能中的位置和作用。这就是为什么在学习每一种协议之前,首先要学习OSI模型。
如上图,OSI参考模型中各个分层的作用分别是——
应用层:为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件以及远程登录(虚拟终端)等协议。
表示层:将应用处理的信息转换为适合网络传输的格式,或讲来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。
会话层:负责建立和断开通信连接(数据流通的逻辑通路),以及数据的分割等数据传输相关的管理。
传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。
网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。
数据链路层:负责物理层面上互连的、节点之间的通信传输。例如1个以太网相连的2个节点间的通信。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
物理层:0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。
了解了各个分层的作用,好像也不太能记得住,我记得当时计网老师给我们看过这么一个图,并且叫我们一段话描述通信的过程。
老师给出的标准答案固然专业,但是我觉得下面的一段描述或者能够更能够帮助我们进行记忆和体会其中的美:
在未来,伟大的人类终于发明了能量体人工智能,而这项杰作能够通过计算机网络进行移动和幻形。
首先,想象一个站在你面前的人工智能体(参考对象——ET外星人),“嗖”地一声进入你的电脑屏幕,并且在里面向你招手,这时候他所处的位置是应用层。突然,他转过身,向一个黑洞跳了进去。镜头切换到表示层,他就像玻璃一样碎成无数的晶晶片片,在空中停滞了几秒钟后仿佛活了过来,排列成特殊的有规律的一个一个编码。完成变化的瞬间,在遥远的另一个地点,虚空中一个玄奥的符号(会话)隐隐浮现了出来。
紧接着就是传输层,虚空中的两个点互相确认了对方的存在,无形之间建立不可见但实际存在的联系。然后,我们可以看到神秘编码根据某种规则分开、变化,形成一个又一个的光团。这些光团一个接着一个地冲了出去,通过成千上万的虚无通道(数据链路层和物理层)飞速移动,在数量数之不清的黑点(路由器)中转换方向,到达目的地。
视角上升,上升,一直上升,我们从极空中俯视,可以看到无数不停明灭变化的光点组成的光带,蜿蜒绚烂。那个玄奥的符号开始发起光来,光越来越强,到最后竟然快要让人忍不住遮住自己的眼睛。过了几秒钟,慢慢睁开眼,可以看到人工智能体在目的地向等待已久的镜头微笑致意,仿佛完成了一次伟大的表演。
第二章——模型与实际的区别,TCP/IP协议分层简介
由于各种各样的原因(欢迎大家在评论中说明),虽然从20世纪90年代开始,ISO开展了OSI这一国际标准协议的标准化进程。然而,OSI协议并没有得到普及,真正被广泛使用的TCP/IP协议。
甚至可以说,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。下面,我们来看看OSI模型与TCP/IP模型的对比图:
根据上图,我们可以发现TCP/IP协议分为四层,分别是应用层、传输层、网络层以及网络接口层,对应OSI的关系也一目了然。
如果在之前我们就能很好地理解OSI模型各层所起的作用,那现在我们就可以很轻松地得出结论,指出TCP/IP协议栈中某些协议所起到的作用大概是属于哪种类型的。例如TCP协议与UDP协议属于传输层,无疑就是关于管理(建立、断开)两端口之间的连接;而IP则必然是关于寻址路由的协议。
——————————————————————————分割线重现江湖———————————————————————————————
最后说几句:
1.未来至少一个月,每天都要坚持写这样的总结性技术博客,为的是自己能够收获更多,鼓励自己、给自己信心。
2.博客会尝试各种各样的手法去写,期待大家的建议和意见。
3.在写这篇博客的时候,我就在想,其实,写这些文字的时候我为的并不是为了通过一些面试从而得到几份offer,而是在这个过程中加深自己对IT的认识,培养更多的兴趣,享受学习这么一个过程。突然有种不想太早找到工作的感觉,哈哈。但也不要太晚了,怕心脏受不鸟。