dポイントプレゼントキャンペーン実施中!

こんにちは
現在Winsock2を使用したパケットモニタを作成しています
パケットを受信できるプログラムは作成することができましたが、TCPパケットが期待した順番通りに受信できません
例えば、3WAYハンドシェイクのパケットのやり取りで、期待しているパケットの受信順は

1. host ---> net: SYN
2. host <--- net: SYN,ACK
3. host ---> net: ACK

ですが、パケットモニタでは以下の順番でパケットを受信しています

1. host ---> net: SYN
2. host ---> net: ACK
3. host <--- net: SYN,ACK

hostから送信されるパケットが先に受信されているような感じですが、これらを時刻順に受信するオプションなどはあるのでしょうか?
もしあるならどのように設定すればよろしいのでしょうか?

(ソケットなどの設定内容)
初期化
 WSADATA wsd;
 WSAStartup(MAKEWORD(2, 2), &wsd)

ソケット作成
 SOCKET sock;
 sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED)

無差別受信モードに設定
 int op = RCVALL_ON;
 WSAIoctl(sock, SIO_RCVALL, &op, sizeof(op), NULL, 0, &dword, NULL, NULL)

パケットの受信
 WSABUF wsb;
 DWORD len = 0;
 DWORD flag = 0;
 WSARecv(sock, &wsb, 1, &len, &flag, NULL, NULL)

A 回答 (1件)

回答ではないです。



Ethereal とかのフリーのキャプチャソフトでも、同じように表示されるか確認してみたらどうでしょう?
また、↑はソースも参照できますから、それを漁ってみては。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Etherealでキャプチャを行った際は期待している通りの順番でキャプチャできていました。

同様のプログラムをLinuxで作成してみたところ、こちらも期待通りの順番でパケットをキャプチャしていました。

Linuxで作成したプログラムはパケットをイーサネットレベル(2層)でキャプチャしていましたが、Winsockを使用した方はIPレベル(3層)でキャプチャしているので、これが期待通りの順番にならない原因なのかもしれません。

お礼日時:2006/07/31 11:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!