当前位置:   article > 正文

TLS/SSL报文格式探究_tls报文

tls报文

  本文简单介绍一下实际通信场景中HTTPS的报文结构。

图1

  图1出自这里,很好的解释了HTTPS和HTTP在协议栈中的关系。可以看出HTTS总体上是由两部分来构成的,TLSRecord Layer Protocol和其他的一些子层协议,例如握手协议和http协议等。由图1可以看出Record Layer层作为低一层的协议来承载上层的数据,但是该层与上层(以握手协议层为例)到底在报文中是怎么样呈现的,这是本文要讨论的内容。我们知道hanshake protocol的四次握手过程如图2,出自阮一峰

 

图 2

  图1 和图2相结合会引发这样一个问题,以服务器端的应答为例,通常情况下服务器的应答会包含ServerHello,Certificate,以及ServerHelloDone等内容,那么按照图1 所示,当Record Layer来承载上层数据的时候,对着三条记录只是用一个Record Layer还是每个记录分别设置一个Record Layer。我以实际的抓包为例,来进行说明,具体如下:

  情况一:

图 3

  图3中Record Layer封装了服务器在握手协议期间的server hello

 

图4

  图4 中Record Layer分别封装了服务器在握手协议期间的certificate 以及serverhello。

  图3和图4说明了Record Layer是各自对每一条记录消息进行封装。

  情况二:

 

图 5

  图 5展示的是另外一种情况,即RecordLayer对三条记录统一封装。在实际分析的过程中情况一和情况二都找到了3.0,3.1,3.2,3.3这四种版本对应的实例。

图 6

  图 6 中Record Layer封装了客户端的应答数据,即http数据。

  还有一点需要注意的地方就是,对于服务器的应答,通常即含ServerHello,Certificate,ServerHelloDone这三条记录,一般分为若干个数据包来进行传输,但是在实际统计加密数据的过程中,发现Certificate最后的一部分内容和ServerHelloDone并不总是都存在于同一个数据包中,如图7所示,即使Certificate最后的一部分内容小于MTU。由于这个分开成为两个数据包传输的情形并不是个例,这种情形在解码的时候可能需要注意一下。

图7

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/718874
推荐阅读
相关标签
  

闽ICP备14008679号