网络架构

概览

计算机科学家解决复杂问题时有两把利刃:一是缓冲技术,二是分层技术。后者的思想是如果直接解决某个问题比较复杂,则可以建立一个“中间层”,中间层在底层的基础上,抽象出一些常用功能,并为上层提供灵活易用的API。

网路通信就是分层技术应用的一个范例。目前网络架构是一个分层结构,从建立通信的对象来看,从底层到最高层依次是:

  • 应用程序(Application Programs)
  • 进程间的通信(Process-to-process Channels)
  • 主机间的通信(Host-to-Host Connectivity)
  • 硬件(Hardware)

协议

为了协调不同层次之间以及同一层次不同系统之间的通信,我们需要制定一套通信的规则,这种规则就叫“协议”(protocol)。协议定义了一种“通信机制”,它至少提供了两个方面交互接口:

  • 同一系统中层
  • 不同系统中的层

前者是一种“服务接口”,例如TCP(传输层)通过不可靠的IP协议(网络层)建立起可靠的服务;后者提供不同系统的层的通信,例如路由器A(网络层)与路由器B(网络层)的通信。

可想而知,如果不同系统采用不同的协议,必然导致系统之间无法互通。因此网络的相关协议就由专门机构IETF(Internet Engineering Task Force)来制定。网络协议不是一成不变的,但是新的协议必须遵循下面两条性质:

  1. 协议能被精确定义并实现,如伪代码。
  2. 协议能够通过互通测试。例如,如果协议能够通过两个及以上方法代码实现,它们应该是可以相互通信的。

下图展示了不同层次上的协议:网络层依托IP协议,传输层依托网络层的IP协议建立了TCP,UDP协议,在后者的基础上,又有FTP, HTTP, DNS等应用层的协议。

网络架构_第1张图片

数据的封装

数据从最高层到最底层传送时,每层协议都会为数据加上自己的头(header),用于该层的通信;当数据达到目的地时,从最底层到最高层,通过每层协议时数据的头会依次被剥离。这个过程叫做encapsulation与decapsulation。

一个简化的粒子如上图中从FTP应用发出的数据,将依次加上FTP、TCP、IP的头,成为

IP hdr || TCP hdr || FTP hdr || Datagram

通过Internet传播到目的地后,头依次被剥离。

OSI架构

ISO组织给网络定义了一个7层的OSI(Open System Interconnection)架构。它们依次是

  • Physical Layer
  • Datalink Layer(负责把数据送到相邻的目标)
  • Network Layer(负责把数据送到终点)
  • Transport Layer(只有主机有,一台主机会跑不同应用,它们有不同的传输需求,如UDP,TCP等)
  • Session Layer
  • Presentation Layer
  • Application Layer
网络架构_第2张图片

这是一张典型的OSI架构图,其中交换机只处理Data Link层的需求,因此交换机没有IP,也不处理数据中的IP header。交换机一般处理含Mac地址的头。

不同层的特点与作用

Physical Layer

物理层考虑的问题是如何将原始资料在link上传输。物理层的传输媒介有同轴电缆、双绞线、光纤、无线方式等。以电缆为例,通过高低点位来传输数据,例如高点位表示1,低电位表示0。

实际情况并不这么简单,关于点位编码数据需要特别的处理才能抵抗干扰。不同的编码方法叫做Signal Coding schemes。

Data Link Layer
数据层考虑的问题是“如何将frame用MAC Protocol传给直接相连的主机或设备”。

数据层将物理层零星的0、1数据收集起来成为一个数据框,一般的组成为

preamble + SFD + DA(dest) + SA(src) + Type + LLC + PAD + FCS

数据层是以MAC地址作为传送目标的。如果一条线路上有多个设备发送数据,可能导致点位过高或抵消,造成数据的丢失与错误,因此有很多协议来协调这个问题,常见的有

  • random access。不作任何处理,数据传输成功率在18%左右。
  • CSMA/CD:先监听,如果没有检测出冲突则送封包。例如以太网就是采用这种协议。
  • CSMA/CA:这个协议不能检测出冲突,但是可以避免冲突。例如无线网络。

Network Layer
网络层主要考虑如何将封包通过Internet送给目的地主机。因此“路由”(routing)显得格外重要。

路由的目的是为数据传输决定一条路径。路由器需要一些协议来让数据往正确的方向传播。通常的做法是路由器之间互相交换信息,每个路由器维护一张路由表,从而达到对于整个网络的了解。

第一代的路由协议如RIP规定路由器每30秒交换一次信息。OSPF协议则是找最短路径。

Transport Layer
传输层考虑“提供不同主机进程之间的资料传送”。两个典型的传输层协议是TCP与UDP,TCP能提供稳定的服务,虽然它是基于不稳定的IP协议。TCP常常用来支持文件传输、HTTP等应用,而UDP则用来处理速度要求高的DNS服务等。

架构的特征

虽然IETF将网络分成了7层,但是在实际使用中,这些层并没有严格的区分。例如应用层可以直接给予网络层的IP协议,跳过TCP或UDP。

网络架构_第3张图片

另外一个特征是Internet的结构相当于一个“沙漏”。网络层现在几乎只有IP协议,而其它层有五花八门的协议。

网络架构_第4张图片

一个健康的网络架构应该是可拓展的,未来会有新的协议被添加到网络通信中来。这些新的协议应该遵循在前面提到的协议的特征:

  • 有精确的定义
  • 协议的多个正确的代码实现的层应该是可以互通的

你可能感兴趣的:(网络架构)