网络编程-协议、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. 数据包的封装和分用
        数据向网络发送时,要自顶向下的进行封装,添加包头信息。所谓包头信息,就是一些类似于包头的长度、数据载荷有多长、上层协议是什么等。除应用层不谈之外,每层添加的包头信息一定要包括将数据交给谁。
        数据封装成帧发送到传输介质上,到达目的主机后自底向上再交付, 每层协议再解报,即剥掉相应的报头,根据报头中的“上层协议字段“再将数据交付给对应的上层处理。
        这里的自顶向下交付添加包头的过程叫做“ 封装”;自底向上解包的过程叫做“ 分用”。

猜你喜欢

转载自blog.csdn.net/lycorisradiata__/article/details/80300466
今日推荐