协议、TCP/IP五层模型、封装与分用
本文将简单介绍协议与TCP/IP五层模型,在之后的博客中会再详细介绍协议以及TCP/IP模型的每一层。
一.协议
1.定义
我们可以把协议看作是一种约定。比如说,收假时从家里来学校,你的父母让你安全到学校时给他打个电话报平安。等我们到学校了,给他们打个电话,说一句到学校了。这种约定就可以看作是“协议”。对于两台想要互相通信的主机来讲,只是约定好协议就可以了吗?答案是,不是的。两台主机间不仅要约定好协议,更要双方都按照协议方式履行协议才可以。
那如何让不同厂商之间的不同主机间可以顺畅的通信呢?这就需要有人站出来,约定一个共同的标准,大家都遵守它,这就是
网络协议。
2. 协议分层
对于网络协议来讲,一般都是以层状结构分层的。而且,所有的分层都是软件方面的分层。
比如说,两个人在打电话,他们是人跟人互相在沟通吗?不是。其实人都是在和手机沟通,然后两个手机互相沟通,从而实现人与人之间的沟通。我们就可以把人与人之间打电话,分为两层。对于这个例子,协议只有两层;但是实际的网络通信会更复杂。
分层最大的好处在于“封装”。每层只需要完成自己的工作即可,层层之间没有很强的关联性,只有接口和数据的交互。这样,某一层如果出问题了,不会影响到其他层。
二.TCP/IP五层模型
TCP/IP是一组协议,它包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了如上图所示的五层模型,每一层都呼叫它的下一层(底层)所提供的网络来完成自己的需求。这五层分别是物理层、数据链路层、网络层、传输层、应用层。
1.物理层
它负责光、电信号的传递方式,即怎么收、发消息。该层的能力决定了最大数传输速率、传输距离、抗干扰性等。集线器工作在物理层。比如以太网的网线、光纤、无线网使用的电磁波都属于物理层概念。
2.数据链路层
它负责设备之间的数据帧的传送与识别,即适当分析收到的消息。交换机工作在数据链路层。比如收到的消息是不是发给自己的、数据碰撞的检查与处理等工作都是该层完成。
3.网络层
负责地址管理和路由选择,即经过一系列的路由机制找到目标网络甚至目标主机。路由器工作在网络层。比如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)就是该层的工作。
4.传输层
负责两台主机之间的数据传输,保证了数据的可靠性,解决了怎么传数据不会丢失并且拿到正确的数据。如TCP传输控制协议,能够保证数据可靠的从源主机发送到目标主机。
5.应用层
负责应用程序间的沟通,收到的数据怎么使用。如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
除了TCP/IP五层模型,还有一个OSI七层模型。但是OSI模型在过程上并不常用,所以这里不做介绍,大家可以自行了解。同时,TCP/IP模型中的物理层完成的功能较简单,同时作为硬件层,考虑较少,所以有时候也会称为TCP/IP四层模型。
三. 网络传输的基本流程
1. 网络传输流程图
(1)同一网段内的两台主机进行文件传输
如上图所示的通讯过程,下三层由操作系统完成
(2)而不同局域网内的两个主机进行数据传输
注意:在网络在进行通讯时,IP层没有什么差异。
这里稍稍分析一下IP地址和Mac地址(IP地址的详细介绍可见另一博客):
IP地址:区别所有接触网络的计算机唯一,相当于源地址和目的地址,在任何路由中不会有任何变化。
Mac地址:世界上区别所有计算机唯一,但在局域网工作,也就是说在路由的过程中一直在变化。
所以,我们可以说:IP层屏蔽了底层的差异。
2. 数据包的封装和分用
数据向网络发送时,要自顶向下的进行封装,添加包头信息。所谓包头信息,就是一些类似于包头的长度、数据载荷有多长、上层协议是什么等。除应用层不谈之外,每层添加的包头信息一定要包括将数据交给谁。
数据封装成帧发送到传输介质上,到达目的主机后自底向上再交付,
每层协议再解报,即剥掉相应的报头,根据报头中的“上层协议字段“再将数据交付给对应的上层处理。
这里的自顶向下交付添加包头的过程叫做“
封装”;自底向上解包的过程叫做“
分用”。