SORU
30 EYLÜL 2008, Salı


Bir liman ve bir soket arasındaki fark nedir?

Bu bir soru organizasyonumuzda yazılım mühendislerinden biri tarafından büyütüldü. Geniş tanımı ile ilgileniyorum.

CEVAP
30 EYLÜL 2008, Salı


Özet

Bir TCP soket bir son noktaörnekbir IP adresi ya da belirli bir TCP bağlantı veya dinleme devlet bağlamında bir bağlantı noktası tarafından tanımlanan.

Bir port sanallaştırma bir tanımlayıcısıdırhizmet bitiş noktası (bir hizmet . ayrı olarak tanımlanması ^em>örnektanımlayıcı bitiş noktası aka oturum).

TCP bir yuvadeğilbir bağlantıbelirli bir bağlantı noktası.

Hizmet bitiş noktası için eşzamanlı bağlantı olabilirbağlantı ile tanımlanır . çünkü bir ^em>hem yerel hem de uzakuç, trafik belirli bir hizmet örneği yönlendirilmesini sağlar.

Sadece bağlantı noktası bileşimi/belirli bir adres için bir dinleyici yuva olabilir.

Fuar

Bu yeniden incelemek içini dışını biliyordum düşündüm bir kaç şey için beni zorladı bu ilginç bir soru oldu. "Yuva belli ki içine bir ağ kablosu, orada güçlü fonksiyonel paralellikler olmak tak uç görüntüleri uyandırmak için seçildi." kendi kendini açıklayıcı olurdu: gibi bir isim düşünmek istiyorum Bununla birlikte, ağ dilinde "yuva" yeniden inceleme dikkatli gerekli olduğunu çok fazla yük taşıyor. kelime

Mümkün olan en geniş anlamda, bir limana giriş ya da çıkış noktasıdır. Ağ bir bağlamda kullanılan olmasa da, Fransızca bir kelimeportekelimenin tam anlamıyla anlamına gelirkapı veya ağ geçididaha fazla port veri veya büyük çelik konteyner gemisi olup, ulaşım bitiş noktası olduğu gerçeğini vurguladı.

Bu tartışma amacıyla, IP ağları TCP kapsamında değerlendirilmek sınırı olacaktır. OSI modeli çok güzel ama hiç yüksek trafik yüksek stres koşullarında tamamen uygulanmış, çok daha az yaygın olarak uygulanmıştır.

Bir IP adresi ve bir port kombinasyonu kesinlikle bir son nokta olarak bilinir ve bazen bir yuva denir. Bu kullanım RFC793, orijinal TCP belirtimi ile kaynaklanır.

BİR TCPbağlantıiki bitiş noktası tarafından tanımlanan akayuva.

(Yuva) bir bitiş noktası bir ağ adresi ve bir kombinasyonu ile tanımlanırporttanımlayıcı. Adres/port does notdeğiltamamen bir yuva (daha fazlası daha sonra) tanımlamak.

Port amacı, belirli bir ağ adresi üzerinde birden fazla uç noktaları ayırt etmek için. Bir bağlantı noktasına sanal bir bitiş noktası olduğunu söyleyebiliriz. Bu sanallaştırma tek bir ağ arayüzü üzerinde birden fazla eş zamanlı bağlantı sağlar.

Yuva çifti (4-demet olur istemci oluşan IP adresi, istemci port numarası, sunucunun IP adresi ve sunucu bağlantı noktası numarası) belirtir iki benzersiz bir bitiş noktası her bir TCP bağlantısı tanımlar internet. (TCP-IP Cilt 1 ResimliW. Richard Stevens)

En C-elde edilen lanaguages, TCP bağlantılarını ve Socket sınıfının bir örneği üzerinde yöntemler kullanılarak kurulan ve işletilen. Ortak soyutlama düzeyi yüksek, NetworkStream sınıfının bir örneği genellikle ameliyat olsa da, bu genellikle bir socket nesnesine bir referans gösterir. Bu kodlayıcı için bu soket nesnesinin bağlantı ve soket nesnesinin yöntemleri kullanılarak oluşturulan manipüle çünkü bağlantıyı temsil ediyor.

Bir TCP bağlantısı (mevcut bir dinleyici için) kurmak için C#, Bir ilk oluşturunTcpClient. Bu bir bitiş noktası belirtinTcpClientkurucu varsayılanları kullanır - bir yol ya da yerel bir bitiş noktası tanımlanır. Sonra çağırırBağlayın oluşturduğunuz örnek yöntemi. Bu yöntem bir parametre diğer bir uç açıklayan gerektirir.

Tüm bu saçmalık biraz kafa karıştırıcı ve bir soket bağlantısı olduğuna inanıyoruz yol açar. Richard Dorman soru sorana kadar bu yanılgısı içinde emekçi oldum.

Okuma ve düşünme bir sürü yapmak, şimdi çok daha mantıklı bir sınıf var olacağından eminimTcpConnectioniki argüman alır bir kurucu ileLocalEndpointveRemoteEndpoint. Muhtemelen tek bir argüman destek olabilirRemoteEndpointVarsayılan yerel bitiş noktası için kabul edilebilir olduğunda. Bu birden çok ana bilgisayarlı bilgisayarlarda belirsiz, ama belirsizlik uzak bitiş noktasına en kısa yolu arabirimi seçerek yönlendirme tablosunu kullanarak çözülebilir.

Netlik diğer açılardan da gelişmiş olurdu. Bir yuvadeğilIP adresi ve bağlantı noktası birleşimi ile tanımlanır:

[...]TCP kesimleri gelen yerli ve yabancı adreslerini oluşturan dört değerleri kullanarak demultiplexes: hedef adresi, hedef port numarası, kaynak IP adresi ve kaynak port numarası IP. Hangi işlem belirleyemiyor TCP hedef bağlantı noktası sadece bakarak gelen bir kesimini alır. Ayrıca, gelen bağlantı isteklerini alacak [çeşitli] bitiş [belirli bir bağlantı noktası numarası] tek bir devlet dinleyin. (p255,TCP-IP Cilt 1 ResimliW. Richard Stevens)

Gördüğünüz gibi, değil sadece mümkün ama büyük olasılıkla bir ağ hizmet için çok sayıda yuva ile aynı Adres/port, ama sadece bir dinleyici Soket üzerinde belirli bir adres/port kombinasyonu. TCP bağlantısı için bir proxy olarak bir socket nesnesi kullanın böyleceçokyanıltıcı.

Referanslar

  1. TCP-IP Cilt 1 Protokoller GösterilmiştirW. Richard Stevens, 1994 Addison Wesley

  2. RFC793Bilgi Bilimler Enstitüsü, Güney Kaliforniya Üniversitesi DARPA

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • FUzzyBUnnyBOoties

    FUzzyBUnnyBO

    3 EKİM 2007
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012