TCPソケットを使用したネットワークプログラミング(C & Linux)では、パケットを受信したインターフェイスを確認する方法を教えてください。これはSOCK_DGRAMとIPオプションIP_PKTINFOで非常に簡単に行うことができますが、このオプションはSOCK_STREAMでは機能しません。この場合(私はプログラミングのために)、私はパケットを受け取ったインタフェースを知っていなければなりません(サーバに返す応答はそれに依存します)。TCPソケットで受信インターフェイスを確認する
SOCK_RAWとIPPROTO_TCP(SOCK_RAWを使用してIP_PKTINFOオプションを設定することができます)を使用することをお勧めしますが、これはマシンに到着するすべてのTCPトラフィックを受信することを意味し、それ。私が考えているもう1つの解決策は、ルーティングテーブルに対して宛先IPをチェックしてそこから出口インターフェイスを取得することですが、IPv6はどうですか?運命がIPv6リンクローカルであればどうなるでしょうか?
誰かが別の解決策やアイデアを持っていれば、私はそれを読んでうれしく思います。
あなたがいないパケットごとに、時間を受け入れるにその情報を収集します。これは受け入れられたソケット上で 'getsockname()'によって与えられます。しかし、弱いエンドシステムモデルは信頼できないということを意味します。 – EJP
あなたは正しいです、ありがとうございます – julino