AF_INETとは何ですか。なぜ必要なのですか。


201

私はソケットプログラミングを始めており、これを見続けていAF_INETます。

しかし、その場所で他に使用されているものを見たことがありません。私の講師はあまり役に立たず、「あなたはそれが必要だ」とだけ言っています。

だから私の質問:

  • の目的はAF_INET何ですか?
  • それの代わりに他に何か使用されたことがありますか?
    • そうでない場合、なぜそこにあるのですか?将来起こりうる変更について
    • もしそうなら、何を、そしてなぜ?

回答:


269

AF_INETソケットが通信できるアドレスのタイプ(この場合は、インターネットプロトコルv4アドレス)を指定するために使用されるアドレスファミリです。ソケットを作成するときは、そのアドレスファミリを指定する必要があります。その場合、そのタイプのアドレスはソケットでのみ使用できます。Linuxカーネルは、例えば、29人の他のアドレスなどUNIX(など家族をサポートAF_UNIX)ソケットおよびIPX(AF_IPXIRDAおよびBluetoothで)、また、コミュニケーションを(AF_IRDAそしてAF_BLUETOOTH、あなたがそのような低レベルでこれらを使用します疑問です)。

ほとんどの場合、AF_INETネットワーク経由でのソケットプログラミングに固執するのが最も安全なオプションです。AF_INET6インターネットプロトコルv6アドレス用もあります。

お役に立てれば、


43

AF_INETの主な目的は、他の可能なネットワークプロトコルまたはアドレスファミリを可能にすることでした(AFはアドレスファミリ用、PF_INETは(IPv4)インターネットプロトコルファミリ用)。たとえば、おそらくまだいくつかのNetware SPX / IPXネットワークがあります。DECNet、StarLAN、SNAなどの他のネットワークシステムがありましたが、これはよく知られていないISO OSI(Open Systems Interconnection)は言うまでもありません。ネットワーク接続でピアホストを識別するために、必ずしも今では遍在するIPアドレスを使用する必要はありませんでした。

AF_INET(振り返ってみると、AF_INET4という名前になっているはずです)のユビキタスな代替手段は、IPv6アドレスファミリのAF_INET6です。IPv4は32ビットアドレスを使用します。IPv6は128ビットのアドレスを使用します。

他の値が表示される場合がありますが、それらは異常です。代替案と将来の方向性を考慮に入れるためにあります。ソケットインターフェースは、実際には非常に一般的です。これは、他のネットワークインターフェースが衰退した場所で成功した理由の1つです。

人生は(ほとんど)シンプルになりました-感謝してください。


回答ありがとうございます。最初の質問に対する回答は、使用するネットワークプロトコルを定義することを目的としていると思いますか。ただし、他の質問について具体的に教えていただけますか?
Smashery '20年

AF_INET6の良い点。一部のOSでは、他のアドレスファミリがサポートされています。
MarkR、2009年

15

IPCソケット通信の実装に使用するソケットアドレス指定のタイプを指定するには、AF_UNIXやAF_INETなどの引数が必要です。AFはアドレスファミリの略です。

BSD標準ソケット(Pythonソケットモジュールで採用)と同様に、アドレスは次のように表されます。

  1. AF_UNIX / AF_LOCALアドレスファミリには単一の文字列が使用されます。このオプションは、IPアドレスが不要なローカルマシンのIPCに使用されます。

  2. ペア(ホスト、ポート)は、AF_INETアドレスファミリに使用されます。ホストは、「daring.cwi.nl」などのインターネットドメイン表記のホスト名または「100.50.200.5」などのIPv4アドレスを表す文字列で、ポートは整数。インターネット上のプロセス間の通信に使用されます。

AF_UNIX、AF_INET6、AF_NETLINK、AF_TIPC、AF_CAN、AF_BLUETOOTH、AF_PACKET、AF_RDSは、AF_INETの代わりに使用できる他のオプションです。

AF_INETとPF_INETの違いに関するこのスレッドも役立つかもしれません。


14

ソケットは、ドメイン、タイプ、およびトランスポートプロトコルによって特徴付けられます。一般的なドメインは次のとおりです。

  1. AF_UNIX:アドレス形式はUNIXパス名です

  2. AF_INET:アドレス形式はホストとポート番号です

(実際にはここで特殊な目的で使用できる他の多くのオプションがあります)通常、ソケットプログラミングにはAF_INETを使用します

リファレンス:http : //www.cs.uic.edu/~troy/fall99/eecs471/sockets.html


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.