Gerçekten bağlantı noktaları ve protokoller nelerdir?


11

İnsanların bağlantı noktaları ve protokoller hakkında konuştuğunu duyuyorum (bilgisayar ağıyla ilgili olarak) ve genellikle onlar için analojiler sağlıyorlar (örneğin: "bir bağlantı noktası bir nakliye limanı gibidir, bir nakliye limanı mal gönderip alır gibi veri gönderir ve alır diğer bağlantı noktalarından ") ve bunun gibi şeylerden

Tüm bunların ne anlama geldiğini anlıyorum, ama sadece çok yapay bir seviyede. Temel olarak, bir portun ne olduğunu biliyorum ve hangi protokollerin ne olduğunu anlıyorum, ama bunlar gerçekten ne?

Bu bağlantı noktaları fiziksel nesneler mi? Bunlar bilgisayarımın bir parçası mı? Kaç tane bağlantı noktası var? Bağlantı noktası sayısını artırabilir veya azaltabilir miyim? Fiziksel bir şey bile mi? Veya kodla mı yazılmış? Bu kod nerede? İsletim sistemi? Bir liman gerçekte nedir?

Protokoller nelerdir? Bir tür kod olduklarını düşünürdüm .... Kendi protokolünüzü oluşturabilir misiniz? Belirli bir bağlantı noktasını belirli bir protokolü çalıştırmak için nasıl edinebilirsiniz? Protokol oluşturmak için hangi dili kullanıyorsunuz? Yeni bir protokolü nasıl tanımlar veya icat edersiniz?

Yanıtlar:


9

Hello71s cevabından daha çok, bir paketin içindeki bir adresin yapısını düşünerek bir portu görselleştirmek yardımcı olabilir. Bir paket, bir ağdan geçirilen bir veri birimidir. TCP, bağlantı noktaları kullanan ve genellikle IP üzerinden kullanılan bir aktarım katmanı protokolü örneğidir.

IP'nin iki adresleme bileşeni vardır - kaynak IP ve hedef IP. TCP buna bir kaynak bağlantı noktası ve bir hedef bağlantı noktası kullanarak ekler. Alıcı makinenin aynı IP adresi için hedeflenen trafiği ayırt etmesini sağlayan bağlantı noktalarıdır - yani, tek bir IP adresinde hem web isteklerini hem de e-postayı alan bir sunucunuz varsa, hangi uygulamanın verileri alması gerektiğini belirlemeniz gerekir - e-posta hizmeti veya web hizmeti. Bu nedenle, tek bir kullanıcı aynı sunucuya bir web isteği ve e-posta isteği gerçekleştirirse şöyle görünebilir:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

Web hizmeti 80 numaralı bağlantı noktasına ve e-posta hizmeti 25 numaralı bağlantı noktasına sahiptir - trafiğin doğru yerde bitmesini sağlayan ilgili bağlantı noktalarını "dinlerler".

Kaynak port "geçici" dir - yani paket gönderildiği anda yapılır. Ancak, yine de faydalı bir amaca hizmet etmektedir. Bağlantının her iki ucunun ayrı konuşmaları takip etmesini sağlar. Kullanıcımızın aynı anda iki web isteği gönderip göndermediğini düşünün:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

Bu, web servisinin bunların ayrı istekler olduğunu bilmesini sağlar, ancak web sunucusundan gelen dönüş trafiği - web sayfaları - ilgili kaynak bağlantı noktalarına geri gönderilir ve bu da tarayıcının sunucunun hangi isteğe yanıt verdiğini bilmesini sağlar.

Tüm bunların TCP / IP perspektifinden port numaralarına atıfta bulunduğunu, bu portlar arasında taşınan gerçek verilerin herhangi bir şey olabileceğini unutmayın. Uygulamalarla ilgilenmez veya herhangi bir farkındalığa sahip değildir, bu nedenle 25 numaralı bağlantı noktasında web trafiği ve 80 numaralı bağlantı noktasında e-postanız olsaydı, akıllıca olmazdı.

