您的位置:首页 > 理论基础 > 计算机网络

计算机网络概述

2015-03-14 21:14 411 查看
    公司项目顺利交给客户了~在之前一段时间发现自己的关于网络方面的知识都很模糊!不够清晰,不明原理,也不怎么会应用!这叫我一个搞IT的人情何以堪啊,因此本周的任务就是花时间把计算机网络重新认识一遍!果断把学校的那本《计算机网络》--谢希仁编著的书拿出来再阅读一遍!顺便整理记录下来!记录下的可能会很基础。废话不说了。

   好吧,从最简单的开始,引出一下一个名词:网络、互联网、因特网、路由器、分组交换、报文、数据包、计算机体系结构、TCP/IP体系结构与OSI体系结构、协议栈,这里先罗列部分名词,下面一一讲解。

   网络:由若干节点和链路组成,这些节点包括计算机、集线器、交换机或路由器等。

  互联网:网络与网络通过路由器连接起来就组成了互联网。

  因特网:是世界上最大的互联网。网络把许多计算机链接在一起,而因特网把许多网络连接在一起。网络互联并不是通过物理线路连接起来那么简单,还需要在主机上装相应的应用软件程序,然后彼此交换信息。

  路由器:这个我们都知道,只要是我们要连网上网就必须得路由器连接其它网络。路由器就是因特网得核心部分,没有路由器就无法实现网络互连。理论上讲,路由器是实现分组交换得关键组件,其任务就是转发收到得分组,而这也是网络核心部分最重要得功能。

 分组交换:分组交换采用存储转发技术。那么什么是分组呢?通常我们把要发送得整块数据称为一个报文,在发送前先把较长的报文划分为一个个更小的等长的数据段,例如每个数据段是1024bit,然后在每一个数据段前面加上一些必要的控制信息组成的首部后就构成了一个分组。一个分组也叫做一个数据包(package),而分组的首部也叫做"包头"。分组是在因特网中传送的数据单元。

   路由器的工作原理:首先说明,主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息,路由器则是用来转发分组的,即进行分组交换的。路由器收到一个分组,先暂时存储下来,再检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步的(有时候会经过十几个路由器)以转发存储的方式把分组交付到最终的目的主机,各路由器之间必须经常交换彼此掌握的路由信息,以便创建和维持再路由器中的转发表,使得转发表能够再整个网络拓扑发生变化时及时更新。需要注意的是,路由器只是暂时存储一个个短分组,而不是整个报文。分组是存储在路由器的存储器中(即内存),而不是在磁盘中,这就保证了较高的交换速率。当然数据包在传送过程中因特网采取了专门的措施来保证数据传递具有很高的可靠性,这就是在运输层的一些协议,后面会说到。

   当然,分组交换也会造成一些问题,比如分组在各路由器存储转发时需要排队,这就会造成一定的时延,另外,由于一个报文分成很多各分组,每个分组都额外的多了一个包头,所以会造成一定的开销。

   重点来了,上面已经说到分组交换数据传输,那么在庞大的计算机网络体系中做到有条不紊的交换数据,就是一件及其重要的事情。为此,数据的传输都必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同相),而是广义的,即在一定的条件下应当发生省么事件(如发送一个应答信息)。这些为进行网络中的数据交换而建立的规则、标准或约定我们称之为网络协议。

   网络协议的组成有三部分:

        (1) 语法:即数据与控制信息的结构或格式

        (2) 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应

        (3) 同步:即事件实现顺序的详细说明

  由此可见,网络协议是计算机网络的不可或缺的组成部分,只要我们想连网做一些事情,比如下载文件,都需要有协议。但是当我们在本机上操作时,就不需要任何网络协议。协议通常有两种不同形式,一种时使用便于人来阅读和理解的文字描述,另一种时使用计算机能够理解的程序代码,这两种不同形式的协议都必须能够对网络信息做出精确的解释。

   计算机网络中主机间的相互通信是如此复杂,我们需要及时的精确的流畅的信息处理体验,就必须设计出一套不会阻塞的数据传输方案,最好的解决办法就是分层实现。这样各层之间相互独立、灵活性好、结构上也可分开等诸多好处。

   我们把计算机网络的各层及其协议的集合称之为网络的体系结构。这种体系结构有OSI的七层结构,即应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。也有TCP/IP的四层体系结构,实际上TCP/IP的体系结构已经占据了主流市场,也是目前心照不宣的标准体系结构。TCP/IP体系结构即应用层、运输层、网际层、和网络接口层。

   下面简单介绍下我们作为应用程序开发者会接触到的几个层次:

    (1)应用层:应用层是体系结构的最高层。应用层直接为用户的应用进程提供服务。这里的进程就是指正在运行的程序。在因特王忠的应用层协议有很多,我们开发中最常接触的就是超文本传输HTTP协议、支持电子邮件的SMTP协议、支持文件传送的FTP协议、DNS等等。

   (2)运输层:运输层的任务就是负责向两个主机中进程之间的通信提供服务。注意运输层是提供进程通信,这里的进程是指正在运行的程序,也就是说,运输层是端对端的数据传输,每个网络应用程序都是有端口的,根据不同端口来识别接收数据完成通信。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。复用是指多个应用进程可同时使用下面的运输层的服务,分用是运输层把收到信息分别交付给扇面的应用层中相应的进程。
