我将从我理解的计算机网络知识开始,先讲我认为的核心部分,然后给出我自己的计算机网络知识的框架。
前言
要学习计算机网络的知识,首先要明确网络需要解决什么问题。网络要解决的一个根本问题就是信息的传递,把一个信息从A传到B。而在传输的过程中会衍生出各种需求,比如有的人需要尽可能快的传输信息,有的人需要保证信息在传递过程中不会出错,有的人需要信息在传递过程中不会被他人截取。但是最基本的需求都是信息的传递。如果一个网络没法传输信息,那这个网络是没有意义的。
在这里我将从一个具体的例子出发,讨论如何把一篇1000字的文章用打电话的方式从A地传输到Z地,然后说明计算机网络的两个重要的思想,分组交换和端到端原则
为什么要采用电话,因为早期的网络就是用电话线进行信号传输的。其次当你学完计算机网络的知识后,你就会发现传输介质并不影响网络上层协议的构建,我们甚至可以用信鸽作为传输方式来搭建一个网络。从电话这个例子出发能更快的理解计算机网络的特别之处。
用电话来传文章
- A1->Z1
首先看一个发送方A1传文章给一个接受方Z1,此时最简单,打个电话念一遍文章就好。
- A1 、A2->Z1
接下来看A地有一个发送方A1、A2,别发送一篇1000字的文章和一篇10字的文章,此时就涉及一个问题:排队。
来看排队问题,因为只有一条电话线,所以A1在念文章的时候,是线路独占的,A2必须等A1念完后完后才能念它的文章,发送消息,尽管A2的文章只有10个字。
如果我们希望A1和A2能同时发送信息,不用进行排队。那么我们就需要引入分组。
分组就是把1000字的文章拆分成1000个包,每个包一个字。这样A1和A2就能轮流发送包,每次发送方发送的时候,发送n个数量的包,然后把发送的权力交给下一个发送方。
这样就实现了A1和A2能同时发送数据。
- A1、C1 ->X->Z1
再看一个例子,就是A地的发送方A1和C地的发送方C1分别发送一篇1000字给Z地的Z1
这里就涉及一个问题,电路交换。
我们看一下电路交换,传统的电话会有一个中继点X,ACZ三个地方各自有一条电话线和Z连接,A想打电话给Z的时候,需要先打电话给X,让中继X把A和Z的电话线路连接在一起。这就是电路交换。电路交换会导致线路独占,也就是说A1和Z1通话的时候,C1是无法和Z1通话的。X和Z1之间的线路被A和Z的通话独占了。
电路交换的时候,C1和X之间的线路完全就是空闲的。这样效率太低了。
上一个例子提到了分组的技术,那在这里对分组的技术进行一个扩展,就能解决线路独占的问题。
我们给包加上一个首部,里面包括发送方的信息,接受方的信息,以及包的数据的程度长度。比如一个5个字的包,A1发给Z1,那么包的全部信息就是 A1Z16xxxxx。
然后中继X安排三个人,一个人XreceiveA负责听A地来的电话,记录包;XreceiveC负责听C地来的电话,记录包;一个XsenderZ负责打电话给Z地的Z
1念文章。然后X和A,X和B,X和Z的电话一直保持畅通。
那么A1和C1就能同时发信息给XreceiveA和XreveiveB,两个人在记录信息后,把信息交给XsenderZ,XsenderZ念文章给Z1,Z1记录后根据包首部的信息,把包再组合起来。这样三条线路都能同时工作,提高了线路的利用率。
这个中继点X加上里面的人就是所谓的交换机,负责转发数据包。这个关于如果分包如何添加首部信息的规定,就是以太网协议,每个数据包就叫以太网帧,首部叫以太网首部。把传统的电路切换改成发送和转发数据包,这就是分组交换技术。而在上面的例子里,所有的电话加上这些负责接电话打电话的人,就是以太网。
上面的例子是一个很简陋的例子,我们并没有提到Z1收到包之后如何重组为正确的文章,也没有提到如何保证信息传输是正确的。为什么不提这些,这就涉及到一个原则,叫端到端原则。
什么是端到端原则?就是网络应该只保证尽可能快的发送数据,如果要增加新的机制,应该在网络的边缘系统实现。
举一个例子,如果我要保证这些包能按正确的顺序重组,那么我可以在A1和Z1之间做一个新的协议,A1前加一个人AA1,Z1后加一个人ZZ1,每次AA1先拆分文章,加一个序号,比如1000字的文章拆成200个包,每个包5个字,那么第一个包的数据部分就是,001xxxxx,然后再让A1接手拆好的文章数据包,给这个数据包加上A1的首部,A1Z18001xxxxx。Z1收到协议后,把A1Z18去掉,得到001xxxxx,然后把这个包给ZZ1,ZZ1得到这个序号是001的包xxxxx,等待后续的包到来后就能根据序号组合。
端到端原则在网络上的体现就是网络分层和封装。
什么是分层?打电话的人和电话所在的以太网,我们叫做链路层,它只负责给数据包加上以太网首部,加序号则交给链路层上面的人去做。
什么是封装?就是链路层怎么实现加首部不用让其他层知道,链路层只留一个接口给上面的层,告诉其他层你用什么方式能给我数据,怎么和我互动。在上面的例子里,就是A1和AA1之间交接文章的时候,规定好交接的数据格式。
总结
通过以上的例子,可以得出一个结论。计算机网络的基本思路在于分组交换和端到端原则,以太网标准和交换机是这两个思想的具体实现。
分组交换思想提高了线路的利用率,可以允许多个发送方共享线路。以太网协议规定了数据包的格式和标准,端到端原则规定了所有新的协定和新的数据包必须在以太网协议之上实现。而交换机则是对分组交换技术的具体实现,所有的以太网数据都会经过交换机进行转发。