由于本人不是CS专业出身,所以对计算机网络的基础知识了解不多,一直搞不清楚各种协议的由来以及各种协议属于哪一层,现写下这篇文章,供大家一起参考学习。
一、网络层次划分
要了解各种该协议的作用,首先必须要请出去计算机网络的层次划分。1978年,国际标准化组织(ISO)提出了“开放系统互联网参考模型”(Open System Interconnection/Reference Model, OSI/RM)。该模型将计算机网络结构的通信协议分为七层。除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议。
物理层:把数据转化为传输介质上的电子流或模拟脉冲,并且监视数据的传输
数据链路层:提供与网络适配器相连的接口,维护子网的逻辑链接
网络层:支持逻辑寻址与路由选择
传输层:为网络提供错误控制和数据流控制
会话层:在计算机的通信应用程序之间建立会话
表示层:把数据转化为标准格式,管理数据加密与压缩
应用层:为应用程序提供网络接口,支持文件传输、通信等功能的网络应用
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。
大家都遵守的规则,就叫做”协议”(protocol)。
下面两图是现在最常见的TCP/IP通信中的数据流向和各协议的作用。
互联网的每一层,都定义了很多协议。这些协议的总称,就叫做”互联网协议”(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。
二、各层存在的协议
2.1 物理层(实体层)
“实体层”,就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号
2.2 数据链接层
“数据链接层”在”实体层”的上方,确定了0和1的分组方式。
以太网协议
早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做“以太网”(Ethernet)的协议,占据了主导地位。
以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。
“标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等等;”数据”则是数据包的具体内容。
“标头”的长度,固定为18字节。“数据”的长度,最短为46字节,最长为1500字节。因此,整个”帧”最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。
2.3 网络层
“网络层”的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。
IP协议
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。
IP数据包也分为”标头”和”数据”两个部分。
IP数据包的”标头”部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的”数据”部分,最长为65,515字节。前面说过,以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。
ARP协议
有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。
2.4 传输层
“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。
UDP协议
UDP协议的格式几乎就是在数据前面,加上端口号。
TCP协议
TCP协议可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
2.5 应用层
“应用层”的作用,就是规定应用程序的数据格式。