运输层主要用到一下两种协议:

               (a)TCP(传输控制协议)      -------面向连接的,数据传输的单位是报文段,能够提供可靠的交互,会进行三次握手才正式连接,具体的后面会有专门的文章,会持续更新。

               (b)UDP(用户数据包协议)   ------无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付。

   实际上,上面所说的”数据传输“这个概念有两钟意思,一是指数据包会以比特流从顶层经过一系列的层次再到达目的主机的顶层这个过程,二是指数据再传输时每个层次所遵循的协议在发送和接收时是一致的,例如在运输层正式这个协议才让数据准确被接收。

   (3)网络层:网络层负责为分组交换网上的不同主机提供通信服务,只提供点到点的服务,从源地址发送到了目的地址,至于发送给哪个程序则是传输层的事。在发送数据时,网络层把运输层产生的报文段或用户数据报文封装成组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报。网络层的另一个任务就是要选择合适的路由,使源主机运输层所穿下来的分组能够通过网络中的路由器找到主机

     (4) 数据链路层: 两个主机之间的数据传输总是一段一段的链路上传送的,也就是说相邻的两个路由器或主机之间是点对点传送,这就需要专门的链路层协议。在两个相邻的节点间传送数据时,数据链路层将网络层交下来的IP数据报组成帧和必要的控制信息(如同步信息、地址信息、差错控制等)。

  (5)物理层:在物理层所传输的数据的单位是比特。物理层的任务就是透明的传输比特流。也就是说对方发送1或0时接收方应该收到1或0而不是0或1,因此物理层需要考虑多大的电压代表1或0,以及接收方如何识别发送所送的比特。

    在因特网协议中最终要的和最著名的就是TCP和IP两个协议,当然我们平时所说的TCP/IP协议也有可能是整个TCP/IP协议族。

   我们可以这样想象这样一个场景来模拟数据传送的一系列过程:有一封信从最高层(应用层)发出,没经过一层就包上一个新的信封写上必要的地址信息(即每经过一层,在该层的协议下会为数据包加上相应的头部或尾部协议信息等信息,用于在数据接收方同样的该层来识别”解析“该数据包),最后经过层层传递到达接收者那里,数据从接收者最底层(物理层)开始层层上传,每经过一层就拆掉一个信封然后传递给上一层,在每一层拆信封的时候不会影响到内层的信封,因此各层的协议是互不影响的(说法不严谨,其实是有影响的,比如当当链路层发现数据异常需要修改时就会影响传输层的TCP协议决定抛弃数据或者重新传输或修改数据),但各层的协议相对于发送者和接收者而言又是一致的,这就是所谓的”对等层“之间的通信。

  协议栈就是各层之间的所有协议的集合。

  当研究开放系统中的信息交换时,往往使用实体这一较为抽象的名词表示恩和可发送接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。

   协议是控制两个对等实体进行通信的规则的集合。协议的语法方面的规则定义了所交换的信息的格式,而协议的语义方面的规则就定义了发送者或接收者所要完成的操作,例如在何种情况下数据必须重传或丢弃。

  在协议的控制下,两个对等的实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。

   一定要明确的是协议和服务是完全不一样的。

   协议的实现保证了本层能够向上一层提供服务,使用本层服务的实体只能看见服务而无法看见下面的协议,下面的协议对上面的实体是透明的,其次协议是”水平的“,即协议是控制对等实体之间通信的规则,但是服务是”垂直“的,即服务是由下层向上层通过层间接口提供的。

  另外我们还需要注意的是,路由器在转发分组时最高只用到了网络层而没有使用到运输层和应用层,因为路由器本来就不是处理信息的机器,所以路由器没有应用软件程序,更不谈数据经过传输层到达指定程序了。

  最后,用一个问题来结束本文,协议到底用来干嘛的?

   首先明确下,协议是规范对等层的行为的,同时为本层和下层提供服务。对于计算机体系的这种分层模型,我们应该深刻理解,这个分层是逻辑意义上的分层,当我们谈论数据传输经过哪些层的时候,比如数据经过传输层,是指数据经过请求方的传输层和接收方的传输层之间的一个过程,同理,数据经过物理层时,就是指数据经过请求方的物理层和接收方物理层的这么一个过程。而协议真是规范双方对等层之间的一种规则集合的。

   总结:通过本章对我们平时所说的“上网”有了一个大概的认识,至少应该清楚,只要我们需要连网与其它主机进行通信,比如浏览其他视频网站看电影等,这中间有一系列的数据传输与转换过程,并且数据在发送和接收都需要遵守各层次的协议,只有这样,数据才能被够准确的识别。以及为何计算机网络体系会出现逻辑上的分层结构,之所以设计成分层结构主要就是解决数据传输的问题,各层次有各层次的协议,分层结构清晰、便于维护等优点,这对于世界上各大不同厂商的设备互相通信来说至关重要。

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息