简介
计算机网络是个非常复杂的系统,两个相互通信的计算机必须要能高度协调工作。而且不同网络体系结构的用户都需要通信,而且要做到在全世界范围的计算机都可以高效进行通信。于是OSI
(Open Systems Interconnection Reference Model)协议诞生了。只要遵循OSI标准,一个计算机系统就可以和位于世界上也遵循这一标准的其他系统进行通信。
OSI模型与TCP/IP模型
OSI的七层分层协议体系结构(如下图所示)的概念和理论相对完整,但是复杂确不实用。而TCP/IP
结构在整个计算机网络中得到了大规模的应用。TCP/IP是一个5层的体系结构,它包括物理层
、数据链路层
、网络层
、传输层
、应用层
。下面将简单介绍一下这五层的结构。
- 物理层
在物理层所传的数据单位是比特,也就是二进制数据。无论是发送方还是接收方的物理层底层如何使用多大的电压来表示0和1,这些都是物理层的工作。 - 数据链路层
两台设备要进行数据传输,总是在一段一段的链路上进行传送的,数据链路层将网络层传递下来的IP数据或者物理层上传的数据报组装成帧,在两个相邻的节点通过节点的MAC地址进行帧的传送。其中帧包括数据和必要的控制信息,以便让接收端能够知道一个帧从那个比特开始和到那个比特结束
,这样以来数据链路层就可以通过这个控制信息提取出数据部分上交给上一层网络层或者传递给物理层。控制信息还可以让接收端在接收到一个数据帧的时候对其进行检测,如果检测的结果显示接收的数据帧不完整或者有错误,将会丢弃这个数据帧。 - 网络层
在发送数据的时候,网络层将运输层的数据报文封装成包进行传送,简单的来说:互联网是大量的异构网络和路由器进行相连的。网络层的协议是无连接的IP协议。 - 传输层
传输层主要使用两种传输协议:TCP
与UDP
。其中TCP是面向连接的,可靠的数据传输服务,数据不会出现丢失的情况。UDP是面向无连接,但是数据传输可能会有丢包的情况出现。 - 应用层
应用层是体系结构中最高层,应用层协议定义的是应用进程间通信和交互的规则。应用层的协议我们比较熟悉,如域名DNS系统协议
、以及HTTP协议
以及邮件协议SMTP
等。
分层数据传输
下面以计算机网络这本书里的一副图,可以很好帮助我们理解数据在不同层的传递过程,如下图所示:图中的5,4,3,2,1 分别代表TCP/IP协议的应用层、传输层、网络层、数据链路层、物理层
,h5,h4,h3,h2代表相应层的控制信息。
这张图展示的是AP1进程向AP2进程传送数据。首先AP1先将数据交给本主机的应用层(第5层),然后第五层加上必要的控制信息就变成了第四层的数据单元。然后第四层再加上必要的控制信息就变成了第三层的数据单元,以此类推直到第二层(数据链路层),控制信息变成了首部H2(MAC头地址信息)
和尾部T2(FCS:帧校验序列)
当数据离开路由器到达AP2时,就和上面一样,以此向上最终将数据发送到进程AP2。
总结
虽然进程的数据交互经历过很多的复杂过程才可以到终点的应用进程。这些复杂的过程对用户是透明的,因为用户无需关心数据传送的过程,整个过程给人的感觉好像是AP1应用程序直接将数据传送给了AP2。以简单的例子便可以理解上述复杂的过程,如生活中常见的快递:当A用户给B用户发送快递,中间会经过不同的快递站点和不同快递车运输,直到快递员将快递送到B手上。正如B无需关心快递的运输过程,只需要关心A发送的快递最终到自己手上即可,网络不同主机之间的数据传输也是一样,对客户来说无需关心底层数据传输过程,只确认数据传输最终的结果即可。