TLS/SSL报文格式探究

  本文简单介绍一下实际通信场景中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

 

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值