bind()
Pythonで生のソケットプログラムを実装していますが、ソケットをインターフェースにバインドできる場所に出くわしました。私が理解しているように、この関数の最初のフィールドは、バインドしたいインターフェースです。 2番目のフィールドは何ですか?これは Ethertype (IP4 など) ですか? Python リファレンス ドキュメントにあるraw ソケットの例では、コードは次のようになります。
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
2 番目のフィールドがゼロなのはなぜですか? 他の例では、これが頻繁に 0x0800 (または 10 進数で 2048) に設定されているのを見たので、これがソケットを IP4 プロトコルに設定している可能性があると私は信じています。この設定が 9999 に設定されていることも確認しました。おそらく、ここで何かを見逃しているか、誤解しています。