web-dev-qa-db-ja.com

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

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

しかし、その代わりに使用されるものを見たことはありません。私の講師はそれほど役に立たず、「必要なだけです」と言うだけです。

だから私の質問:

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

AF_INETは、ソケットが通信できるアドレスのタイプ(この場合、インターネットプロトコルv4アドレス)を指定するために使用されるアドレスファミリです。ソケットを作成するときは、そのアドレスファミリを指定する必要があり、そのタイプのアドレスのみをソケットで使用できます。たとえば、Linuxカーネルは、UNIX(AF_UNIX)ソケットやIPX(AF_IPX)などの29個のその他のアドレスファミリをサポートし、IRDAおよびBluetooth(AF_IRDAおよびAF_BLUETOOTH)との通信もサポートしますが、これらを低頻度で使用するのは疑わしいですレベル)。

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

お役に立てれば、

220
George Shore

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つです。

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

42

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

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の違いに関するスレッド も役立つ場合があります。

15
Avi Mehenwal

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

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

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

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

参照: http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html

12
Asish P Mathew

プロトコルアドレスファミリを定義します。これにより、作成されるソケットのタイプが決まります。ポケットPCサポートAF_INET。

次のページのコンテンツはかなりまともです http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/

2
chandan