OSI(Open System Interconnection)模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、回话层、表示层、应用层。
每一层都有对应的数据格式和连接方式,以及典型设备。如下图:
系统设计一般以以上七层协议来考虑,但是实现的方式是以下常用的TCP/IP参考模型(设计与实现之间的差异):
TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系架构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。四层协议模型对应着OSI七层协议模型。如下图:
1、TCP/IP的应用层为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等
2、传输层为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。
该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).
TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;
而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.
3、网络互联层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP),
主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。
重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。
IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
4、网络接入层负责监视数据在主机和网络之间的交换,TCP/IP本身并未定义该层的协议,
而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。
地址解析协议(ARP)工作在此层。
网络设计的核心,就在于路由器和交换机,对应数据链路层和网络层。数据链路层的MAC地址通过一个协议,完成物理地址和IP地址的相互转换,所使用协议为ARP协议。
在Linux系统中,IP地址和MAC地址可通过查询MAC地址表得到,使用命令arp -a。ARP协议简单理解,就是实现了IP地址与MAC地址之间的映射,当然还有其他很复杂的工作和功能。
对于OSI七层模型来说,数据发送方,其数据先发送到应用层,为数据添加能够被接收方所理解的协议头,封装后所形成的信息单元包含协议头、数据、可能还有协议尾。
然后被发送至表示层,表示层再添加为接收方的表示层所理解的控制信息的协议头。依次往下一层进行此步骤。
信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾,包含了接收方所对应的层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。
接受方接收到数据后,数据从物理层传输到数据链路层,接收方的数据链路层读取发送方的数据链路层添加的协议头中的控制信息,然后去除协议头和协议尾,剩余部分被传送至网络层。
依此种方法,每一层执行相同的动作,当执行完这些动作后,数据就被传送至接收方中的应用程序,这些数据和发送方的应用程序所发送的完全相同 。
以上就是数据传输过程中的数据封装和数据解析。