新闻动态

匠心十载 筑梦起航 共创未来

TCP/IP协议栈的那些“层级”是怎么回事儿?

发表日期:2022-09-06 18:44:15   浏览次数:

众所周知,TCP/IP模型是现在绝大多数网络通信的基础模型,它的基本功能就是定义设备之间进行互联互通的技术框架。通过它,全球各地的网络能够互联,世界各地的信息能够互通。协议栈也被称作通信栈。我们通常用软件进行通信时,计算机会将一个完整的过程划分为不同的功能部分,这些功能在被各自安排在不同的“层级”完成。

 但是这些“层级”的工作是有先后顺序的,而这个层次的顺序以及不同层次负责的功能在国际范围内是统一规范通用的。通信发送端的每一层只与通信接收端相同的层级进行对话,这被称作“虚拟对话”。每一层级所承载的功能或数据都完全被封装在本层级,高层级可以通过、且仅能通过低一层级提供的服务接口点(SAP,这是一组软件层面的接口)对低一层级进行访问。因此,任何本层级内容(功能或数据)的改变都不会影响其他层级,这也被称为“信息隐藏法则”。协议栈的核心是协议。所谓协议,就是一组定义好的规则,这些规则确定了相同层级(通信两端)之间互相通信的数据格式。

 比如:两个相隔远方,说着不同语言的人想要在中国境内通过传真进行交流,他们先将地方语言几经转折翻译为通用语言(中文),再转化为传真电路可以承载的语言(数字化)才能进行直接沟通。也就是说,除了最下层的“传真层”可以直接通过“数字电路的语言”进行直接信息传递以外,其他层级(如第二、第三层翻译层和第四层的消息层)都在进行“虚拟对话”。位于A地的人在第四层用法语和位于B地用韩语的人进行沟通;而A地和B地的翻译人员在第二、第三层均只需要关注文本需要与何种语言映射即可,而不会改动要传递的消息内容;A地和B地最底层的秘书人员在传真机上只需要使用相同的编码规则将通用语(中文)转化为电路语言,就可以实现消息的传递。

 可以看出,每一层只处理各自层级需要处理的内容:最底层的秘书只关注传真“数字电路语言”,第二层只需要关注中文与英语之间的转化,第三层只需要关注英语与A、B当地语言的转化,只有最上层仅关注沟通具体内容。理解了上面的例子,协议栈的原理也就很好理解了。

 

网站新闻配图 (16).jpg

在分组交换网中,基本的数据包是我们需要直接传输的内容,但是需要经过层层封装,添加上对应层级的数据头,一直封装到可以直接传输数字语言的物理媒介层。对应的层级之间可以看做在进行“虚拟对话”。那接下来我们看一看TCP/IP协议栈各个层次封装的主要内容和功能。

 
物理层

物理层是用来建立设备与设备间最基础的物理连接,主要功能是把把二进制比特流转化成电信号,并规定介质类型、接口类型、信令类型、规范电平、数据速率、最大传输距离和物理接头等一系列特征。

 
数据链路层

数据链路层的主要功能是指定数据如何通过物理线路进行传输,并与物理层通信,识别协议类型并对数据进行封装通过网络进行传输。 其中最主要的内容莫过于我们熟知的MAC地址。MAC地址是总长为48bit的一系列字符串。其中前24bit是厂商编号,用来标识设备厂商,比如华为设备的前24位MAC地址是0x00e0fc。后24bit为序列号。MAC地址主要功能是用来标记在同一网络下设备的位置信息。

 
网络层

接下来是网络层,其主要功能是在不同的网络之间将数据包从源转发到目的地。其中提供最重要的信息莫过于IP地址了。不同与MAC地址,IP地址主要是用来标记在不同网络中设备的位置信息,通过路由的形式实现数据在设备之间转发。

 
传输层

传输层主要功能为建立端到端连接、将数据从一端主机传送到另一端主机以及保证数据按序、可靠、正确传输。在这里我们就不得不聊一聊TCP建立连接的“三次握手”

 

网站新闻配图 (17).jpg

第一次:客户端发送SYN报文,主动发起连接请求,SYN=1,seq=x

第二次:服务端收到SYN报文,回复ACK报文,SYN=1, ACK=1,seq=y ,ack=x+1

第三次:客户端收到服务端ACK,回复ACK报文,SYN=1, ACK=1,seq=x+1 ,ack=y+1,客户端和服务器进入 ESTABLISHED状态。

为什么需要有“三次握手”而不是“两次握手”呢,主要原因是由于客户端发出的报文段很有可能因为网络拥塞在某个网络节点长时间滞留,而服务器收到时连接请求已失效,为避免服务器误认为此为有效连接请求,向客户端发出“确认”后新的连接就此建立,但服务器的“确认”不会得到回应,资源被持续消耗的情况。

 
应用层

最后一层为应用层,也是最靠近我们的一层,我们手机和电脑上的各种应用都属于这一层。应用层主要用于将各种信息进行最初级的处理,将各种视频、图片、文字等信息转换成设备可以识别的二进制数据流。为用户提供接口、处理特定的应用、数据加密、解密、压缩、解压缩。TCP/IP模型把网络分为五个层次,每层在功能上相互独立,在协作上又紧密相连。