Soru Unix soketi ve TCP / IP soketi arasındaki fark nedir?


Bu cevaptan:

https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424


82
2018-03-20 09:13


Menşei




Cevaplar:


bir UNIX soketi aynı makinede çalışan işlemler arasında çift yönlü veri alışverişine izin veren bir süreçler arası iletişim mekanizmasıdır.

IP prizler (özellikle TCP / IP soketleri) ağ üzerindeki işlemler arasında iletişimi sağlayan bir mekanizmadır. Bazı durumlarda, aynı bilgisayarda çalışan işlemlerle (geri döngü arabirimini kullanarak) konuşmak için TCP / IP soketlerini kullanabilirsiniz.

UNIX etki alanı soketleri aynı sistem üzerinde çalıştıklarını bilirler, bu nedenle bazı denetimler ve işlemlerden (yönlendirme gibi) kaçınabilirler; Bu da onları IP soketlerinden daha hızlı ve daha hafif yapar. Dolayısıyla, aynı ana bilgisayardaki işlemlerle iletişim kurmayı planlıyorsanız, bu IP yuvalarından daha iyi bir seçenektir.

Düzenle: Nils Toedtmann'ın yorumu: UNIX etki alanı soketleri dosya sistemi izinlerine tabidir, TCP soketleri ise yalnızca paket filtre seviyesinde kontrol edilebilir.


148
2018-03-20 09:39



Belki de, TCP soketleri olmasa da UNIX etki alanı soketlerinin dosya sistemi izinlerine tabi olduğunu ekleyin. Sonuç olarak, hangi kullanıcıların bir UNIX etki alanı soketine bir TCP soketinden daha erişebildiğini düzenlemek çok daha kolaydır. - Nils Toedtmann
@pQd, Dude Unix Sockets yerine Unix IPC diyebilir misiniz? - Pacerier
@Pacerier Unix soketleri, unix IPC'yi (diğerleri arasında paylaşılan Interprocess belleği) elde etmenin bir yoludur, bu yüzden IPC unix unix soketlerini aramak doğru olmaz. - fyquah95
TCP soketleri de Unix tarafından ele alındı? TCP soketleri TCP protokolü özelliklerinin bir parçasıdır veya herhangi bir protokol IP Yuvaları kullanabilir? - Federico
@Federico Eğer daha fazla derinliğe ihtiyacınız varsa, lütfen yeni bir soru gönderin lütfen, sorunuzu yanıtlamaya çalışan bir cevap yayınladım. - Peter Green


Kendi makinenizin yerel unix soketlerini aşağıdaki komutla listeleyebilirsiniz:

netstat -a -p --unix

İyi eğlenceler!


21
2018-03-20 13:49



Windows'da Unix soketleri yoktur. netstat Ancak Windows üzerinde çalışır. - Mark Tomlin
@apache, Windows'da benzer bir şey "Adlandırılmış borular" olarak adlandırıldı. - expert
Adlandırılmış borular da Linux'ta mevcuttur. - Sahil Singh
@expert, Windows'da adlandırılmış yöneltmeler, Unix'teki adlandırılmış yöneltmelere eşittir. Unix'teki IPC soketlerinin Windows'da eşdeğer olmaması - Pacerier
Tek bir fark, adlandırılmış yöneltme işleminin, bir seferde yalnızca bir istemci bağlanmış olmasıdır (toplamı ileten 2 işlem). IP yuvaları gibi UNIX yuvaları, her biri ayrı ayrı yanıt alan birden fazla istemciye bağlanabilir. - peterflynn


Unix soketi ve TCP / IP soketi arasındaki fark nedir?

TCP / IP ağları arasında iletişim için bir TCP / IP soketi kullanılır. Bağlı bir TCP soketi, yerel IP, yerel bağlantı noktası, uzak IP ve uzak bağlantı noktası kombinasyonuyla tanımlanır. Dinleme TCP soketi, yerel port ve muhtemelen yerel IP ile tanımlanır. AIUI, en azından linux TCP / IP soketlerinde, istemci ve sunucu aynı makinede olsa bile, TCP / IP paketlerinin her zaman üretilmesine ve kod çözmesine neden olur.

Öte yandan bir unix alan soketi (bazen unix soketine kısaltılır), tek bir makinede çalışır. Dinleme soketleri dosya sistemi hiyerarşisinde yaşar ve bunlara erişim dosya sistemi izinleriyle kontrol edilebilir.

Ayrıca, bir Unix soketindeki bir bağlantıyı kabul eden bir işlem, bağlanan işlemin kullanıcı kimliğini belirleyebilir. Bu bir kimlik doğrulama adımı ihtiyacını ortadan kaldırabilir. Veritabanı sunucunuz için bir şifre oluşturmak ve bunun bir kopyasını webapp kodunuza eklemek yerine veritabanı sunucusuna, web sunucusunu çalıştıran kullanıcının veritabanındaki ilgili kullanıcı hesabına erişebileceğini söyleyebilirsiniz.


TCP soketleri de Unix tarafından ele alındı?

Tabii ki

TCP soketleri TCP protokol belirtiminin bir parçasıdır

İnternet protokolü özellikleri yalnızca telde ne olduğuyla ilgilenme eğilimindedir, TCP belirtimi Soketin bir tanımını içerir, ancak bu tanım terimi "soket API'sı" tarafından kullanılan terimle aynı değildir.

Bildiğimiz gibi "soket API'sı" BSD tarafından tanıtıldı ama daha sonra her yerde kopyalandı ve posix standardının bir parçası olarak dahil edildi. TCP ve UDP yuvaları için temel nesneler farklı platformlarda aynıdır, ancak OS'nin diğer bölümleriyle etkileşime giren daha gelişmiş şeyler ve şeyler değişir, örneğin unix benzeri sistemlerde bir soket bir dosya tanıtıcısıyla tanımlanır ve Dosya API'ları tarafından okunabilir / yazılabilir, bu pencerelerdeki gibi değildir.

Yuva API'sine yapılan bazı uzantılar, rfcs'de belgelenmiştir, ancak bu RFC'ler yalnızca "bilgi amaçlıdır".

veya herhangi bir protokol IP Yuvaları kullanabilir?

Bir uygulama açıkça "soket" işlevini kullanarak bir soket oluşturduğunda (yuvalar kabul işleviyle de oluşturulur), üç etki alanı, "etki alanı", "tür" ve "iletişim kuralı" iletir. Aralarında bu üç parametre birçok farklı tipteki soketi seçmek için kullanılabilir.

  • etki alanı kullanımda olan protokol / adres ailesini seçer; İpv4 için AF_INET, ipv6 için AF_INET6, unix dosya sistemi yolları için AF_Unix vb.
  • tip iletişim semantiğini seçer, ana olanlar datagram ve stream olmakla birlikte başka daha özel tipler de vardır.
  • protokol kullanılacak protokolü seçer, eğer 0 olarak ayarlanırsa, Domain kombinasyonu için varsayılan bir protokol ve tip kullanılacaktır.

5
2017-09-13 17:32