AF_INET nedir ve neden buna ihtiyacım var?


201

Soket programlamaya başlıyorum ve bunu görmeye devam ediyorum AF_INET .

Yine de, yerinde kullanılan başka bir şey görmedim. Öğretim görevlilerim o kadar faydalı değil ve sadece "Sadece ihtiyacın var" deyin.

Sorularım:

  • Amacı nedir AF_INET?
  • Bunun yerine başka bir şey kullanılmış mı?
    • Değilse, neden orada? Gelecekte olası değişiklikler için?
    • Eğer öyleyse, ne ve neden?

Yanıtlar:


269

AF_INET, soketinizin iletişim kurabileceği adres türlerini belirtmek için kullanılan bir adres ailesidir (bu durumda, Internet Protokolü v4 adresleri). Bir soket oluşturduğunuzda, adres ailesini belirtmeniz gerekir ve sonra yalnızca bu türdeki adresleri soketle kullanabilirsiniz. Linux çekirdeği, örneğin, UNIX ( AF_UNIX) yuvaları ve IPX ( AF_IPX) gibi 29 adres ailesini ve ayrıca IRDA ve Bluetooth ile iletişimi destekler ( AF_IRDAve AF_BLUETOOTHbunları bu kadar düşük bir seviyede kullanacağınızdan şüpheniz yoktur).

Çoğunlukla, AF_INETbir ağ üzerinden soket programlama için yapışmak en güvenli seçenektir. AF_INET6Internet Protokolü v6 adresleri için de vardır .

Bu yardımcı olur umarım,


43

AF_INET'in birincil amacı diğer olası ağ protokollerine veya adres ailelerine izin vermekti (AF adres ailesi içindir; PF_INET (IPv4) internet protokol ailesi içindir). Örneğin, muhtemelen hala birkaç Netware SPX / IPX ağı vardır; DECNet, StarLAN ve SNA gibi kötü ağlara sahip ISO OSI'den (Açık Sistemler Bağlantısı) bahsetmemek için başka ağ sistemleri de vardı ve bunlar ağ bağlantılarındaki eş ana bilgisayarı tanımlamak için şimdi her yerde bulunan IP adresini kullanmak zorunda değildi.

IPv6 adres ailesi için AF_INET'e (geriye dönük olarak AF_INET4 olarak adlandırılmış olması gerekir) her yerde bulunan alternatif AF_INET6'dır. IPv4 32 bit adresler kullanır; IPv6, 128 bit adresler kullanır.

Başka değerler görebilirsiniz - ancak bunlar alışılmadık. Alternatiflere ve gelecekteki yönelimlere izin vermek için var. Soket arayüzü aslında çok geneldir - bu da diğer ağ arayüzlerinin soltuğu yerde gelişmesinin nedenlerinden biridir.

Hayat (çoğunlukla) daha basitleşti - minnettar olun.


Yanıtınız için teşekkürler - İlk soruma verdiğiniz yanıtın amacının hangi ağ protokolünü kullanacağını tanımlamak olduğu sonucuna varıyorum. Yine de, diğer sorulara daha açık olabilir misiniz?
Smashery

AF_INET6 hakkında iyi bir nokta; diğer adres aileleri bazı işletim sistemlerinde desteklenir.
MarkR

15

IPC soket iletişimini uygulamak için hangi soket adresleme türünü kullanacağınızı belirtmek için AF_UNIX veya AF_INET gibi bağımsız değişkenlere ihtiyacınız vardır. AF, Adres Ailesi anlamına gelir.

BSD standart Soket (Python soket modülünde kabul edilen) adresleri aşağıdaki gibi temsil edilir:

  1. AF_UNIX / AF_LOCAL adres ailesi için tek bir dize kullanılır. Bu seçenek, IP adresinin gerekli olmadığı yerel makinelerde IPC için kullanılır.

  2. AF_INET adres ailesi için bir çift (ana bilgisayar, bağlantı noktası) kullanılır; burada ana bilgisayar, 'daring.cwi.nl' gibi Internet etki alanı gösterimlerinde bir ana bilgisayar adını veya '100.50.200.5' gibi bir IPv4 adresini temsil eden bir dizedir ve bağlantı noktası Bir tam sayı. İnternet üzerinden işlemler arasında iletişim kurmak için kullanılır.

AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS , AF_INET yerine kullanılabilecek diğer seçeneklerdir .

AF_INET ve PF_INET arasındaki farklarla ilgili bu konu da yararlı olabilir.


14

Soket, alan, tip ve taşıma protokolü ile karakterizedir. Ortak alanlar:

  1. AF_UNIX: adres biçimi UNIX yol adı

  2. AF_INET: adres biçimi ana bilgisayar ve bağlantı noktası numarasıdır

(aslında burada özel amaçlar için kullanılabilecek birçok seçenek vardır). genellikle soket programlama için AF_INET kullanırız

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


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.