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


Yanıtlar:


191

Bir UNIX soketi , aynı makinede çalışan işlemler arasında çift yönlü veri alışverişine olanak sağlayan işlemlerarası bir iletişim mekanizmasıdır.

IP soketleri (özellikle TCP / IP soketleri) ağ üzerinden işlemler arasında iletişime izin veren bir mekanizmadır. Bazı durumlarda, aynı bilgisayarda çalışan işlemlerle konuşmak için TCP / IP soketlerini kullanabilirsiniz (geridöngü arabirimini kullanarak).

UNIX etki alanı soketleri, aynı sistemde çalıştıklarını biliyorlar; bu nedenle bazı denetimlerden ve işlemlerden (yönlendirme gibi) kaçınabilirler; bu 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 soketlerinden daha iyi bir seçenektir.

Düzenleme: Nils Toedtmann'ın yorumuna göre : UNIX alan soketleri dosya sistemi izinlerine tabidir, TCP soketleri sadece paket filtre seviyesinde kontrol edilebilir.


12
Belki de, UNIX etki alanı soketlerinin dosya sistemi izinlerine tabi olduğunu, TCP soketlerinin olmadığını da ekleyin. Sonuç olarak, hangi kullanıcıların bir UNIX etki alanı soketine erişimi olduğunu düzenlemek, TCP soketi için olduğundan daha kolaydır.
Nils Toedtmann

@pQd, Dude Unix Sockets yerine Unix IPC diyebilir misin?
Pacerier

4
@Pacerier Unix soketleri, unix IPC'yi (diğerleri arasında paylaşılan Interprocess belleği) elde etmenin sadece bir yoludur, bu yüzden unix soketlerine unix IPC çağırmak doğru olmaz.
fyquah95

TCP soketleri de Unix tarafından mı kullanılıyor? TCP soketleri, TCP protokolü belirtiminin bir parçasıdır veya herhangi bir protokol IP Soketleri kullanabilir mi?
Federico,

@Federico Sorgunuzu ele almaya çalışan bir yanıt gönderdim, daha fazla derinliğe ihtiyaç duyarsanız, lütfen yeni bir soru gönderin.
Peter Green

28

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

netstat -a -p --unix

İyi eğlenceler!


9
Windows'ta Unix soketleri yok. netstatancak Windows üzerinde çalışıyor.
Mark Tomlin

4
@ apache, Windows'ta "Adlandırılmış Borular" adı verilen benzer bir şey.
Uzman

5
İsimli borular Linux'ta da mevcuttur.
Sahil Singh

9
@ expert, Windows'taki adlandırılmış yöneltmeler, Unix'teki adlandırılmış yöneltmelere eşittir.
Unix'teki

2
Windows 10'da Unix soketleri desteği vardır. Bazı sınırlamalar var, ancak var: blogs.msdn.microsoft.com/commandline/2017/12/19/…
Tyson

12

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

TCP / IP ağları üzerinden iletişim için bir TCP / IP soketi kullanılır. Bağlı bir TCP soketi, yerel IP, yerel port, uzak IP ve uzak port kombinasyonuyla tanımlanır. Bir dinleme TCP soketi yerel port ve muhtemelen yerel IP ile tanımlanır. En azından linux TCP / IP soketlerinde AIUI, istemci ve sunucu aynı makinede olsa bile her zaman TCP / IP paketlerinin oluşturulmasına ve kodlarının çözülmesine neden olur.

Öte yandan, bir unix alan soketi (bazen unix soketine kısaltılmış) 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 soketinde bağlantı kabul eden bir işlem, bağlanan işlemin kullanıcı kimliğini belirleyebilir. Bu bir kimlik doğrulama adımına ihtiyaç duyulmasını önleyebilir. Veritabanı sunucunuz için bir parola oluşturmak yerine ve bunun bir kopyasını webapp kodunuza dahil etmek yerine, veritabanı sunucusuna webapp çalıştıran kullanıcının veritabanındaki ilgili kullanıcı hesabına erişimi olduğunu söyleyebilirsiniz.


TCP soketleri de Unix tarafından mı kullanılıyor?

Tabii ki

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

Internet protokolü spesifikasyonları sadece tel üzerinde olanları ilgilendirme eğilimindedir, TCP spesifikasyonu bir Soket tanımı içerir, ancak bu tanım "soketler API" tarafından kullanılan terimle aynı değildir.

Bildiğimiz gibi "soketler API "'si BSD tarafından tanıtıldı, ancak daha sonra her yere kopyalandı ve posix standardının bir parçası olarak dahil edildi. TCP ve UDP soketleri için temel şeyler, farklı platformlarda aynı olma eğilimindedir, ancak daha gelişmiş şeyler ve işletim sisteminin diğer bölümleriyle etkileşime giren şeyler değişkenlik gösterir, örneğin unix benzeri sistemlerde bir soket bir dosya tanıtıcısı tarafından tanımlanabilir ve API'lar tarafından okunup / yazılmalıdır, bu durum pencerelerde böyle değildir.

Soketler 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 Soketlerini kullanabilir mi?

Bir uygulama açıkça "socket" işlevini kullanarak bir soket oluşturduğunda (soketler ayrıca kabul işlevi tarafından da oluşturulur), "domain", "type" ve "protokol" olmak üzere üç parametre iletir. Aralarında bu üç parametre birçok farklı soket tipini seçmek için kullanılabilir.

  • domain, kullanılan protokol / adres ailesini seçer, örneğin ipv4 için AF_INET, ipv6 için AF_INET6, unix dosya sistemi yolları için AF_Unix vb.
  • type, iletişim semantiğini seçer, ana olanları datagram ve stream'tir, ancak başka daha özel tipler de vardır.
  • protokol kullanılacak protokolü seçer, eğer 0 olarak ayarlanırsa, Domain ve type kombinasyonu için varsayılan bir protokol kullanılır.

"Dinleme soketleri dosya sistemi hiyerarşisinde yaşar ve bunlara erişim dosya sistemi izinleriyle kontrol edilebilir." Bu, aynı dosya sistemine erişimi olan iki sunucunun bir soket üzerinden iletişim kurabileceği anlamına mı geliyor?
user5359531

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.