Birisi bana soketin ne olduğunu açıklayabilir mi? SSL bağlamında birçok kısaltmada görüyorum.
Ayrıca, neden soket denir? Tamamen mi çünkü icat ettikleri bir isimdi? Yoksa ilk buldukları isim miydi?
Birisi bana soketin ne olduğunu açıklayabilir mi? SSL bağlamında birçok kısaltmada görüyorum.
Ayrıca, neden soket denir? Tamamen mi çünkü icat ettikleri bir isimdi? Yoksa ilk buldukları isim miydi?
Yanıtlar:
Bir soket iletişim için sadece mantıklı bir son noktadır. Taşıma katında varlar. Bir soketteki şeyleri gönderip alabilir, bir soketi bağlayabilir ve dinleyebilirsiniz. Bir soket bir protokole, makineye ve porta özgüdür ve paketin başlığında olduğu gibi ele alınır.
Beej'in Ağ Programlama ve İşlemler Arası İletişim kılavuzları hem soketlerin nasıl kullanılacağı hakkında iyi bilgiye sahiptir, hatta bu soruyu tam olarak cevaplamaktadır .
En basit ifadeyle, bir soket ağ bağlantısını temsil eden sahte bir dosyadır. Bir soket oluşturulduktan sonra (uygun ilkellerin ve diğer ana bilgisayarı tanımlamak için uygun parametrelerin kullanılmasıyla) sokete yazar, gönderilen ağ paketlerine dönüştürülür ve ağdan alınan veriler soketten okunabilir.
Bir açıdan soketler borulara çok benziyor: tıpkı bunları kullanan programlardaki dosyalara benziyor, ancak okumaya ya da diske yazmaya neden olmuyor; bunun yerine, başka bir programla iletişim kurmaya izin veriyorlar (borular durumunda yerel ve soketler durumunda muhtemelen uzak). Ayrıca, bahsettiğiniz gibi, iki yönlü iletişim de sunar (bir çift doğru şekilde bağlanmış boru gibi).
Son olarak, tek bir makinedeki programların TCP gibi standart ağ protokollerini kullanarak iletişim kurması yaygındır; Ağ donanımına (eğer varsa!), bilgisayar sağlama toplamı vb. yollara gitmek, sadece aynı ana bilgisayara geri dönmek için zararsız olacaktır: işte Unix alan ad soketlerinin girdiği yer. Bunlar normal soketler gibi. Uzaktaki işlemler yerine aynı ana bilgisayardaki işlemleri bağlarlar ve hiçbir ağ kaynağını kullanmaya çalışmazlar. Bu şekilde, süreçler arası bir iletişim aracıdırlar.
Üçlüden bahsedildiği gibi, BSD'nin tarihi boyunca borular soketlerden daha önce tanıtılmış ve bir kez vardıklarında soketler kullanılarak yeniden uygulanmıştır. Aynı referans, FreeBSD İşletim Sisteminin Tasarımı ve Uygulaması, boruların daha sonra performans nedenleriyle soketsiz bir uygulamaya döndürüldüğünden bahseder: bu kesinlikle boruların benzerlikleri paylaştığı gerçeğinin altını çizer.
Bir soket soyutlama. Uygulamaların, bir sistem kaynağını (bu durumda ağ bağlantısı), işletim sisteminin herhangi bir sayıda uygulama tarafından sınırlı bir kaynağın kullanımına aracılık etmesini ve düzenlemesini sağlayacak şekilde kullanmalarını sağlayan bir arayüz sağlar.
Soket üzerinden gönderilen veriler posta zarfları olarak düşünülebilirse, soket posta kutunuz olur. Evinize (program) bir posta kutusu (soket) ekleyin ve giden postanızı (verilerinizi) içine yerleştirin. Belirli bir zamanda postacı (işletim sistemi) gelir ve giden postanızı alır ve gelen postaları aynı posta kutusuna bırakır. Giden postanız, sizin tarafınızdan postanenin kamyonu (ağ bağlantısı) aracılığıyla tüm komşularınızın postasıyla birlikte alıcıya iletilir. Bu, mektubu kendiniz teslim etme masrafına, zamana, zorluğa, vs. ihtiyaç duymadan uzaktaki insanlarla iletişim kurmanıza olanak sağlar.
Neden 'soket' olarak adlandırıldıklarına gelince, mucitlerin istediklerini istedikleri gibi çağırmaları fikri büyük olasılıkla orada büyük bir rol oynar. Yine de bence kötü bir isim değil :)
Bir soket veya "soket" birkaç şey olabilir:
Her şeyden önce, bir düşünce modeli ve bir uygulama programlama arayüzüdür (API) . Bu, tam olarak belirlenmiş bir sözleşmeye göre izlemeniz gereken bir dizi kural ve bir şeyler yapan programlar yazmak için kullanabileceğiniz bir dizi fonksiyona sahip olduğunuz anlamına gelir. Bu özel durumda, bir şey başka bir programla veri alışverişi demektir.
Prizler API genel olarak "iletişim" in detaylarını geniş ölçüde özetler. Kiminle konuştuğunu ve nasıl, hepsi bir (neredeyse) tutarlı ve aynı çerez kesici formunu içine alır.
Farklı "etki alanlarında" (örneğin "unix soketi" veya "internet soketi" gibi) ve farklı iletişim türlerinde (örneğin "datagram" soketi veya "akış" soketi) soketler oluşturabilir ve farklı alıcılarla konuşabilirsiniz. ve her şey tam olarak aynı şekilde çalışıyor (% 99, açık bir şekilde hesaba katmanız gereken küçük farklar var).
Aynı bilgisayardaki veya farklı bir bilgisayardaki başka bir programla konuşup konuşmadığınızı veya bu bilgisayarlar arasında IPv4 veya IPv6 ağı olup olmadığını veya belki başkalarını bilmeniz gerekmez (ve bilmek bile istemezsiniz!). Hiç duymadığınız protokol.
socket
aynı zamanda özel bir dosya türüdür (Unix'deki her şey bir dosyadır) "soket " i oluşturan kütüphane işlevinin (veya sistem çağrısı) adıdır .
soketler borular ve isim boruları ile aynı kategoriye girer
Bir boru, aynı bilgisayardaki bir okuyucu ve bir yazar (her ikisi de program olan) arasında tek yönlü iletişim aracıdır . Bir veri akışını simüle eder (tıpkı TCP gibi).
Başka bir deyişle, boru açısından bireysel "mesajlar" veya "veri blokları" mevcut değildir. Herhangi bir miktarda veriyi "bir uca" kopyalayabilirsiniz ve bir başkası, "diğer ucunda" istediğiniz bayt sırasındaki herhangi bir miktarda veriyi (mutlaka aynı ve mutlaka bir seferde değil) okuyabilir onu itti.
Bir adlandırılmış boru, iyi, sadece bir boru olan dosya sisteminde bir isim sahibi olan . Yani, bir dosya gibi görünen ve davranan bir şey, dizin listesinde görünür ve açabilir, yazabilir, vb. Yapabilirsiniz. Ayrıca, özel dosyalar da oluşturabileceğinizi unutmayın (bu, adlandırılmış bir soket olur) .
Bir soket, diğer taraftan, aynı yoldan yazabileceğiniz ve okuyabileceğiniz ve iki yönlü bir iletişim için iki ayrı sokete ihtiyaç duymayacağınız anlamına gelen, iki yönlü ("çift yönlü") bir iletişim aracıdır.
Ayrıca, bir soket bir akış gibi davranabilir (bir boruya özdeş) veya ayrık, güvenilmez mesajlar gönderebilir veya ayrık, sıralı mesajlar gönderebilir (herhangi bir etki alanında ilk iki çalışma, yalnızca "unix etki alanında" ). Tamamen farklı bir bilgisayardaki birine mesaj gönderebilir (veya bir akışı simüle edebilir). Bir soket, bazı koşullar altında bire çok iletişim (çok noktaya yayın) bile yapabilir.
Bunu akılda tutarak, soketlerin çok daha karmaşık bir şey yaptıkları ve genellikle borulardan daha fazla ek yüke sahip oldukları (temelde memcpy
bir tampondan basit ve bir tampondan daha fazla değildir !) Olduğu, ancak yerel prizler oluşturduğunuzda (yani aynı şekilde) olduğu açıktır. bilgisayar), işletim sistemi genellikle yoğun olarak optimize edilmiş hızlı bir yol uygular, bu yüzden gerçekten bir fark yoktur.
Ağlar açısından bazen belirtilen süreçler arası iletişim
Evet, soketler süreçler arası iletişimin olası bir yoludur (paylaşılan bellek ve borular alternatiflerin örnekleridir). Hepsi aynı anda yukarıda açıklandığı gibi "ağ oluşturma" için kullanılıyorlar.
IP üzerinden udp veya tcp için,
Bir soket adresi, bir IP adresinin ve bir port numarasının birleşimidir.
Bir IP adresi internetteki bir makinenin adresidir, örn. unix.stackexchange.com has address 198.252.206.140
Bununla birlikte, her makine birden fazla hizmet sunabilmelidir, bu nedenle çoğu makine 80 numaralı bağlantı noktasında http, 22 numaralı bağlantı noktasında ssh vb. Sağlar.
Yani unix.stackexchange.com:80
liman 80
arasında unix.stackexchange.com
(bir soket) Bu web sitesinin erişim noktasıdır.
Ancak başka tip soketler de vardır, aşağıdaki yorumlara bakınız.
AF_INET
) soketleri temsil ettiği için yanıltıcı .
Ağ kurma hakkında sorduğunuza inanıyorum. Bu nedenle, TCP hizmetleri iletişim noktası olarak soketleri kullanır ve bir IP adresi, protokol ve port numarasından oluşur.