数据链路层
OSI参考模型的第 2 层。负责物理层面上两个互连主机间的通信传输,将由 0 、 1 组成的比特流划分成数据帧传输给对端,即数据帧的生成与接收。通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。
网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址, 而数据链路层则只负责发送一个分段内的数据。
物理层
OSI参考模型的第 1层(最底层)。负责逻辑信号(比特流)与物理信号(电信号、光信号)之间的互相转换,通过传输介质为数据链路层提供物理连接。
TCP/IP 参考模型
由于 OSI 参考模型把服务划得过于琐碎,先定义参考模型再定义协议,有点理想化。TCP/IP 模型则正好相反,通过已有的协议归纳总结出来的模型,成为业界的实际网络协议标准。
TCP/IP 是有由 IETF 建议、推进其标准化的一种协议,是 IP 、 TCP 、 HTTP 等协议的集合。TCP/IP 是为使用互联网而开发制定的协议族,所以互联网的协议就是 TCP/IP 。
先介绍下 TCP/IP 与 OSI 分层之间的对应关系,以及 TCP/IP 每层的主要协议。
网络接入层
TCP/IP 是以 OSI 参考模型的物理层和数据链路层的功能是透明的为前提制定的,并未对这两层进行定义,所以可以把物理层和数据链路层合并称为网络接入层。网络接入层是对网络介质的管理,定义如何使用网络来传送数据。但是在通信过程中这两层起到的作用不一样,所以也有把物理层和数据链路层分别称为硬件、网络接口层。TCP/IP 分为四层或者五层都可以,只要能理解其中的原理即可。
设备之间通过物理的传输介质互连, 而互连的设备之间使用 MAC 地址实现数据传输。采用 MAC 地址,目的是为了识别连接到同一个传输介质上的设备。
网络层
相当于 OSI 模型中的第 3 层网络层,使用 IP 协议。IP 协议基于IP 地址转发分包数据,作用是将数据包从源地址发送到目的地址。
TCP/IP 分层中的网络层与传输层的功能通常由操作系统提供。 路由器就是通过网络层实现转发数据包的功能。
网络传输中,每个节点会根据数据的地址信息,来判断该报文应该由哪个网卡发送出去。各个地址会参考一个发出接口列表, MAC 寻址中所参考的这张表叫做 MAC 地址转发表,而 IP 寻址中所参考的叫做路由控制表。MAC 地址转发表根据自学自动生成。路由控制表则根据路由协议自动生成。MAC 地址转发表中所记录的是实际的 MAC 地址本身,而路由表中记录的 IP 地址则是集中了之后的网络号(即网络号与子网掩码)。
IP
IP 是跨越网络传送数据包,使用 IP 地址作为主机的标识,使整个互联网都能收到数据的协议。IP 协议独立于底层介质,实现从源到目的的数据转发。IP 协议不具有重发机制,属于非可靠性传输协议。
ICMP
用于在 IP 主机、路由器之间传递控制消息,用来诊断网络的健康状况。
ARP
从数据包的 IP 地址中解析出 MAC 地址的一种协议。
传输层
相当于 OSI 模型中的第 4 层传输层,主要功能就是让应用程序之间互相通信,通过端口号识别应用程序,使用的协议有面向连接的TCP协议和面向无连接的UDP协议。
面向连接是在发送数据之前, 在收发主机之间连接一条逻辑通信链路。好比平常打电话,输入完对方电话号码拨出之后,只有对方接通电话才能真正通话,通话结束后将电话机扣上就如同切断电源。
面向无连接不要求建立和断开连接。发送端可于任何时候自由发送数据。如同去寄信,不需要确认收件人信息是否真实存在,也不需要确认收件人是否能收到信件,只要有个寄件地址就可以寄信了。
TCP
TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。
UDP
UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。
应用层
相当于 OSI 模型中的第 5 - 7 层的集合,不仅要实现 OSI 模型应用层的功能,还要实现会话层和表示层的功能。HTTP 、 POP3 、 TELNET 、 SSH 、 FTP 、 SNMP都是应用层协议。
TCP/IP 应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端, 接受服务的程序叫客户端。客户端可以随时发送请求给服务端。
HTTP
是 WWW 浏览器和服务器之间的应用层通信协议,所传输数据的主要格式是 HTML 。HTTP 定义高级命令或者方法供浏览器用来与Web服务器通信。
POP3
简单邮件传输协议,邮件客户端和邮件服务器使用。
TELNET 和 SSH
远程终端协议,用于远程管理网络设备。TELNET 是明文传输, SSH 是加密传输。
SNMP
简单网络管理协议,用于网管软件进行网络设备的监控和管理。
封装与解封装
通常,为协议提供的信息为包头部,所要发送的内容为数据。每个分层中,都会对所发送的数据附加一个头部,在这个头部中包含了该层必要的信息, 如发送的目标地址以及协议相关信息。在下一层的角度看,从上一分层收到的包全部都被认为是本层的数据。
数据发送前,按照参考模型从上到下,在数据经过每一层时,添加协议报文头部信息,这个过程叫封装。