快乐理解网络协议

作者原出处:http://angerfire.blog.51cto.com/198455/70741

首先,说明一下为什么要写这么一篇文章。

 

很多朋友电话问,老师我对网络很感冒,但是不知道怎么样去学习?如果你也有这样的疑问,那么就很有必要看看下文了:

 

三国的时候,魏、蜀、吴三家最后都同归于晋了,没有一个嚣张起来的,为什么?就是因为诸葛亮、曹操、孙权都无法看透世人内心的本质,更无法参透当时那个历史潮流趋势的本质。所以只能当当英雄豪杰,在历史长河里面不得长存。

 

我们的网络世界,相对人类社会关系的世界就稍微简单些了,因为无论是正常的网络访问,还是非和平手段的网络攻击,在我们网工眼里看到的就是事情的本质,那都是一个个的数据包,而数据包在网络中传输有一个可以依据的过程的,如何看清他们如何分析他们,只要搞清楚这个过程,我们就有了一双火眼金睛。这个过程就是数据包传输时封装与解封装的过程。

 

而搞清楚这个过程又是为一名即将成为网工的人,即将进入网路世界的人,即将从事网络行业的人的必经之路。

 

要说这个过程必须先搞清楚计算机网络的发展史:

 

早期的第一代计算机网络以主机为中心,(比如大学的机房,一台主机 接300个终端,学生上机只能用终端,一旦主机崩溃了,300个终端也就废了。还有早期的军事网络,一个主机连接4、5个雷达站,想把雷达搞定,只需要把那个主控主机搞定就一损俱损了。

 

那时的计算机网络可谓相当脆弱,比小女人还娇气哈。

 

后来人们为了解决这个问题,研究出了以资源为中心的计算机网络,(首先从军事上,以资源为中心的结构彻底解决了一损俱损的局面,多台主机联网,资源存储在不同的主机上,一个坏了另一个照样用,不影响网络的使用状况。而我们目前的网络也正式这样的结构,某一个网站服务器瘫痪不能访问了,还可以访问其他网站。)

 

所以现在的网络不局限在某一台物理主机里,而是深入人心了,只要我们想要上网,想要获取信息,就可以获取。已经上升到了精神层面了。

 

 

总结一下两种结构的网络:

 

1、以主机为中心(物理)

2、以资源为中心(逻辑)

 

有了网络的结构的概念,我们有一个新的问题诞生了,我们拿网络做什么?我们为什么要用计算机网络?

 

这个问题很多人觉得难以回答,其实回想一下我们每天上网所做的事情,问题就解决了。

 

计算机网络的功能主要分为下面4部分:

 

1、数据通信

 

2、资源共享

 

3、增加可靠性(以资源为中心)

 

4、提高系统处理能(以资源为中心)

 

体现在我们现在使用的:IP电话、IM、E-Mail、VOD、网络游戏、网上教学、网上电视、网上证券交易等等。不知不觉中,网络已经深入我们的生活、学习和工作当中。

 

既然我们的计算机网络可以做这么多的事情,那么如何实现的?

这个是我们要进一步解决的问题。

 

既然我们的计算机网络的功能本质就是通信,那么计算机之间要实现通信,就必须符合一个大家都遵守的规则--协议(有很多自私的年轻人不明白为什么,咱们将心比心的想一想,你要买早点要跟早餐店老板说一下你要吃什么吧?既然要交流,好嘛,你说普通话,接着这个老板来说一段火星话?你们之间能交流么?不能!早饭能买到么?不能!你包包里的数据也就无法传输给这个老板了。所以计算机之间要交流,也必须大家都遵守一个统一的规则,语言、语法都要相同。

 

好,现在协议的概念清楚了,我们再来从一个进步的层面看看协议的重要性。我们来一起看看历史,打仗的历史,打仗的历史有很多咯,大部分都是多数人打少数人的历史,多数人欺负少数人!比如美国人打这个印第安人、比如美国人打朝鲜、比如美国人欺负伊拉克,再说个国内的,比如诸葛亮打孟获等等,我们从中可以看出打仗的本质原因就是不能很好的通信,为什么呢?没有达成协议!所以你看看欧盟、你看看联合国够先进吧,够有实力吧。为什么?有共同体的协议在先!有联合国的条约在先!

 

协议的概念有了,协议的重要性明确了,下面我们就来研究研究协议是怎么工作的,看看联合国这些组织是怎么实现利益共同体的。

刚刚也说了,网络的功能越来越多,可想而知要实现这样的功能期间流程的复杂程度也是非常之高的。世界为什么进步了,很大的原因就是大家都本着一个原则做事,那就是把复杂的问题简单化,而简单化的手段就是分工。社会是这样进步的,国家是这样进步的,企业是这样竞争的,我们的网络协议也是这样实现的。

 

计算机网络之间遵守共同的协议,但是靠一句话的协议无法实现那样复杂的网络功能,那么就把我们的协议分层,依靠协议的层次配合来实现复杂的功能,每一层解决一种问题,这样就集合众家之长解决了网络协议的复杂性问题。也就是我们所说的协议的分层实现(我们来看一看现在比较先进的公司结构就明白协议分层的意义了,一个公司有总经理吧,总经理下面有部门经理吧, 部门经理下有部门的员工吧。员工在履行自己的岗位职责的时候要不要帮着老板想一想我今天能盈利多少钱、我今天晚上要请哪个领导吃个饭呢?不用!那么一件事从上到下这么一层层的执行下来,就变得简单了,做完成以后在一层层的汇报上去,事情就完成了。在我们层层执行,层层把关的时候就要牵扯倒一个问题了,这个问题就是服务访问点【接口】 员工给领导提交报告的时候是发到哪个邮箱去?是以什么样的模式发过去?领导给员工下达任务的时候以上么样的方式下达,是开会呢,还是单独谈话呢?相信大家都不愿意被叫去单独谈话的吧?

 

协议可以让计算机网络之间用统一的语言,统一的方式来进行通信了,层与层之间配合时的接口也在刚刚的例子中说到了,那么自然就会想倒服务这个词,诸葛亮辅佐刘禅的时候就为刘禅提供着服务,为刘禅分担治国的大小事务,并且还把所做的事情以上朝的方式(服务访问点)告诉刘禅结果。而刘禅与诸葛亮之间的关系是一个层与层的关系:君臣关系。

 

计算机网络中的服务类型比起公司、国家、社会那可是简单多了,分为两种:

 

1、面向连接的服务

有的男生追女生,先约出来吃饭,吃饭的时候就千方百计的套出女孩子喜欢什么样的东西,紧接着下一步就开始献殷勤:送礼物。其实这个过程就是一个面向连接的服务。约出来吃饭,已经建立了一个信任的管道,顺着这个信任的管道,再把礼物传输过去。这样传输数据很可靠,至少送过去的礼物女孩子不排斥。

2、无连接的服务

武大郎摆摊卖烧饼就是一个无连接的服务。首先他没跟市民签约要卖给谁,卖几个?第二每天这个烧饼卖还是不卖?肯定是卖 能卖多少?心里有数没?没有! 所以不可靠。就是因为不可靠,所以老婆没有安全感!

 

那么咱们来看看具体服务的过程:要搞清楚过程,必须先明白自己是谁,你是发送数据的呢还是接受数据的呢?就像咱们做生意一样,想把东西卖出去,你就要明确的告诉自己你是卖东西的,要卖够自己定位的价钱,要不肯定会出问题。

 

1、作为发送方(客户),他要买东西,首先要给接收方(商家)发送一个建立连接的请求(我要买你东西)。

2、接收方收到建立连接的指示(老板一看确实想买),对这个请求做出响应(要买多少)。

3、发送方(客户),得到建立连接的确认(买5个)。

 

这样一笔生意的信任通路就打通了,打通了这个,剩下的就是双方传送数据了。

 

鲁迅先生说:本没有路,走的人多了那就成了路。革命的道路是这样走出来的。

 

网络中,所使用的协议也是这样诞生的,从美国军方的阿帕网开始TCP/IP网络就开始了普及应用,并且经过了一段强制历史。在TCP/IP普及前,美国很多地方网络使用的是NMP协议,这样要想两个网络通讯就很难实现,于是采用了强制措施,不用TCP/IP的网络会时不时的断线。接下来,TCP/IP的普及便初具规模。同时,为了更好的普及,有人提出TCP/IP分层模型的概念,在学术上加强TCP/IP。接着有个喜欢做国际级标准的组织【ISO】也发现了这件事,于是提出了一个用于统一国际网络协议的参考模型OSI七层开放式网络互联参考模型。

 

那么我们来看看OSI七层模型的层次:

 

发送方:                                                                              接收方:

 

7、应用层                           应用层协议                           7、应用层(APDU)

接口

6、表示层                          表示层协议                            6、表示层(PPDU)

接口

5、会话层                          会话层协议                            5、会话层(SPDU)

接口

4、传输层                          传输层协议                            4、传输层(TPDU)

接口

3、网络层                           网络层协议                           3、网络层(报文)

接口

2、数据链路层                   数据链路层协议                   2、数据链路层(帧)

接口

1、物理层                           物理层协议                           1、物理层(比特)

 

那么再对比一下TCP/IP(4层)参考模型

4、应用层

3、传输层

2、互联网层

1、网络接口层

 

我们把OSI参考模型的上3层合并为一层应用层 来看看数据封装和解封装的过程:

 

I 封装过程:

 

   既然是封装过程,那么一定是数据的发送方,就像我们人写信一样,写好了信,想要邮寄给朋友,必须要写信封,并且把数据封装到信封里吧?那么就从我们的应用层把纯数据封装了一次,紧接着这封信放进了邮筒,邮局拿出信以后还要继续把信分门别类,然后相同城市的打包再封装,向下交给给了货运公司。这个就是封装的过程。

 

高层数据                                                应用层/表示层/会话层

 

TCP头部|高层数据                                传输层

 

IP包头|数据                                             网络层

 

LLC头部|数据|FCS                                 LLC子层 数据

MAC头部|数据|FCS                              MAC子层 链路层

 

比特流                                                     物理层

 

II 解封装过程:

   回顾上面封装的过程,是一个有用户到邮局层层打包的过程,那么解封装,我们顺势想一下,收到信后接受城市的邮局第一件工作就是拆包裹,拆完以后,在分类,紧接着给邮递员,邮递员送到我们收信人手里,第一件事我们要检查信件的完整性吧?而我们和邮局校验的根据就是信封上及包裹上的标示,就像上图中各层的头部。

    封装是给数据加包头的过程,那么解封装就是收到包裹后给数据拆包头的过程,并且层与层之间相互不能交流,只能同层的拆掉同层的包头。

高层数据                                                应用层/表示层/会话层

 

TCP头部|高层数据                                传输层

 

IP包头|数据                                             网络层

 

LLC头部|数据|FCS                                 LLC子层 数据

MAC头部|数据|FCS                              MAC子层 链路层

 

比特流                                                     物理层

 

以上就是数据的封装及解封装过程,看似简单的原理,我们整个网络的实现以及学习就是围绕着这个层次向上学习的。所以看到这里,你要心里想一想,我现在学到哪一层了,我掌握的怎么样?

 

跟盖房子一样,上层建筑要想稳固下面的地基一定要打稳。

 

网络是一个综合性质很强很有挑战性的学问,在这里必须一层一层练上去,就像少林功夫。不能越级但可以速成,就看你用什么内功心法了,在宋老师这里你可以得到少林失传绝学《易筋经》,成为一代网络江湖的武林高手!


标注:老师写的真棒

你可能感兴趣的:(协议,计算机网络)