Verilerin doğru yapı olduğundan emin olmak, gönderen ve alan uygulamaya bağlıdır ve bu, uygulama protokollerinin devreye girdiği yerdir. HTTP, web tarayıcılarının web sunucularıyla iletişim kurmak için kullandığı bir uygulama protokolü örneğidir. Tarayıcının herhangi bir web sunucusuna istek göndermesini ve web sunucusunun anlamlı bir şekilde anlamasını ve yanıt vermesini sağlayan iyi tanımlanmış bir protokoldür. Ancak tanımında içermediği şey, paketlerin A'dan B'ye nasıl ulaştığı hakkında - önceki katmanların sorumluluğu - ulaşım, internet ve bağlantı katmanları - hakkında her şeydir.


Teşekkür ederim! Bu sadece aradığım cevaptı, yardım için teşekkürler!
Bob

3

Hm. Başlamak için en iyi yerin TCP / IP modeli olan IP Suite'e bakmak olacağını düşünürdüm. (Basitlik amacıyla OSI modelinin diğer katmanlarını yok saymak.)

Temel olarak, bir dizi katman:

Uygulama Katmanı - HTTP, FTP, POP, SSH, vb.
Aktarım Katmanı - TCP, UDP, vb.
Internet Katmanı - IP, ICMP, vb.
Bağlantı Katmanı - Ethernet vb.

Bağlantı noktaları çoğunlukla taşıma katmanında uygulanır (katman 4 - Evet, numaralandırma doğrudur.)

İşletim sistemlerinde uygulanan TCP ve / veya UDP yığınlarının çoğu, programlara bağlantı noktaları atamak ve paketler ağ üzerinden geldikçe bu programlardaki olayları yükseltmek için temel bir sistem kullanır. Ancak, herhangi bir uygulama teorik olarak işe yarayabilir; hatta akademide düşünülen varsayımsal alternatif yığınlarla bile olabilir.

