TCP:どのように、配列番号/ack数生まれたのであろうか。
-
22-08-2019 - |
質問
現在、私が取り組んでいるプログラムsniffs TCPパケットの送受信とから、特定のアドレスです。私達成しようとする回答と合わせたカスタムパケット定を受けた。しかし、私は解析が行われます。って発生する有効なイーサネット、IP、--の--TCPパケット。
るということだけができませんの姿はどのように配列番号/ack数を決定します。
かもしれないが、これとは関係な問題で書かれたプログラムでC++を使用WinPCap.思いの他のヒント、記事、又はその他の資源が助けてくれます。
解決
、各側は、初期シーケンス番号として乱数を生成します。それは強く乱数である:彼らは簡単にTCPストリームに注入するために、パケットを偽造することができますよう、インターネット上の誰もが、シーケンス番号を推測することができる場合、セキュリティ上の問題があります。
。その後、シーケンス番号が1だけインクリメントする送信すべてのバイトのためのACKフィールドは、受信を確認するために送り返され、他側からシーケンス番号がある。
RFC 793 に、オリジナルのTCPプロトコルの仕様は、大きな助けになることができます。
他のヒント
私が行うには、同じ仕事をしています。
まず、初期SEQ#が(0から4294967297)ランダムに生成されるであろう。
そして、受信機は、受信したデータの長さをカウントし、送信者にseq# + length = x
のACKを送信します。シーケンスは、Xになり、送信側はデータを送信します。同様に受信機は、長さx + length = y
をカウントし、その上y
としてACKを送信して...その配列/ ACKが生成される方法...
あなたはそれが事実上のWiresharkでパケットを盗聴しようとTCPストリームを追跡して、シナリオを参照してください表示したい場合は...
だから正しく-おいけ TCP列予測の攻撃.そうなるとまだ研究の具体的な対象OS 初期のシーケンス番号 ジェネレータ。
が広く公表さvulnerabiltiesにかなり すべての主要なOS wrt自分で発電される。しんのの影響が、私の理解は、ほとんどのベンダのパッチを公開 ランダム自じゃない単位で.
どのようにお考えの答えを説いつ発表についての詳細は、公式な情報についてACKのと TCP RFC
こちらは、より実践的な"簡単に理解"のページを見てやってた時に、同様の実装とも TCP分析-2.Sequence&承認番号
これらの値は、接続のための初期シーケンス番号に対してパケットのペイロードの開始の予想オフセットを参照します。
シーケンス番号(32ビット) - 持つデュアル 役割SYNフラグが設定されている場合、この 初期シーケンス番号です。ザ・ 実際の最初のシーケンス番号 データ・バイトは、この順序になります 数に1を加えSYNフラグがない場合には セットには、これはシーケンス番号です 最初のデータバイトの
謝辞 数(32ビット) - ACKフラグがある場合 このフィールドの値が設定され その次に期待されるバイト 受信機が期待されます。
の数字がランダム次いでオクテット(バイト)送信の数によって増加し、両側から生成されます。
のシーケンス番号がインクリメント。新しい接続の初期シーケンス番号は、理想的にランダムに選択されますが、OSの多くは、いくつかのセミランダムアルゴリズムを持っています。 RFCのより TCPのRFC を見つけるのに最適な場所です。