TCP ve UDP soketleri aynı bağlantı noktasını kullanabilir mi?


104

Her şeyden önce, aynı sunucuda hem UDP hem de TCP kullanmada herhangi bir sorun var mı?

İkinci olarak, aynı bağlantı noktası numarasını kullanabilir miyim?

Yanıtlar:


111

Evet, hem TCP hem de UDP için aynı bağlantı noktası numarasını kullanabilirsiniz. Birçok protokol bunu zaten yapıyor, örneğin DNS udp / 53 ve tcp / 53 üzerinde çalışıyor.

Teknik olarak, her protokol için bağlantı noktası havuzları tamamen bağımsızdır, ancak TCP veya UDP kullanabilen daha yüksek seviyeli protokoller için varsayılan olarak aynı bağlantı noktası numarasına sahip olmaları gelenekseldir .

Akılda sunucu, ayı yazarken de, normal olarak bu yana bir TCP soketi için olaylar dizisi, çok zor bir UDP yuvası daha olduğunu socketve bindçağrılar da var listenve accept.

Dahası bu acceptçağrı yeni bir soket dönecek ve bu kadar olduğunu daha sonra etkinlik alıyoruz için Ankette ayrıca gerekeceğini soket. Sunucunuz, accepther biri kendi soketlerindeki alma olaylarını tetikleyecek olan birden fazla istemciye aynı anda hizmet verirken, orijinal soket üzerinde bağlantılara devam etmeye hazır olmalıdır .


2
@Eric Fortis RFC 1700 örneklerle dolu, hepsini listelemeyelim mi? ;-)
Marquis of Lorne

2
@Eric Fortist Neden NetBIOS bağlantı noktası numaralarını 'herkes bilmeli'?
Marquis of Lorne

4
Lütfen cevabı bana verebilmeniz için bir soru olarak gönderin
Eric Fortis

6
Bu cevabın açıklamadığı bir şey: 'bağlantı noktası' semantik, taşıma seviyesinin (OSI model seviyesi 4) her bir protokole özgüdür (ancak bazıları bu semantiklere sahip olmayabilir). Dolayısıyla, TCP'nin kendi portları vardır ve bunlar TCP yığını tarafından yorumlanır; UDP'nin, UDP yığını tarafından yorumlanan kendi portları vardır. Yani bağlantı noktaları UDP ve TCP arasında paylaşılmaz; her iki protokolün de aynı "port" tanımına sahip olması ve basitleştirmek için, aynı hizmete farklı tiplerdeki çoklu bağlantılar için aynı port değerini kullanmamız olur.
moala

2
@EricFortis Çünkü böyle bir soru, benim veya başka herhangi birinin ilgisini çekmeyecektir, onu ilginç bulmanız için nedenleriniz gibi ve tam olarak tartıştığımız amaç için burada olan bir RFC'ye atıfta bulunma itirazlarınız da aynı şekilde.
Marquis of Lorne

8

İlk olarak, sunucuda hem tcp hem de udp kullanımında herhangi bir sorun yoktur.

İkinci olarak, aynı bağlantı noktasında hem UDP hem de TCP isteklerine sahip olabiliriz, çünkü her istek kaynak IP, Hedef IP, Kaynak Bağlantı Noktası, Hedef Bağlantı Noktası, PROTOCOL (protokol TCP veya UDP olabilir) tarafından içerilen beş katıyla tanımlanır.


3
Belirtme sebebiniz sık sık verilir ama gerçekten anlamsızdır. UDP bağlantısı diye bir şey yoktur ve ilişkili protokolden bağımsız olarak bağlantıların dikkate alındığı bağlam yoktur. Gerçek şu ki, bağlantı noktaları TCP ve UDP'nin ayrı ayrı artefaktlarıdır ve bu nedenle bunların karıştırılma olasılığı yoktur.
Marquis of Lorne

Benim hatamı işaret ettiğiniz için teşekkür ederim, UDP kullanan bir bağlantı olmadığı doğru.
aMooly
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.