0.0.0.0:0 ve *: * aynı şeyi mi gösteriyor?


23

TCP ve UDP için dinlenen bağlantı noktalarını görüntülemek için netstat'ı (Windows'ta) kullandım:

görüntü tanımını buraya girin

Yabancı Adres sütununda, *:*yerine UDP'nin görüntülendiğini 0.0.0.0:0, bu iki değerin de aynı şeyi temsil ettiğini fark ettim mi? Öyleyse, neden UDP *:*yerine neden görüntüleniyor 0.0.0.0:0?


*:*IPv6 iken 0.0.0.0:0IPv4 olduğuna inanıyorum .
LPChip

Aşağıdakileri de farkettim:, UDP 0.0.0.0:5355 *:*bu IPv4 ve IPv6 arasında veri gönderilebileceği anlamına mı geliyor?
user612473


4
0.0.0.0 IPv6 eşdeğeri [::]
marsh-wiggle

2
@LPChip Yanılıyorsunuz. *:*IP sürümü hakkında hiçbir şey söylemez. Ancak, bu soketin yerel adresi yalnızca IPv4 olduğundan, uzak adres de IPv4 olmalıdır.
kasperd

Yanıtlar:


12

Cevabımın yanlış olduğu belirtildi. Silemediğimden, doğru olanı vereceğim.

İfade *:*"Herhangi Bir Adres, Herhangi Bir Bağlantı Noktası" anlamına gelir. Tüm UDP dinleyicileri bu imzayı gösterecektir. Bu UDP'nin bağlantısız doğası gereğidir.


Orijinal (yanlış) cevap. Evet ve hayır. *:*HERHANGİ bir IPv6 adresini ifade eder. Bilinmeyen / belirtilmemiş bir adres arasındaki fark IPv4'te belirsizdir, bu nedenle ağdaki herhangi bir ana bilgisayarı temsil etmek için 0.0.0.0/0 kullanıyoruz, ancak IPv6'da çok küçük bir fark var.

Bununla birlikte, çoğunlukla, insanlar ::0'ların bitişik bir dizgisini temsil etmek için kullanırlar .

Bir IPv6 adresinde, bitişik sıfırların herhangi bir dizisi şu şekilde değiştirilebilir :: :

  • 0.0.0.0/0=> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000 => ::=>*:*
  • fe80:0000:0000:0000:2000:0aff:fea7:0f7c => fe80::2000:0aff:fea7:0f7c

Bununla birlikte, joker karakterlerin kullanıldığı gösterim, adres kalıplarının daha iyi kontrol edilmesine izin verir. Örneğin, ::eşleşmeyecek fe80::2000:0aff:fea7:0f7c, eşleşecek *:*.

Bu fark, rota oluşturmayan herhangi bir cihaz için anlamlı değildir, ancak toplanmış adres alanlarına en uygun rotaları seçme zamanı geldiğinde, joker karakter gösterimi, daha esnek hedef ağların seçilmesine izin verir.


5
Fakat cevabınızı yazdınız *:* refers to ANY IPv6 address ki, any..addressişte muhtemelen IPv4 veya IPv6. Peki hangisi? *:*Kendini IPv6 ile sınırlandırıyor mu , yoksa IPv4 için de izin veriyor mu?
barlop

2
Soruda belirtilen her iki soket yalnızca IPv4'tür. Bunu her bir sokete atanan yerel adresten görebilirsiniz. Bu nedenle IPv6'dan bahsetmek soru ile ilgili değildir.
kasperd

7
IPv6 bu soru ile hiç alakalı değil.
hobbs,

8
Bu cevap, sorulan soru için tamamen yanlıştır.
Brad

3
As kasperd yorumu, notları (ve Hobbs yorumuna çok) IPv6 soruya ilgisi yoktur. Soru, Dış Adres sütununda gördüğümüz, IPv4 olan Yerel Adres sütununda aynı satırdakilere karşılık gelen şeyle ilgili. (Her ne kadar bazı işletim sistemlerinde, bir adres ailesini / IP versiyonunu dinlemek tipik olarak başka bir adres ailesini otomatik dinleyebilir.)
TOOGAM

15

/IP katmanının bir parçası olduğu alt ağ maskesi, ifade eder.

:Taşıma Katmanı bir parçası olan bir bağlantı anlamına gelir.

TCP için bağlantı için uzak bir uç olduğu mantıklıdır.

UDP, bağlantısız olduğu için yabancı bir adres göstermesi bir anlam ifade etmiyor.

Benim içgüdülerim, UDP için her zaman joker karakter göstereceği ve çıktıyı biraz daha arkadaşça hale getirmenin ya da IPv4 / 6 kullanıp kullanmadığınızı gösterme potansiyeli olduğunu gösterir:

IPV4 "*:*" vs IPV6 "[::]:*"


