C++言語でのWinsock2を使用したパケットモニタの作成
こんにちは
現在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)
お礼
ありがとうございます。本当にありがとうございます。修論の執筆中で膨大なデータの処理に困っていました。大変参考になりました。あつくお礼を申し上げます。