[1] TLS Record Protocol (記録層) は、 TLS の下位側のプロトコル階層です。
[9] 記録層では、 214 バイト以下のデータに分割して
TLSPlaintext
として扱います。記録層データ構造間で分割した境界は意味を持たず、
同じ記録内容型なら1つの TLSPlaintext
に結合したり、分解したりできます。
>>2
[11] TLSPlaintext
に圧縮アルゴリズムを適用した結果が
TLSCompressed
です。 (ここでいう圧縮アルゴリズムには、無変換の
「null」も含まれます。)
[12] TLSCompressed
に MACアルゴリズムと暗号化アルゴリズムを適用した結果が
TLSCiphertext
です。
[10] TLSPlaintext
や TLSCompressed
や
TLSCiphertext
は、次のもので構成されます >>2。
ClientHello
や ServerHello
にも記述されます。そちらとこちらの値は異なるかもしれません。[19] データ (fragment
) の長さは、
TLS拡張 max_fragment_length
>>18 により最大値を折衝できます。
[15] TLS で送受信されるデータはすべて TLS Record Protocol のメッセージという形で送信されます。 TLS が開始された当初は暗号化、圧縮などを行わない接続状態なので、 平文のままのメッセージが送信されます。この状態で上位層プロトコルとして TLS Handshake Protocol を用いて新たな接続状態を折衝し、移行します。これによって TLS Record Protocol のメッセージに暗号化、圧縮などが適用された状態になります。これで上位層プロトコルとしてTLS応用データプロトコルを用い、上位アプリケーション層プロトコルのデータの送受信が行えるようになります。 その後も alert protocol 等 TLS のメッセージが送受信されることがあります。
[3] TLS Record Protocol を使って規定されるプロトコルはいくつかあり、
その区別を表す値を記録内容型
(ContentType
) といいます >>2。
[16] 値は1バイトの数値で表されます。
[4] TLS Record Protocol の運用環境のことを TLS接続状態といい、 次のもので構成されます >>2。
[5] 接続状態は、現在の読み取り用状態、書き込み用状態と、 pending の読み取り用状態、書き込み用状態の4つがあります >>2。
[8] 記録は、現在の読み取り用状態と書き込み用状態に従い処理されます >>2。
[6] 現在の接続状態の初期値は、暗号化、圧縮、MAC のいずれも使用しないものです >>2。
[7] TLS Handshake Protocol は pending 接続状態のセキュリティー引数を設定します。 ChangeCipherSpec は pending 接続状態を現在の接続状態とします。 >>2
[25] RFC 7983 - Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) Extension for Datagram Transport Layer Security (DTLS) () <https://tools.ietf.org/html/rfc7983>