title: 2018.9.2 OSI七层模型及数据的传输过程
tags: 计算机网络, OSI七层模型, 数据传输, 数据解封装
---
OSI七层模型和TCP/IP五层模型
OSI七层模型
我们说的七层模型第七层都是应用层,第一层是最底下的物理层。
图中只有物理层之间的线条是实线的,可以将这条线理解为两台主机之间的网线,连接两机实现通讯
模型里的每一层都是独立的,两台主机之间通信,对应的层使用的协议相同。
应用层可以理解为最接近使用者的一层,我们可以直接使用,例如QQ、微信等软件,当我们用此类软件发出一条消息时,最终这条消息的接收方就是目的主机的应用层,但是我们无法直接将信息发送到对方的应用层。所以我们的消息会依次经过以下的每一层,通过不同的协议封装最终通过网线传输到对方电脑,然后在对方电脑一层一层解封装数据包,最后到达对方电脑的应用层软件。这里具体的封装和解封装过程我们在后面的解封装过程中详细说明。
例如下图(模型图)
TCP/IP五层模型
在实际的使用中,科学家在每一层中添加对应的协议,发现有其中的表示层和会话层的协议比较少(相对于其他层而言,但也是必不可缺的),于是将这两层合并到应用层,称为TCP/IP五层模型。
五层里面每层都有一些协议,但是由于TCP/IP协议的重要性,为了纪念这两层协议,于是命名为TCP/IP五层模型。
在互联网所使用的各种协议中, 最重要的 和最著名的就是TCP和IP两个协议。 现在人们经常提到的TCP/IP并不一定是单指TCP和IP这两个具体的协议,而往往是表示互联网所使用的整个TCP/IP协议簇。
TCP/IP五层模型中每一层对应的设备:
数据的封装和解封装过程
数据的封装与解封:
发送时将上一层交下来的数据加上首部和尾部,成为以太网的帧。接收时将以太网的帧剥去首部和尾部,然后送交上一层
数据的封装过程是自顶向下的,而解封装过程则相反。
第五层:应用层
应用层是体系结构中的最高层。 应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。 这里的进程就是指主机中正在 运行的程序。
我们在软件上发出一条消息“hello”,应用层将这条消息处理为一个五层的数据包,这里我们就先认为数据包的内容为我们发出的“hello”消息。
第四层:传输层
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。 应用 进程利用该服务传送应用层报文。
[传输层封装]!(https://images2018.cnblogs.com/blog/1449724/201809/1449724-20180908001823712-506775068.png)
应用层将消息封装成数据包后将数据包传递到传输层,传输层会对五层数据包进行进一步的封装,为该数据包添加一个TCP/UDP头部(TCP或者UDP二者其中一个,具体取决于软件选择那个协议),其中含有源端口号和目的端口号,源端口号即为软件使用的上一层协议的端口号,目的端口号为接收数据方接收该数据的端口号。例如当我们用IE访问一个http开头的网页时,实际上我们时在访问对方的80端口。
这个过程中系统会为IE浏览器随机生成一个端口号,假如是1000,我们的数据到了传输层,包头中的源端口号为1000,目的端口号为80。
这里对端口号做一个解释,我们将两方进行数据传输时,应用层软件需要使用应用层的协议,使用的协议有其对应着端口号,当有数据发送出去时,数据是从这个端口号发送出去的,而接收方接受数据时,也是根据传输层包头中的目的端口号对数据进行接收。
就像两个水桶之间转移水,A水桶需要开一个口让水流出来,B水桶需要开一个口让水进去,这里开的口就是上面的端口,端口号就是对这些端口的编号。
第三层:网络层
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。
在传输层中,TCP/UDP包头为五层数据包提供了目的端口号,但是一个网络里有那么多主机,数据包怎么才能成功的传输到我们指定的主机上呢?所以这里就需要网络层开始自己的工作了!
类似于传输层,网络层也有一个很重要的协议——IP协议,当四层数据包到网络层时,网络层会对该数据包添加一个IP包头,其中含有数据包的源IP和目标IP,数据传输的过程中就是根据这层的目标IP找到需要通信的主机。
前三层的数据包很重要,在一个包中称为上三层数据,是最有价值的包,不能被别人篡改,一旦被篡改就有可能造成通信出错或者信息泄露。(例如本来A发给B的数据,上三层数据被篡改后发给了C)
接下来的两层在网络中也是必不可少的,虽然上三层在数据包中指明了传输的路线,但是上三层数据包是无法通过介质进行传播的(例如网线、WiFi、光纤),那如果数据包想过介质进行传播的话怎么办呢,这就需要用到下面的两层了。
第二层:数据链路层
数据链路层主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。
当上三层的数据包到了数据链路层,就意味着这个信息已经成功到达计算机的网卡,下一步就可以通过网线传输了,这时我们的信息就需要一个载体来进行传输,于是在第二层会给上三层数据包加上一个二层头部(MAC子层)和二层尾部(FCS)。
如同从上海到北京,我们作为乘客,期间可能会换乘很多趟列车,每到一个站点换乘的时候,乘客是不会变的,但是列车变了。在数据链路层中也是这样,在传输的过程中,二层的头部和尾部就相当于列车头和列车尾,中间的信息就是乘客,乘客不会变化,但在换车的过程中,列车头和列车尾是会变化的。
MAC子层头部:
含有源MAC地址和目标MAC地址字段,关于这一块的内容我们在后面的整理中再学习,这里我们只需要知道每一台主机的MAC地址是唯一固定的。
FCS:帧校验序列
上三层加上帧头之后,对中间的信息数据会使用一个循环校验算法,最终得到一个固定的值,我们可以利用这个值和FCS得出这个数据包的内容是否缺失。
第一层:物理层
在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是 0 (或1)。 因此物理层要考虑用多大的电压代表 “ 1 ” 或 “ 0飞以及接收方如何识别出发送方所发送的比特。 物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应 如何连接。
[物理层]
在物理层,相当于网卡二层数据帧包送到网线上,这时候二层的数据帧包会被转化成一段连续的比特流,然后以电脉冲的形式传输到交换机,最后到达目标主机物理层。
物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的PC上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。
以上便是对TCP/IP中各层功能和传输数据过程中封装数据包的的一些说明,而当数据包到达目标主机后,目标主机会对数据包进行一个解封装,其中过程如下:
实际就是对封装过程的一个逆操作,至于其中具体的一些知识点我们在后面的整理中再进行学习。