TCP, herhangi bir programın istedikleri şeyi yapmak için kullanabileceği toplam 65535 bağlantı noktasına sahip olarak tanımlanmıştır (birçok işletim sistemi 1024'ten küçük bağlantı noktalarının kullanımını sınırlandırır ve onlara özel bir özel durum verir). Bazı sınırlı listeler olmasına rağmen, kimin hangi portu ve hangi portun hangi programı çalıştırdığını tanımlamak için gerçek bir standart yoktur. Bu nedenle bir liman, bir programın farklı uygulamalarının iletişim kurmaya karar verdiği az çok rastgele bir sayıdır. Tabii ki, bu tür programların tasarımcıları diğer popüler programların zaten seçtiği portlardan kaçınmaya çalışırlar.

TCP kullanarak çalıştırmanın hiçbir şekilde gerekli olmadığı kabul edildi. Bazı protokoller, esas olarak verimlilik amacıyla veya bu protokoller TCP veya IP bile bulunmadan önce icat edildiğinden, çıplak internet katmanında veya hatta çıplak bağlantı katmanında çalışır. Tabii ki, bunu yaparken, işletim sistemi ağ kütüphanelerinin basitliğini ve kapsamlı hata denetimini değiştirirsiniz.

Daha fazla ayrıntı için OSI modeli, TCP ve IP'deki Wikipedia sayfalarını kontrol edin.


Hepsini anlıyorum. Temel olarak, bir liman fiziksel bir şey değil mi? Programlanmış bir şey mi? Bağlantı noktası bir bilgisayarda nerede tanımlanır? Ve sonra protokoller için bunlar nasıl oluşturulur? Bunlar programlandı mı?
Bob

Hayır, bir bağlantı noktası bu bağlamda fiziksel bir şey değildir (açıkçası bir USB bağlantı noktası fizikseldir ancak bu konuyla ilgili değildir). Protokoller RFC'ler aracılığıyla tanımlanır ( en.wikipedia.org/wiki/Request_for_Comments ) ve programlanan kodda uygulanır.
Paul

TCP'nin IP'den gelen verileri depolamak (veya IP tarafından alınacak verileri depolamak) için bellek ayıran ve bu belleğin 'bağlantı noktalarına' ayrıldığı bir sistem işlemi olduğunu söylemek doğru olur mu? HTTP gibi diğer uygulamaların (süreçlerin) TCP'ye belirli bağlantı noktalarını (80 ve 443) ayırmak istediklerini bildirebilir. Sonra TCP'nin işi haline gelir 1. HTTP'nin bu bellek adreslerine veri giden veri eklemesine izin vermek ve 2. bu bellek adreslerine gelen veriler eklendiğinde HTTP'yi bilgilendirmek?
Zach Smith

Belki Bob protokol portları ve fiziksel anahtar portları arasında kafa karıştırıyordu. Protokol bağlantı noktası kısmı, herhangi bir kaynak eksik olmasına rağmen, birkaç kişi tarafından iyi cevaplandı. Fiziksel portlara gelince, bunlar kabloların bağlandığı ve ağ veri aktarımına izin veren giriş ve çıkış yerleridir. Bu elektronik devreleri, fiber optik alıcıları, lazerleri ve tamponları içerebilir. L. Peterson 4. baskı.
nassim

3

Bu soru zaten yanıtlanmış olarak işaretlenmiş olmasına rağmen, OP'de sorulan bazı ek soruları ele almak istedim.

Bu bağlantı noktaları fiziksel nesneler mi?

Hiçbir bağlantı noktası fiziksel nesne değildir.

Bağlantı noktası numarası 16 bit işaretsiz bir tamsayıdır, yani kullanım için kullanılabilir bağlantı noktası aralığı 1 ila 65535 arasındadır (bağlantı noktası numarası 0 ayrılmıştır ve kullanılamaz). Bir işlem, giriş veya çıkış kanallarını bir tür dosya tanımlayıcı olan Internet soketleri aracılığıyla bir aktarım protokolü, bir bağlantı noktası numarası ve bir IP adresi ile ilişkilendirir. Bu işlem bağlama olarak bilinir ve ağ üzerinden veri gönderilmesini ve alınmasını sağlar.

Bunlar bilgisayarımın bir parçası mı? Fiziksel bir şey bile mi? Veya kodla mı yazılmış? Bu kod nerede? İsletim sistemi? Bir liman gerçekte nedir?

İşletim sisteminin ağ yazılımı, tüm uygulama bağlantı noktalarından giden verileri ağa iletmek ve paketin IP adresini ve bağlantı noktası numarasını eşleştirerek gelen ağ paketlerini bir işleme iletmekle görevlidir.

Aynı taşıma protokolünü kullanarak yalnızca bir işlem belirli bir IP adresine ve bağlantı noktası birleşimine bağlanabilir. Bazen bağlantı noktası çakışmaları olarak adlandırılan yaygın uygulama hataları, birden çok program aynı protokolü kullanarak aynı IP adresindeki aynı bağlantı noktası numaralarına bağlanmaya çalıştığında ortaya çıkar.

Yukarıdaki paragraf, ağlarda bağlantı noktalarının / protokollerin neden kullanıldığını anlamanın anahtarıdır. Anlaşılan bir apon port numarası üzerinden veri ileten protokolü belirtmek için bir yolumuz olmasaydı, bilgisayarınızda aynı anda 1'den fazla şey yapamazsınız (e-postanızı kontrol edin ve web'i kullanın). e-posta istemcinizin verileri ile taradığınız web sitesinin verileri arasında ayrım yapmanın bir yolu yoktur.

Kaç tane bağlantı noktası var?

