• 网络协议体系的分层:

关于网络协议分层,国际标准 OSI 制定的是七层,但是太过复杂不实用。TCP/IP 提出的是四层协议,并得到了广泛的应用,分别从上到下是:应用层、运输层、网络层、网络接口层。不过从本质上讲,TCP/IP 只有最上面三层,因为最下面的网络接口层,并没有什么具体的内容。在谢希仁老师的《计算机网络》中,提出的是折中 OSI 和 TCP/IP 的办法,提出了只有五层的体系结构。如下(因为这几个层次画在一起,像一个栈,又称为协议栈,protocol stack):
计算机网络之网络协议体系分层
左边为 TCP/IP 协议,右边为五层的协议。区别就在于最下面的一层,是笼统分为网络接口,还是细分出来而已。

  • 各层间的分工:

应用层(application layer)
应用层的任务是通过多个或者一个应用进程直接和用户交互,得到用户所要访问的域名以及其他信息,传递给运输层。 协议,有很多是应用层的。而且不同的应用进程,使用的协议也不一样。主要有,HTTP(用于浏览器)、FTP(用于文件传送)、SMTP(电子邮件发送)。同时,应用层整理并发送给下一层的数据单元是报文(message),即是从用户获得的整段数据。 部分协议如下:
计算机网络之网络协议体系分层
运输层(transport layer)
运输层从应用层的多个或者单个应用获得数据(报文)之后,通过配置给不同的应用进程不同的软件端口,形成各个应用进程自己的标识(因为从这一层开始,那些数据就不再区别是哪个应用进程的了,只会按照数据里面的控制信息,比如 IP 地址等等,发送给对应的服务器,所以,需要在这一层做好区别,后面返回来的数据,才能发给对应的应用进程)。由于应用层可以执行多个应用进程,他们都会发给运输层。所以,有 复用 和 分用 的定义:
复用指的是,多个应用进程可以同时使用下面运输层的服务。分用指的是,运输层可以将收到的数据,正确地分派给各个应用进程。
接着,在这一层将这些报文进行分解。不同的协议有不同的分解单元。运输层有两种协议,传输控制协议 TCP(transmission control protocol)、用户数据报协议 UDP(user datagram protocol)。
TCP 是提供面向连接的、可靠的数据传输服务。说它面向连接、可靠是因为它要发送数据之前,必须先建立连接,且发送完数据后,对方会返回一个确认信号。其数据传输单元是报文段(segment)。
UDP 提供的是无连接、尽最大努力的数据传输服务(但是不保证数据传输的可靠性)。说它无连接、不可靠性就是因为它发送数据前,不会先建立连接,同时对方也不会返回一个确定信息。但即便如此,在很多场合还是使用的了 UDP(见上图)。其数据传输单元是,用户数据报。

网络层(network layer)
这一层将从运输层得到的报文段或者用户数据段封装成分组 / 包(即是,package)发送给下一层。在 TCP/IP 协议里,网络层使用的是 IP 协议,所以这些包,又被称为 IP 数据报,简称数据报。但是值得注意,(IP)数据报,和运输层的用户数据报要做区分,内容不同,所在的层级也不同。
网络层的另一个任务,即是要选择合适的路由,使分解了的分组,通过网络中的路由器,找到目的主机。

(数据)链路层
两台主机之间的数据传输总是在一段一段的链路上传递的。这就需要专门的链路层协议(不过对于 TCP/IP 协议里,好像还是没有说的)。数据链路层,将分组组装成帧(framing),在相邻两个结点之间的链路间,传递帧(frame)。每一帧都包括有数据和必要的控制信息,如同步信息、地址信息、差错控制(上面的分组,也有相应的控制信息)。
如果发现有错的话,也是在这一层里,丢弃或者修正这个帧的。

物理层(physical layer)
在物理层,数据单元是比特,即是逻辑1和0。物理层要考虑用多大的电压表示1和0。但是,涉及到具体的传送物理媒介,比如是使用光缆还是双绞线、同轴电缆、无线信道等,是不在物理层协议范围之内的。因此,也有人把物理媒体当作第0层。

区分注意:
值得注意的是,对于网络外围的主机,它们是应用了整个五层,而对于里面的路由器,只是应用了下面三层。即是,主机不断地解析数据在比特为单位,并发送到网络,路由器接收到之后,重新反构造那些信息(主要是为了获得控制信息),一直构造到分组,再添加自己的控制信息(比如说接下里发给哪一个路由器之类的),再进行拆解,分成比特,发送。
且不同的层,都会不断地加上控制信息,一般都是加在前面,称为首部。但是对于链路层,同时也加在了后面,称为尾部。如图:
计算机网络之网络协议体系分层
这样的解析过程,就像单片机的C语言,需要经过编译、链接、汇编等等·转成最原始的机器码,一样的过程。
计算机网络之网络协议体系分层

相关文章: