IP协议与层次划分

本文内容学习自《计算机网络》谢希仁一书。

网络协议

什么是网络协议?

1
2
为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(network protocol)。
也可简称为协议。

网络协议主要组成要素

1
2
3
语法,即数据与控制信息的结构或格式;
语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;
同步,即事件实现顺序的详细说明。

网络协议分层

网络分层《计算机网络》谢希仁著

1)标准网络分层 —— OSI的七层协议

学习OSI分层体系首先需要明白什么是OSI?

1
2
3
4
计算机想要实现全球网络互联就需要进行标准化数据通信。
为了使不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该问题。
不久,他们就提出一个试图使各种计算机在世界范围内互连成网的标准框架。
即开放系统互连基本参考模型 OSI/RM (Open Systems Interconnection Reference Model),简称为OSI。

OSI的七层协议体系结构的概念清楚,理论也较完整。
然而,在它20世纪90年代初期才完成了整套协议的制定,再加上它的规范既复杂又不实用。
因此市面上很少有厂家生产出完全符合其标准的产品。

2)TCP/IP四层协议

技术的发展并不是遵循严格的OSI分层的概念。
相比于OSI模型的七层协议,TCP/IP就常被称为是事实上的国际标准。

1
2
TCP/IP体系在标准OSI协议完全制定出来之前就已经得到了非常广泛的应用。
TCP/IP是一个四层的体系结构,它包含应用层、运输层(TCP|UDP)、网际层IP和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。

当然TCP/IP四层协议并不是完全按层级调用。
当前实际应用中,某些应用程序也会直接使用IP层,或直接使用最下面的网络接口层。

3)五层协议

从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层基本上和一般的通信链路在功能上没有多大差别,对于计算机网络来说,这一层并没有什么特别新的具体内容。

1
2
因此,在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。
即应用层、运输层、网络层、数据链路层、物理层。

五层协议是为了方便学习网络协议分层,实际上应用还是用的“TCP/IP四层协议”。

一、应用层(application layer)

应用层是体系结构中的最高层。
应用层的任务是通过应用进程间的交互来完成特定网络应用。
应用层协议定义的是应用进程间通信和交互的规则。
这里的进程(process)就是指主机中正在运行的程序。
对于不同的网络应用需要有不同的应用层协议。
应用层协议很多,如:

1
2
3
4
5
6
7
DNS(域名系统)
FTP(文件传输)
HTTP(超文本传输协议)
SMTP(邮件发送协议)
POP3(邮件接收协议)
Telnet(远程终端协议)
...

我们将应用层交互的数据单元称为**报文(message)**。

二、运输层(transport layer)

运输层的任务就是负责向两个主机中进程之间的通信提供通用的数据传输服务。
应用进程利用该服务传送应用层报文。
所谓通用,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。
由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。
复用就是多个应用层进程可同时使用下面运输层的服务,分用与复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。

运输层主要使用以下两种协议:

1
2
TCP(传输控制协议)
UDP(用户数据报协议)

