0

受信した各TCPパケット(特定のプログラム、つまりポート宛て)のTCPヘッダーを取得したいのですが、通常のソケットを使用してTCPヘッダーを取得するためにrecv()またはrecvfrom()を使用することはできないようです。

したがって、rawソケットとrawソケットを使用したいので、recvfrom()を使用して、ホストが大量のパケットを受信した場合にホスト宛てのすべてのIPパケットを受信できます。各パケットのポート番号を確認して、必要な。それでは、非常に時間とCPUの消費になる可能性がありますか?

while()
{
recvfrom();
check_port_number(); 
}

受信したtcpパケットのtcpヘッダーを取得するための良い方法はありますか?私はLinuxcを使用しているので、ソリューションはLinuxcベースである必要があります。ありがとう!

4

1 に答える 1

0

You want to use the libpcap API, not the socket API. libpcap lets you read packets right off the wire.

Another library you can use to ease parsing the packets is libnet.

于 2013-03-14T23:39:33.553 に答える