首页 > 代码库 > Ch1.概述

Ch1.概述

Ch1.概述

  计算机网络是一个神奇的世界,在这个世界中无时无刻充斥着飞速传递的信息,而我们正是来研究这些信息到底是如何从从一个台孤立的计算机传递到其他计算机的,就我看来这是一件神奇的事情。

  首先我们来想些非技术的东西,声音是信息的一种,它的传播需要介质,由此我们可以想象,目前我们所接触的一些信息,它的传递都是需要介质的,一台计算机与另一台计算机之间如果没有物理上面的线路连接肯定是不能传递信息的(wifi,空气除外==),首先我们用一根线将两台计算机连接起来,这样他们初步具备了理论上相互传递信息的基础,接着我们可能会想,这电线上面传递的是什么,为什么能够把我们的声音,图像,视频等信息通过电线传递到对方去,这就涉及到网络协议分层中的物理层了,(数字信号没学好)姑且认为电线上面传递的是一连串的0101的那些东西吧,我们称之为bit流,这些bit流包含了我们所有要传输的信息,那么问题又来了,是怎么把这一连串的0101的东西变成我们肉眼看到能够识别的汉字,图像,视频等东西的,这就涉及到了编码的东西了,我们简单解释为我们有一个事先弄好的汉字、图像和0101bit流的不同组合之间对应关系,可以根据这个对应关系表来翻译那些01代表的我们需要的信息。

  上面很通俗的大概的解释了文字,图像等信息怎么从一台计算机传递到另一台计算机的。我们大家都知道电线上面电流的传输是容易受到影响的,同时存在速度等一系列问题,可以理解为我们的01bit在线上传递时候同样具有这些问题,那么这个问题是由物理层来解决的,物理层就是利用各种技术手段,保证传输01这些东西的速度,容量等问题。

  当我们计算机能够正确的接受这些01bit后,我们要想一想会有各种不同的数据信息隐藏在中间,各种程序传递的信息也在里面,而物理线路的传输总是源源不断的,我们不可能一次性接受这一条河流吧,于是很自然的想到了把这些信息分块,变成一组组我们可以快速处理和接受的小块,于是数据链路层就是干这个事情的。

  不要以为上面说的解决了之后信息就可以传输了,我们的网络很巨大,有很多计算机,都是直接或者间接的通过我们的ISP服务商连接在一起的,他们组成一张巨大的图,如果你要传递的信息不是跟你直连的计算机的话,这个信息怎么传到目的地呢?想起来会觉得头大吧,这就涉及到了我们拿着信息往哪里走的问题,于是网络层来了,网络层来给我们选路。

  当我们的路选好了,数据就正确的流通了。接着,我们要明白,所有的通信其实都是两台计算机中的进程进行通信的(关于进程的可以去百度了解),就是进程之间交互数据,也就是那些传递的数据都是根据进程的要求来进行传输的,但是传输的数据量到底多大,传输的速度到底多快,当一个进程处理速度来不及另外一个进程的发信息速度了该怎么办,这些好多问题都是由运输层来进行解决的。

  再往上,就是应用层了,涉及到具体的应用程序,就不再赘述了。

  以上这些传输中遇到的问题,以及各个问题都由谁来解决其实最开始并没有给谁起一个名字然后叫谁来处理这个问题,开始都是大杂烩,但是我们发现,这些问题交织在一起,不利于整个网络体系的建立和维护,也会导致01bit流中包含的数据信息杂乱无章,于是就出现了分层,各层解决不同的问题,然后各层在解决问题过程中需要添加到01bit流中的附加信息都标注一些标识,这样虽然物理上还是揉合在一起的,但是在逻辑上有了一个层次感,各个层只关心本层要解决的问题,不关心其他问题,即使出现问题,也能按照逻辑一层一层的检查来查找问题,便于维护,而且各层可以在各自的问题上发展不同的解决办法,或者说是规章制度,由此就诞生了各个层次的协议了。

  以上大概的业余的通俗的说了为什么要分层,各个计算机之间严格是怎么进行信息传输的等问题,我觉得刚接触各种协议时候,如果没有一个大体的主观印象,分散的学习各个协议的话,总是没有大概的体系认识的,就我自己而言,我都上完计算机网络了,仍然在想这些协议存在的意义,整个计算机网络世界的信息在物理上是怎么做的,比如汉字信息怎么就通过线传递到其他计算机了,然后又怎么能够在还原成汉字。这些问题可能相对高手来讲比较小白,但对于新手来将确实是很必要的。


  注:知识有限,好多东西自己也没搞清楚,可能表达,或者举的例子会有问题,我只想以一种轻松简单的方式来梳理一下整个网络的大的结构组成。

Ch1.概述