分析のために格納されている UDP パケットのテーブルがあります。サーバーから要求されていないパケットを検索したい。
たとえば、送信元ポート 106 と dst ポート 32767 から UDP パケットを受信し、自分の IP アドレスからパケットを送信したことがないとします。
これがテーブル構造です。
mysql>show columns from packets;
+--------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| stime | datetime | YES | | NULL | |
| sip | int(10) unsigned | YES | | NULL | |
| dip | int(10) unsigned | YES | | NULL | |
| sport | smallint(6) | YES | | NULL | |
| dport | smallint(6) | YES | | NULL | |
| in_out | tinyint(4) | YES | | NULL | |
| id | smallint(6) | YES | | NULL | |
+--------+------------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
mysql> select * from packets limit 5;
+---------------------+------------+------------+-------+-------+--------+-------+
| stime | sip | dip | sport | dport | in_out | id |
+---------------------+------------+------------+-------+-------+--------+-------+
| 2012-12-03 20:59:45 | 167837953 | 3406507329 | 1029 | 53 | 0 | 32767 |
| 2012-12-03 20:59:45 | 3406507329 | 167837953 | 53 | 1029 | 1 | 32767 |
| 2012-12-03 20:59:46 | 3406507329 | 167837953 | 53 | 1029 | 1 | 32767 |
| 2012-12-03 20:59:46 | 2399874369 | 167837953 | 53 | 32321 | 1 | 3000 |
| 2012-12-03 21:00:02 | 2064330049 | 167837953 | 53 | 3349 | 1 | 1207 |
+---------------------+------------+------------+-------+-------+--------+-------+
5 rows in set (0.00 sec)
上記の例では、最後の 2 つのパケットは非請求パケットであり、クエリで見つけることができるはずです。基本的に、タプルと一致しないパケットを取得した場合(source,dest,sourceport,dstport,id)
、Mysql テーブルにそれらすべての行をリストする必要があります。
ありがとうビジェイ