本文内容学习自《计算机网络》谢希仁一书。
网络协议
什么是网络协议?
1 | 为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(network protocol)。 |
网络协议主要组成要素
1 | 语法,即数据与控制信息的结构或格式; |
网络协议分层
1)标准网络分层 —— OSI的七层协议
学习OSI分层体系首先需要明白什么是OSI?
1 | 计算机想要实现全球网络互联就需要进行标准化数据通信。 |
OSI的七层协议体系结构的概念清楚,理论也较完整。
然而,在它20世纪90年代初期才完成了整套协议的制定,再加上它的规范既复杂又不实用。
因此市面上很少有厂家生产出完全符合其标准的产品。
2)TCP/IP四层协议
技术的发展并不是遵循严格的OSI分层的概念。
相比于OSI模型的七层协议,TCP/IP就常被称为是事实上的国际标准。
1 | TCP/IP体系在标准OSI协议完全制定出来之前就已经得到了非常广泛的应用。 |
当然TCP/IP四层协议并不是完全按层级调用。
当前实际应用中,某些应用程序也会直接使用IP层,或直接使用最下面的网络接口层。
3)五层协议
从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层基本上和一般的通信链路在功能上没有多大差别,对于计算机网络来说,这一层并没有什么特别新的具体内容。
1 | 因此,在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 |
五层协议是为了方便学习网络协议分层,实际上应用还是用的“TCP/IP四层协议”。
一、应用层(application layer)
应用层是体系结构中的最高层。
应用层的任务是通过应用进程间的交互来完成特定网络应用。
应用层协议定义的是应用进程间通信和交互的规则。
这里的进程(process)就是指主机中正在运行的程序。
对于不同的网络应用需要有不同的应用层协议。
应用层协议很多,如:
1 | DNS(域名系统) |
我们将应用层交互的数据单元称为**报文(message)**。
二、运输层(transport layer)
运输层的任务就是负责向两个主机中进程之间的通信提供通用的数据传输服务。
应用进程利用该服务传送应用层报文。
所谓通用,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。
由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。
复用就是多个应用层进程可同时使用下面运输层的服务,分用与复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
1 | TCP(传输控制协议) |
常见的运输层和网络层的协议
运输层数据传输的单位是报文段(TCP)/**用户数据报(UDP)**。
运输层UDP
1 | a) UDP是无连接的,发送数据前不需要建立连接。 |
当然,如果既需要实时传输,又需要数据可靠。
此时就需要对UDP的不可靠的传输进行适当的改进,以减少数据的丢失。
在这种情况下,应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施
如采用前向纠错或重传已丢失的报文。
运输层TCP
1 | a) TCP是面向连接的运输层协议。 |
三、网络层
网络层负责为分组交换网上的不同主机提供通信服务。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。
网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。
因特网是一个很大的互联网,它由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。
网络层主要的协议是:
1 | 无连接的网际协议IP (Internet Protocol)和许多种路由选择协议 |
与IP协议配套使用的还有三个协议:
1 | 地址解析协议ARP (Address Resolution Protocol) |
由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信
因此TCP/IP体系中的网络层常常称为网际层(internet layer),或IP层。
网络层把运输层产生的报文段或用户数据报封装成分 组或包(packet) 进行传送。
在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作 IP数据报,或简称为**数据报(datagram)**。
中间设备
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。
根据中间设备所在的层次,可以有以下四种不同的中间设备:
1 | (1) 物理层使用的中间设备叫做转发器(repeater)。 |
IP分类
IP地址的编址方法共经过了三个历史阶段:
1 | (1) 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。 |
四、数据链路层(data link layer)
链路(link)就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。
数据链路(data link)则是另一个概念。
这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。
一般的适配器都包括了数据链路层和物理层这两层的功能。
(因此TCP/IP四层协议分层中数据链路层与物理层是被划分在一起被称为网络接口层)。
也有人采用另外的术语:
这就是把链路分为物理链路和逻辑链路。
物理链路就是上面所说的链路,而逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。
数据链路层常简称为链路层。
数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送。
数据链路层传输数据的单位是帧(frame)
数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
每一帧包括数据和必要的控制信息,如:
1 | 同步信息 |
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。
这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。
控制信息还使接收端能够检测到所收到的帧中有无差错。
如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。
如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。
这种方法会使数据链路层的协议复杂些。
五、物理层(physical layer)
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
在物理层上所传数据的单位是比特。
物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。
物理层还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。
注意:
1 | 1)解释比特代表的意思,就不是物理层的任务。 |
物理层的主要任务描述为确定与传输媒体的接口有关的一些特性:
1 | 机械特性:指明接口所用接线器的形状和尺寸,引脚数目和排列,固定和锁定装置,等等。平时常见的各种规格的接插件都有严格的标准化的规定。 |
数据在各层之间的传输
1 | 5 - 应用层,数据单元为“报文” |