计算机网络概述以及其中的一些思考(上)

OSI七层模型

OSI七层模型是计算机网络最经典的一个设计,让每层都专注于做自己的事情。

下图是关于OSI参考模型的图,也就是我们常说的网络七层

OSI参考m模型

注:上图为OSI参考模型,其中每层的头部信息含义如下
* AH:应用层首部标签 (Application Head)
* PH: 表示层首部标签 (Presentation Head)
* SH: 会话层首部标签 (Session Head)
* TH: 传输层首部标签 (Transport Head)
* NH: 网络层首部标签 (NetWork Head)
* DH: 数据链路层首部标签 (Datalink Head)

应用层

主要包含了不同应用的协议、数据格式等等。涵盖了各种应用级别的协议,包括邮件、浏览器等一些应用的网络请求发起
主要包涵常见的ping、telnet、OSPF、DNS等等
应用层添加的应用层首部标签(AH)主要涵盖了和协议相关的内容。

比如:
A 对 B 发送一封"早上好"的邮件,那么邮件的协议会在要传送数据的前端附加一个首部(AH),该首部标明了邮件内容以及收件人为 B ,之后在 B 接收到邮件之后,会由 B 的主机上的应用分析首部与正文,然后保存到硬盘等等

表示层

主要进行数据统一处理,将应用层的数据统一进行翻译、压缩、加密解密等。
为了识别编码格式也会附加首部标签,即为表示层首部标签。

比如发送文字消息时,文字的编码格式有GB2312、BIG5或者ISO8859-1等等,表示层就会将其转化为统一的网络数据格式进行传输,然后再由目标及的表示层进行解析。

会话层

接收数据并建立传输通道,RPC。
会话层首部标签记录着数据的发送顺序的信息。

比如:
用户同时发送多封邮件,是每发送一封就创建一次连接,然后断开连接再重复这个过程;还是创建连接之后将多封邮件一并发送之后再断开连接;抑或是同时创建多个连接并行发送。

传输层

进行连接的建立以及断开的处理。
而且当发现接收方没有收到消息或者收到的消息不全时,还会进行重发。
这个过程就好比生活中两个人在聊天,没听清对方说什么,就会问:“对了,你刚才说什么?”

传输层的一个重要作用就是保证数据传输的可靠性,为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据(目标端口号以及源端口号)。

主要包涵两种协议,TCP和UDP,后边我们再细说

网络层

将数据根据目的地址传输到对端的执行者
主要有ICMP和IP
然而最核心的还是以IP作为目的地址
所以,网络层的首部标签主要包含了发送端IP地址、接收端IP地址以及上层协议类型(TCP/UDP)

数据链路层

通信的传输都是通过物理的传输介质来实现的,而物理介质中,消息是以波的方式存在并进行传输。所以,数据链路层就是在这些通过传输介质互联的设备之间进行数据处理。

所以,用一句话概括数据链路层就是——帧和介质访问控制。其中,帧就是数据链路传输的数据块,而介质就是互联网之间的连接介质,比如双绞线、wifi等等。

由于传输的是数据块,所以,在之前OSI模型中,大家应该也发现,前五层都是增加首部标签,而数据链路层增加的是首尾标签。包含了传输一些必须的数据(发送端MAC地址、接收端MAC地址、以太网类型、循环冗余校验等)。

物理层

将数据的0、1转换为电压和脉冲光传输给物理的传输介质,然后相互直连的设备之间再使用MAC地址(目标地址)实现传输。

会话层与传输层的区别

会话层负责决定建立连接以及断开连接的时机,而传输层主要进行时机的建立和断开连接处理。就像客户有了某个需求,会让乙方去执行,当乙方完成之后交付甲方供其使用。这时,客户的角色就是会话层,负责决定什么时候开始,而乙方就相当于传输层,根据指令来具体的实施并完成任务。

传输层与网络层的关系

传输层是为了保证数据的送达性,而网络层负责数据的传输

网络层与数据链路层的关系

这两者都是基于目标地址将数据传输发送给接收端,然而网络层是最终的目标,而数据链路层只是某一个分段内的传输目标。

而我们常说的TCP/IP四层协议,就是将应用层、表示层和会话层合并为应用层,数据链路层和物理层合并为网络接口层。

小结

到这里,基本阐述了一下OSI模型中各层的一些职责及应用。其实从图中和介绍不难看出,OSI的思想和MVC有异曲同工之妙。将一个复杂问题拆分,然后每个'模块'负责做好自己的事情并为后置/前置模块提供服务。这其实对应就是设计模式中的函数式编程或者工厂模式。每一个函数就是一个黑盒,所做的事情也是单一的事情,当组合起来,就可以实现一整套流程。这样在后续的测试、维护、二次开发都会节省很多时间。

至此,OSI七层模型已经大致了解了,接下来,再聊聊TCP/IP(简化OSI)的进化史,同时,也为之后的内容做一个预热。

TCP/IP的前世今生

TCP/IP 的历史

很多先进的技术都是先应用于军队

上边这句话不知道出于何处,但是讲道理来说是适用于很多情况。比方说,我们现在离不开的互联网,最初,就是有军用技术演化而来。

TCP/IP的起源可以追溯到由美国国防部(DoD)高级研究计划局(DARPA)在二十世纪六十年代后期和七十年代早期进行的研究。

在20世纪60年代,那个时候,网络还是小型局域网,一个中央节点连接着所有的设备。这就有一个很明显的问题,当中心节点被敌人攻破,那就意味着整个网络瘫痪,如果在战争中出现这种情况,不说注定失败,但是肯定会是很麻烦的状况。

所以,在60年代后半叶,已有很多的研究员投身于研究一个能在某些节点发生故障时依然保持坚挺的网络,当时他们称之为ARPANET,这也是全球互联网的鼻祖。

之后在20世纪70年代前半叶,ARPANET中的一个机构研发出了TCP/IP。

紧接着在1980年,ARPANET中的很多大学和研究机构,搞了一套叫做BSD UNIX的操作系统,并在其中实现了TCP/IP。

然后在1982年(20世纪90年代前半叶)才最终确定下TCP/IP的具体规范。

之后在1983年,TCP/IP便被ARPANET正式采用。

同年,前SUN公司也向一般用户提供实现了TCP/IP的产品。

还是在神奇的80、90年代,火借风势,风助火威。在局域网、UNIX工作站等高速发展的时代背景下,TCP/IP也成为了构建网络最靠谱的协议族。

慢慢的,基于TCP/IP而形成的世界性范围的网络——互联网。

最初的互联网,其实是比较麻烦的。不论是当时的拨号方式,还是有限的用户群(仅为有限的用户服务),抑或是加入通信的方式复杂等等,都是当时人们的痛点。

针对与这些问题,ISP公司将其技术上的痛点进行了改善并面相所有用户提供服务,这时,人们便可以通过WWW获取世界各处的信息以及向全世界发布自己的消息了,互联网作为一种商用服务也迅速发展了起来。

TCP/IP 标准化

TCP/IP的标准化过程和其他的标准化过程略有不同,具有两大特点:

开放性

TCP/IP 是由IETF组织讨论指定的,而IETF本身就是一个允许任何人加入进行讨论的组织。

实用性

TCP/IP 的标准制定是在实现了通信之后才开始制定的。

TCP/IP简直就是先开发程序,后写规格标准。

所以,在某个协议的最终详细规范出炉的同事,其中一些协议已经在某些设备上正常使用了。

然后再根据使用情况,再由IETF进行讨论并进行修改。

最终确定下来的标准化协议会列入RFC(Request For Comment)文档并在互联网上公布。其中不仅记录了协议规范内容,还包含协议的实现和运用的相关信息。

RFC文档地址: RFC(Request For Comment)
PS:真的是很简单的网站……

至此,关于网络的OSI模型以及其间的关系大致介绍完了,在之后,会将TCP/IP协议这里相关的协议诸如 HTTP、TCP、UDP等再进行详细的介绍