导航
导航
Posts List
  1. 计算机网络再入门

计算机网络再入门

计算机网络再入门

前一段时间,在android的开发中,本着组件化的思想,对应用的网络请求进行了组件封装,采用了Retrofit+OkHttp的组合,在开发的过程中遇到了不少问题,有设计问题,也有技术问题,这都是后话了,在后面的文章再来总结。在这中间,我深深的感觉对计算机网络的知识的不熟练,或者说是对理论在实际开发中的应用的陌生,并没有做到了然与胸,所以说需要再次入门啊!!!

那为什么说是在入门呢,说来惭愧,计算机网络这门课,在本科阶段和研究生阶段都学了一边(PS: 研究生阶段的课没去上,但听说很水,考试还不如本科的难度),但当真正在开发中的时候却发现还是太嫩了,所以不得不喷一下现阶段的大学教育,还是缺少实践啊(其实不是自己太懒,没人领入门啊)。没有实践,强制搞理论,特别对于没有基础的那真是一个痛苦啊(本科阶段的写照),现在想想,你好歹打开浏览器,按个F12给我看看网络请求时的样子也好啊,然而并没有,这就比较伤了。ちくしょう。

好了,言归正传。说到计算机网络,就想到五层模型。不得不说,五层模型这种分层架构分离了职责,每一层所负责的任务不同,降低了网络的复杂度,并使得整体的结构变得清晰。我觉得计算机的很多理论知识和体系都是来源于生产生活中,对生产生活中的行为进行总结,抽象建模后进行模式剥离,并上升到理论的层面。同样的,说到计算机网络,本质上就是进行资源的传送,这和送快递其实没有本质上的区别。

下面是对五层模型和快递的类比。

理论抽象 现实生活
应用层协议:主要规定了客户端和服务器端的通信格式,不涉及数据的具体传输事项。 快递单:指明了寄件人和收件人之间的通信根式,而不管快递是怎么送达到收件人的手中的。
运输层协议:主要解决如何进行可靠的传递数据包,使在网络的另一端可以完整,有序的接受到所有的数据包。 快递公司:对寄件人的包裹进行分拣,整理,归类,保证所有的包裹可以完好,全部交到收件人手中。
网络层协议: 主要解决网络路由和寻址问题 物流公司:对运输线路进行查找和规划,找到可以到达目的地合适的路线
链路层协议:主要解决将网络层报文封装成帧,透明传输和差错校验 汽车公司 :对快递进行分车装载,而不管快递的内容和快递公司是哪家,同时保证快递不丢失
物理层协议:主要确保原始的数据(0,1)可以在各种物理媒介上进行传输 交通网 :运输的各种基础设施,包括公路,铁路,航空,海路,承载实际的货物运输

不同层的上有不同的协议,同时依赖着不同的底层协议。协议的层次关系可以表示为 :

层次图

数据一般由应用层产生。每一层协议将上层协议的封装的数据作为原始数据,再加上本层协议的数据控制头后,再传给下一层继续传输,直到到达物理层。不同层的数据封装过程可以表示为:

数据封装