Popüler TCP kullanan servisler neden UDP'ye ve / etc / services'daki TCP girişlerine sahip?


22

Go ile ağ programlaması üzerine bir kitap okuyorum. Bölümlerden biri / etc / services dosyasıyla ilgilidir. Bu dosyayı araştırırken fark ettiğim bir şey de, her ikisi de taşıma katmanında TCP kullanan HTTP ve SSH gibi belirli popüler girişlerin UDP için ikinci bir girişi olması. Örneğin, Ubuntu 14.04’de:

ubuntu@vm1:~$ grep ssh /etc/services  
ssh             22/tcp         # SSH Remote Login Protocol 
ssh             22/udp

ubuntu@vm1:~$ grep http /etc/services  
http            80/tcp          www             # WorldWideWeb HTTP            
http            80/udp                          # HyperText Transfer Protocol

Bunların neden iki girişi olduğunu bilen var mı? SSH ya da HTTP'nin UDP kullandığını sanmıyorum ( bu soru SSH için onaylandı ).


7
22/udp2016'da Debian'da kaldırıldı. IANA hala 22 / udp'ı listeliyor ve yalnızca ikisinden birinde uygulanan çoğu protokol için hem udp hem de tcp'yi listeliyor. Birinin udp'a ssh uygulamak istediği durumlarda 22'nin ssh için ayrılmış olduğu anlamına gelebilir mi?
Stéphane Chazelas

2
Ayrıca bkz. Bölüm 7.1 rfc6335
Stéphane Chazelas

Yanıtlar:


29

Bağlantı noktası numaraları kadar yaklaşık 2011. Bkz, örneğin, içinden atanan başlandı zaman bu şekilde arkadan gelenek olduğu için Temelde, bu §7.1 “Geçmiş İlkeleri” arasında RFC 6335 :

Talep edildiğinde TCP ve UDP portları eşzamanlı olarak atandı

Tabii ki, bir gün tahsis edilmeleri de mümkündür, tabii ki, 1023 ve altındaki portlar, çoğu işletim sistemi tarafından özel olarak ele alınan ve bu aralığın çoğu şu anda atanmış olan "sistem portları" dır.

Ve bu arada, HTTP / 3 UDP üzerinden geçiyor. Her ne kadar sadece 80/443 de olsa herhangi bir UDP portunu kullanabiliyor. Yani gerçekten bunlar hala kullanılmıyor.

Bildiğim kadarıyla Debian ile ilgili olarak, onun /etc/serviceszaten vardı 22 / UDP 1,0 (buzz 1996) .

Bununla birlikte , 2016 yılında bunetbase pakette kaldırıldı , ilk olarak paketin 5.4 versiyonunda yayınlandı .

Yazımdan itibaren Debian'ın (buster) en son kararlı sürümü 5.6 . Ve en son Ubuntu LTS (18.04, biyonik) netbase paketi Debian netbase 5.4'e dayanmaktadır ve değişiklik gösterdiğini görebilirsiniz .


4
@SergiyKolodyazhnyy Ben düşünemem, çünkü bu uygulamada güvenlik duvarları var.
derobert

3
@TobySpeight Bu sadece Linux değil, ilgili standartların bir parçası. Örneğin, bu RFC'nin §6'sına bakınız. IANA ayrıca daha yüksek portları kaydettirse de, farklı bir sınıflandırma yapıyorlar (ve sadece Linux'lar değil, işletim sistemlerinin kendilerine nasıl davrandığı nedeniyle pratikte önemli). Bunu biraz netleştireceğim. Ayrıca, 0 geçerli bir bağlantı noktası değil. Soketler API tarafından bir joker karakter olarak kullanılır (çekirdeğe sizin için bir bağlantı noktası seçmesini söylemek için).
derobert

2
"0 geçerli bir bağlantı noktası değil" sorgulanabilir. Bu kesinlikle işletim sistemimizde kullanılabilir bir bağlantı noktası değil (bu yüzden onu özel olarak çağırdım ve neden şu anda ayrılmış ve hiçbir şeye atanma ihtimalim yok), ancak protokol düzeyinde özel değil.
Toby Speight

1
@ robert: Argümanınız Unix makinelerinde 0 numaralı portun kullanılamayacağıdır çünkü port 0 "boş port seç" anlamına gelir. Argümanın yanlış olduğunu söylüyorum. Sonuç, mantıklı bir şekilde öncül izlememektedir.
MSalters

3
Herhangi bir UDP bağlantı noktasını kullanabilse de, yalnızca 80/443 değil, TCP / UDP protokolü protokolleri için de geçerlidir, bunlar yalnızca her biriyle ilişkilendirilmiş varsayılan bağlantı noktalarıdır. TCP ve UDP kullanan uygulamaların çoğu, varsayılan olmayan bağlantı noktaları belirtmenin bir yolunu sağlamaz, ancak HTTP, URL’lerde belirtilmesine izin verir, bu nedenle bağlantı noktasını değiştirmek daha uygun olur.
Barmar
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.