• 締切済み

TCP/IP ACKについて

初めて質問させて頂きます。 現在WinpCapを使ってTCPの通信プログラムを作成しています。 単純にパケットの受信や送信は出来たので、ローカルサーバーに接続出来るか試しているのですが、通信が確立しません。 状況としては、こちらからSYN = 1でサーバーに信号を送ると、サーバーから返事が来ます。 サーバーの返事を待ってACK = 1でサーバーに返事をするのですが、そのときの状態をWiresharkで確認すると、ACKの番号が2067011292等と表示されて通信が確立しません。 ACKの値が異常なのは判りますが、この数値はどこから来るのか、又対処方法などが有りましたら教えてください。 環境はVC2003、WInXP/Win7です。

みんなの回答

  • foitec
  • ベストアンサー率43% (1080/2457)
回答No.1

受信側が応答するACK番号は、スリーウェイハンドシェイクでは「シーケンス番号+1」ですが コネクションが確立して実際にデータを送受信する段階では、「送信側のシーケンス番号+受信データバイト数」をACK番号として応答するようになります。

zoro81
質問者

補足

foitec さん、回答有難うございます。 表現がたりなく申し訳有りません。 現在の状態は、スリーウェイハンドシェイク時の問題です。 クライアント SYN = 1 ----> サーバー サーバー ACK,SYN = 1 ----> クライアント(本当はこの時点でおかしいのかも知れませんが、確認で来ていません。) クライアント ACK = 1 ----> サーバー のときにSEQナンバーが2067011292のように 大きな値が出てきて、通信が確立出来ていない状態です。 ちなみにクライアント側のシーケンスナンバーは20000からスタートしています。 他のクライアントソフトでは通信は確立しています。

関連するQ&A