常见的运输层和网络层的协议
运输层数据传输的单位是报文段(TCP)/**用户数据报(UDP)**。

运输层UDP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a) UDP是无连接的,发送数据前不需要建立连接。
b) 尽最大努力交互,不保证可靠交付,因此主机不需要维持复杂的连接状态表。
c) 面向报文:
“发送方的UDP”对应用程序交下来的报文,在添加首部后就向下交付IP层。
UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
这就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文,如下图所示。
“接收方的UDP”对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程。
也就是说,UDP一次交付一个完整的报文。
因此,应用程序必须选择合适大小的报文。
若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。
反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。
d) UDP没有拥塞控制:
因此网络出现的拥塞不会使源主机的发送速率降低。
这对某些实时应用(如电话、实时视频)是很重要的。
当然,当很多的源主机同时都向网络发送高速率的实时大数据流时,不使用拥塞控制功能的UDP有可能会引起网络产生严重的拥塞问题。
e)UDP支持一对一、一对多、多对一和多对多的交互通信。
f)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

UDP面向报文传输《计算机网络》谢希仁著

当然,如果既需要实时传输,又需要数据可靠。
此时就需要对UDP的不可靠的传输进行适当的改进,以减少数据的丢失。

在这种情况下,应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施
如采用前向纠错或重传已丢失的报文。

运输层TCP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a) TCP是面向连接的运输层协议。
应用程序在使用TCP协议之前,必须先建立TCP连接。
传送数据完毕后,必须释放已经建立的TCP连接。
b) 每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)
c) TCP提供可靠交付的服务。
通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。
d) TCP提供全双工通信。
TCP允许通信双方的应用进程在任何时候都能发送数据。
TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去。
在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
e) 面向字节流。
TCP中的“流”(stream)指的是流入到进程或从进程流出的字节序列。
“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),
但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系,
但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。

TCP面向报文传输《计算机网络》谢希仁著

三、网络层

网络层负责为分组交换网上的不同主机提供通信服务。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。

网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。
因特网是一个很大的互联网,它由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。
网络层主要的协议是:

1
无连接的网际协议IP (Internet Protocol)和许多种路由选择协议

与IP协议配套使用的还有三个协议:

1
2
3
地址解析协议ARP (Address Resolution Protocol)
网际控制报文协议ICMP (Internet Control Message Protocol)
网际组管理协议IGMP (Internet Group Management Protocol)

三个协议与IP协议的关系

由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信
因此TCP/IP体系中的网络层常常称为网际层(internet layer),或IP层。

网络层把运输层产生的报文段或用户数据报封装成分 包(packet) 进行传送。
在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫作 IP数据报,或简称为**数据报(datagram)**。

中间设备

从一般的概念来讲,将网络互相连接起来要使用一些中间设备。
根据中间设备所在的层次,可以有以下四种不同的中间设备:

1
2
3
4
5
(1) 物理层使用的中间设备叫做转发器(repeater)。
(2) 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。
(3) 网络层使用的中间设备叫做路由器(router)。
(4) 在网络层以上使用的中间设备叫做网关(gateway)。
用网关连接两个不兼容的系统需要在高层进行协议的转换。
IP分类

IP地址的编址方法共经过了三个历史阶段:

1
2
3
(1) 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。
(2) 子网的划分。这是对最基本的编址方法的改进,其标准RFC 950在1985年通过。
(3) 构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。

链路(link)就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。
数据链路(data link)则是另一个概念。
这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用
网络适配器(既有硬件,也包括软件)
来实现这些协议。
一般的适配器都包括了数据链路层和物理层这两层的功能。
(因此TCP/IP四层协议分层中数据链路层与物理层是被划分在一起被称为
网络接口层
)。

也有人采用另外的术语:
这就是把链路分为物理链路逻辑链路
物理链路就是上面所说的链路,而逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。

数据链路层数据传输
数据链路层常简称为链路层。
数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送。
数据链路层传输数据的单位是帧(frame)

数据链路层的三个基本问题:封装成帧、透明传输和差错检测。

每一帧包括数据和必要的控制信息,如:

1
2
3
4
同步信息
地址信息
差错控制
...

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。
这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。

控制信息还使接收端能够检测到所收到的帧中有无差错。
如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续在网络中传送下去白白浪费网络资源。
如果需要改正数据在数据链路层传输时出现的差错(这就是说,数据链路层不仅要检错,而且要纠错),那么就要采用可靠传输协议来纠正出现的差错。
这种方法会使数据链路层的协议复杂些。

五、物理层(physical layer)

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
在物理层上所传数据的单位是比特。

物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。
物理层还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。

注意:

1
2
1)解释比特代表的意思,就不是物理层的任务。
2)传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理媒体当作第0层。

物理层的主要任务描述为确定与传输媒体的接口有关的一些特性:

1
2
3
4
机械特性:指明接口所用接线器的形状和尺寸,引脚数目和排列,固定和锁定装置,等等。平时常见的各种规格的接插件都有严格的标准化的规定。
电气特性:指明在接口电缆的各条线上出现的电压的范围。
功能特性:指明某条线上出现的某一电平的电压表示何种意义。
过程特性:指明对于不同功能的各种可能事件的出现顺序。

常见的物理层协议-维基百科

常见的物理层设备-维基百科

数据在各层之间的传输

数据在各层之间的传递过程简图《计算机网络》谢希仁著

1
2
3
4
5
5 - 应用层,数据单元为“报文”
4 - 运输层,(如:udp/tcp协议),数据单元为“用户数据报/报文段”
3 - 网络层,又叫ip层,数据单元为“包”
2 - 数据链路层,数据单元为“帧”
1 - 物理层,数据单位是比特。