Bunu sadece bazı arkadaşlara söylüyordum. PORTS dinleme ekranını görüntüleyebilirsiniz, ancak *:*uzak UDP olmayan oturumlar için görüntülenmesinin bir nedeni olmadığında gerçek uzak oturumları görüntülemek için görüntüleyebilirsiniz . Burada seninle aynı fikirdeyim.
NotAdmin Dave,

6

Her iki durumda da bilgiler temel olarak anlamsızdır, ancak aynı şeyi aşağı yukarı gösterir.

İlk satırınız bir TCP dinleme soketidir. Yerel adres sütunu, bağlantılarını kabul ettiği adresi ve bağlantı noktasını gösterir ve uzak adres sütunu hiçbir şey ifade etmez, çünkü bir dinleme soketinin henüz bağlantının uzak ucu yoktur. Bir bağlı TCP soket o sütundaki bağlantının diğer ucundaki adresini gösterirdi ama bir soket dinlemek için tamamen sıfır adresi ve port görüntülemek için karar verir.

İkinci hattınız bir UDP soketidir. UDP, bağlantısız bir protokoldür; yani, kimin kime bağlı olduğu, paketin mevcut bir konuşmanın parçası olup olmadığı veya verilerin maviden çıkıp çıkmadığına dair hiçbir fikri olmadan paketleri gönderip aldığı anlamına gelir. Yerel adres sütunu TCP ile aynı anlama sahiptir ve uzak adres sütunu anlamsızdır, çünkü bir UDP soketi bir eş, pek çok eş veya herhangi bir eşe sahip olamaz. (Aslında POSIX "bağlı UDP soketi" kavramına sahiptir, ancak bu biraz uzağa gitmektedir).

Şimdi soru: neden farklı görünüyorlar? Windows netstat kodunun bir tuhaflığından başka bir şey yok gibi görünüyor. Linux (net-tools) netstat 0.0.0.0:*, hem TCP dinleme soketlerinin hem de UDP soketlerinin (IPv4 için; :::*IPv6 için görüntülenir ) uzak ucunda , Windows'taki iki örnekten farklı olarak görüntülenir, ancak en azından aynı programda tutarlıdır. Belki de Windows, TCP durumunda "daha sonra doldurulacak" ile UDP durumunda "her şeye açık" arasında anlamsal bir ayrım yapmayı sürdürüyor, ancak iki kod parçası da iki kişi tarafından yazılmamış tutarlılık için özel endişe.


4. paragrafın başlangıcı için +1. 0.0.0.0 bazı dokümantasyona sahiptir: Tüm sıfırların adresi, " bilinmeyen " adres ( çoğu zaman bilinmeyen adreslere uygulanan IPv6 Adresleme RFC 4291 sec 2.5.2'ye göre ). RFC 1700 sayfa 4'te "sadece kaynak adres olarak kullanılabilir" yazıyor , ve RFC 1122 # sayfa-29 "a" bölümü daha fazla kullanımını açıklıyor. ( hakkında cevap ::: 0.0.0.0 bahseder)
TOOGAM

Yabancı Adres sütunundaki 0.0.0.0:0değer , herhangi bir IP adresinin ve bağlantı noktası numarasının bu sokete veri gönderebileceği anlamına gelmiyor mu ? ve eğer bu değer örneğin , o zaman bu sadece port numarası olan IP adresinin bu sokete veri gönderebileceğini ve kimsenin gönderemeyeceği anlamına gelir. 127.0.0.0:12345127.0.0.012345
Tom,

6

Fark sadece gösterimseldir.

Windows'taki Netstat, 0.0.0.0:0yerel bir IPv4 TCP dinleyicisi ve *:*bir UDP dinleyicisi için "herhangi bir uzak adres ve bağlantı noktası" hakkında soyut bir fikir sunmak için kullanır . IPv6 için uzak adres, [::]:0TCP ve *:*UDP için gösterilir .

OS X'te, *.*IPv4 veya IPv6 olsun, hem TCP hem de UDP için kullanılır (OS X'in adres ve bağlantı noktasını ayırmak için noktalar kullandığını unutmayın). Linux, 0.0.0.0:*IPv4 ve :::*IPv6 için kullanılır; ilk iki sütun, tüm IPv6 adreslerinin kısaltmasını temsil eder ve üçüncü sütun, adres ile bağlantı noktası arasındaki ayırıcıyı gösterir.

Uzun zaman önce duyduğum veya okuduğum bir şeyden IIRC, UDP eşleşmelerinin ortaya çıkabileceğini düşünüyorum , ancak genellikle tamamlanmadığı zaman parçalandıkları ve UDP bağlantıları genellikle çok kısa, milisaniye veya daha kısa sürdüğü için değil. Bunu daha önce hiç görmedim, bu yüzden yanlış olabilir.

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.