Bağlantı noktası numaraları üç aralığa göre çeşitli şekillerde atanır:

  1. Tanınmış / Sistem Bağlantı Noktaları (0-1023) - Bu bağlantı noktası aralığı, yaygın olarak kullanılan ağ hizmeti türleri (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22) sağlayan sistem işlemleri tarafından kullanılır.

  2. Kayıtlı / Kullanıcı Portları (1024-49151) - 1024 ila 49151 arasındaki port numaralarının aralığı kayıtlı portlardır. Talep eden bir tüzel kişi tarafından başvuru üzerine IANA tarafından özel hizmet için atanırlar. (Webmin / 10000, HTTP Proxy / 8080, Uzak Masaüstü Protokolü / 3389 vb.)

  3. Geçici / Dinamik / özel bağlantı noktaları (49152-65535) - aralık 49152-65535 dinamik veya özel bağlantı noktaları içeriyor olamaz IANA'da kayıtlı olması. Bu aralık özel veya geçici amaçlar ve geçici bağlantı noktalarının otomatik olarak atanması için kullanılır.

Bağlantı noktası sayısını artırabilir veya azaltabilir miyim?

Kullanılabilir bağlantı noktalarının sayısını artırabilme konusunda, ağın çalışmasına izin veren matematik (ikili) nedeniyle 65535'in üzerinde bir bağlantı noktası atayamazsınız - bu nedenle bu sorunun cevabı hayır, toplam kullanılabilir sayısını artıramazsınız. 65535 üzerindeki bağlantı noktaları.

Protokoller nelerdir?

Bilgisayar bilimlerinde, bir iletişim protokolü bilgisayarlar içinde veya arasında mesaj alışverişi için dijital kurallar sistemidir. Mesajlar bir bilgisayar ağı üzerinden değiş tokuş edildiğinde, kurallar sistemine ağ protokolü denir. Protokol temel olarak iki ağa bağlı cihazın iletişim kurabileceği bir dizi talimat / komut / çağrı üzerine kararlaştırılır. Protokoller ve web sunucuları üzerinde anlaşmaya varmadığımızı düşünün, tarayıcının ne yapacağını bilmediği web tarayıcılarına rastgele rastgele veri gönderdik mi? Neyse ki, HTTP'ye sahibiz ve oluşturulan her web tarayıcısı da aynı dili (HTTP) konuşan herhangi bir web sunucusuyla iletişim kurabilmesi için yazılıma dahil edilmiştir.

Bir tür kod olduklarını düşünürdüm .... Kendi protokolünüzü oluşturabilir misiniz? Protokol oluşturmak için hangi dili kullanıyorsunuz?

Evet, kendi protokollerinizi oluşturabilirsiniz. Protokoller çok çeşitli dillerde yazılmıştır. Yazılım geliştiricisi değilim, ancak kullandığınız dilin TCP / IP üzerinden iletişim kurabilen yazılım yazmanıza izin veren kütüphanelere sahip olduğundan eminim (diğer protokol paketleri vardır, ancak en çok TCP / IP'dir) yaygın olarak kullanılır) bir protokol yazmak için bu dili kullanabilirsiniz. Programlama dili 'C' protokol yazmak için en yaygın kullanılan dil gibi görünmektedir. Bunun nedeni ilk ağ protokollerinin birçoğunun 1970'lerde UNIX üzerinde geliştirilmesidir ve C, UNIX'in kendisinin yazıldığı dil olur.

Belirli bir bağlantı noktasını belirli bir protokolü çalıştırmak için nasıl edinebilirsiniz?

Bu işletim sistemleri arasında oldukça farklıdır. Örneğin, Windows'ta Uzak Masaüstü Protokolü'nün çalıştığı bağlantı noktası numarasını değiştirmek için kayıt defterini düzenlemeniz gerekir. Linux'ta, ağ hizmetlerinin çoğu, belirli bir ağ hizmeti için doğrudan bir .conf dosyasından yapılandırılabilir.

Yeni bir protokolü nasıl tanımlar veya icat edersiniz?

Yakın zamanda yeni bir ağ protokolü geliştiren birinin ve ne tür şeyler yapması gerektiğini blog yazısı için https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ adresine bakın. yol boyunca.

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.