Inter-Process Communication

Cem Topkaya
2 min readOct 26, 2020

--

IPC de pipes : https://docs.microsoft.com/en-us/windows/desktop/ipc/pipes

Eğitiminin içinde inter-process iletişim anlatılıyor

Soketler terimi genellikle IP Soketleri anlamına gelir. Bunlar, bir bağlantı noktasına (ve adrese) bağlı olanlardır (ip:port), TCP isteklerini gönderiyoruz ve yanıtları alıyoruz.

Başka bir Soket türü de Unix Soketidir, bu soketler IPC (İşlemler Arası İletişim) için kullanılır. Ayrıca Unix Domain Sockets (UDS) olarak da adlandırılırlar. Unix Soketleri iletişim için yerel dosya sistemini kullanırken, IP Soketleri ağı kullanır.

İlk zamanlar uygulamalar doğrudan sistem kaynaklarına (ağ, bellek, disk vs.) erişirken gelişmiş işletim sistemleri Kernel alanı sayesinden uygulamaların doğrudan erişimini kısıtlar.

Kernel yokken
Kernelin üstü Kullanıc Alanıdır (User Space)

*nix Sistemlerde her şey dosyalar üstünden yürütüldüğü için IPC de de file descriptor üstünde yürütülür. Aşağıdaki resimde CDROM’un kapağını açmak için dosya kullanımını göreceksiniz:

Muhtemelen Docker Hub’dan konteynırları çalıştırmışsınızdır ve bazılarının /var/run/docker.sock dosyasını bağlaması gerektiğini fark ettiniz. Bu dosya nedir ve neden bazen kapsayıcılar tarafından kullanılıyor? Kısa cevap: Docker daemon’un varsayılan olarak dinlediği Unix soketidir ve bir konteynerin içinden daemon ile iletişim kurmak için kullanılabilir.

Aşağıda alınan hataya bakarak aslında /var/run/docker.sock nasıl bir ip:port gibi sokete denk geldiğini görebilirsiniz (http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version):

$ docker version
Client:
Version: 19.03.6
API version: 1.40
Go version: go1.12.17
Git commit: 369ce74a3c
Built: Wed Oct 14 19:00:27 2020
OS/Arch: linux/amd64
Experimental: false
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied

Docker daemon, Docker Engine API isteklerini üç farklı Soket türü aracılığıyla dinleyebilir: unix, tcp ve fd. Varsayılan olarak, /var/run/docker.sock adresinde bir unix etki alanı soketi (UDS veya IPC soketi) oluşturulur. Bazı canlı örnekler görelim: Docker Server, REST API’yi dinlemek için bu soketi kullanır ve istemciler, sunucuya API istekleri göndermek için soketi kullanır.

curl, --unix-soket bayrağı aracılığıyla bir Unix Soketiyle konuşabilir. Docker Server API REST olarak sunulduğundan, HTTP üzerinden komutlar göndermemiz gerekiyor. Ayrıca, bu sunucu yerel olduğundan (dosya sistemini hatırlayın), URL’deki herhangi bir ana bilgisayar adını iletebiliriz (veya yerel ana makineye tabi olabiliriz). Sunucu, ana bilgisayar adını değil, sadece yolu umursuyor.

--

--

Cem Topkaya
Cem Topkaya

Written by Cem Topkaya

Evlat, kardeş, ağabey, eş, baba, müzik sever, öğrenmek ister, paylaşmaya can atar, iyi biri olmaya çalışır, hakkı geçenlerden helallik ister vs.

No responses yet