TCPシーケンス番号
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/13 20:02 UTC 版)
「TCPシーケンス番号予測攻撃」の記事における「TCPシーケンス番号」の解説
TCPでは、フロー制御にスライディングウィンドウを用いており、そのスライディング管理にシーケンス番号を用いている。例えば、1000オクテットのデータを3パケット送信すると、以下のような通信内容となる。 1000オクテットのデータを3パケット送信した場合項番送信側向き受信側備考送信データ長シーケンス番号ACK番号11000 0 → 2 ← 1000 1000バイト受信済みであることを示す肯定応答が返される 31000 1000 → 項番1において1000バイト送信済みであるため、シーケンス番号は1000となる 4 ← 2000 トータル2000バイト受信済みであることを示す肯定応答が返される 51000 2000 → 項番1と3において2000バイト送信済みであるため、シーケンス番号は2000となる 6 ← 3000 トータル3000バイト受信済みであることを示す肯定応答が返される 実際にはスライディングウィンドウの影響を受けるため、項番3の送信は項番2のACK応答が返ってくる前に送信されると考えられる。また、受信側の都合で途中までしか受信されなかった場合はACK番号が1000単位未満の値が返されることもある。しかし、これらの事情はここでの主題とは外れる話であるため割愛する。 上表は理解のために簡素化して記しているが、実際にはシーケンス番号は0から始まるのではなく、適当な番号から始まり、以降のパケットにおいても第1パケットのシーケンス番号だけ加算された値が用いられる。この事情は、上表の「シーケンス番号」だけでなく「ACK番号」についても同様である。つまり、上の表を、実際の送受信パケット内で用いられるもので表記すると、以下のようになる。 1000オクテットのデータを3パケット送信した場合(実際版)項番送信側向き受信側備考送信データ長シーケンス番号ACK番号11000 990000 → 2 ← 991000 991000の手前までを受信済みであることを示す肯定応答が返される 31000 991000 → 項番1において1000バイト送信済みであるため、シーケンス番号は990000+1000=991000となる 4 ← 992000 51000 992000 → 6 ← 993000 この加算値、つまり、セッションの第1パケットに含まれるシーケンス番号は、イニシャルシーケンス番号(ISNと略される)と呼ばれている。上表がセッション確立開始時点からのパケットであれば、990000がイニシャルシーケンス番号となる。 なお、シーケンス番号が取りうる範囲は32ビットで示される数値に限られる。上限に達した場合は0からサイクリックに使用されることになる。
※この「TCPシーケンス番号」の解説は、「TCPシーケンス番号予測攻撃」の解説の一部です。
「TCPシーケンス番号」を含む「TCPシーケンス番号予測攻撃」の記事については、「TCPシーケンス番号予測攻撃」の概要を参照ください。
- TCPシーケンス番号のページへのリンク