IP adresinin ana bilgisayar bölümündeki tüm sıfırlar neden ana bilgisayar için kullanılamıyor?


21

Bir ağım 83.23.159.0/24varsa 254 kullanılabilir ana bilgisayar IP adresime sahip olduğumu biliyorum çünkü:

83.23.159.0      (in binary: host portion all zeros) is the subnet address
83.23.159.1-254  are host addresses
83.23.159.255    (in binary: host portion all ones) is the broadcast address

Bir yayın adresinin kullanımını anlıyorum, ancak alt ağ adresinin ne için kullanıldığını anlamıyorum. Bir IP paketinin hedef adresinin alt ağ adresine ayarlanması için herhangi bir sebep göremiyorum, öyleyse neden bir IP IP akışının bitiş noktası olmayacaksa, alt ağın neden bir adrese ihtiyacı vardır? Bana göre bu adresin ev sahibi adresi olarak kullanılmasına izin vermemek israf gibi görünüyor.

Özetlemek gerekirse, sorularım:

  1. Bir IP paketinin hedefi hiç alt ağ IP adresine ayarlandı mı?
  2. Eğer evet ise, hangi durumlarda ve neden?
  3. Hayır ise, neden herhangi bir ana bilgisayarın kullanması için bu adresi serbest bırakmıyorsunuz?

2
ifconfig24-net'in host adresini 0 veya 255 olarak ayarladığınızda şikayet etmez. Sadece kullanmayı deneyin.
ott

2
Yaptım. 0,0 için çalışıyor gibi görünüyor. Ancak eski yazılımı bozabilir. .255, yayın gerektiren herhangi bir protokol kullanmazsanız da çalışacaktır. ARP tablolarını tüm bilgisayarlarda kalıcı adreslerle manuel olarak yapılandırırsanız ayarlayabilirim, ancak yuk!
Hennes


1
Buna katılmıyorum John. Onu tekrar kontrol ettim ve sorulan belirli bir soruyu ele almıyor. Bu bir kenara dava değil.
Hennes

1
Bu soru şimdi ayrıca veya yeni ağ mühendisliği sitesinde de soruluyor. Bu cevaplar ( http://networkengineering.stackexchange.com/questions/11200/what-is-the-purpose-of-network-address-aka-subnet-address adresinde ) henüz Sunucu Hatası mesajlarında bulunmayan bilgilere sahiptir. .
Hennes

Yanıtlar:


12

Bir IP paketinin hedefi hiç alt ağ IP adresine ayarlandı mı?

Evet. Geçerli bir IP olduğundan kullanılabilir.

Eğer evet ise, hangi durumlarda ve neden?

Bu sadece bir / 24’teki 255 kullanılabilir IP’den biri.

Hayır ise, neden herhangi bir ana bilgisayarın kullanması için bu adresi serbest bırakmıyorsunuz?

Eğer varsa eski ardından donanım bunu ilk veya ağ adresi olarak son adresine kullanıp kullanmadığını kontrol etmek gerekir. (FF.FF.FF.00 maskeli ağlar için .0 veya .255)

Bu, bu IP'yi atlamak için iyi bir alışkanlık yapar. Ve uzun zaman önce öğrenilen alışkanlıkları görmezden gelmek zor.

Ve arka planı bilmeyen insanlar, onu kullanmazlar çünkü 'başkaları onu kullanmaz, bu yüzden onu kullanmak yanlış olur' ya da '0'ın ilk sayı olabileceğini anlamadıkları için .

[Düzenle] Grezzo az önce Windows XP'de test etti, burada windows network GUI 'yararlı bir şekilde' bu ayarı önledi. Windows 7 aynı davranışa sahiptir. Daha sonra sadece çalıştığı Windows olmayan bir ana bilgisayarda denedim. Windows kullanıyorsanız, ağınızı tüm sıfırlara ayarlamak için IPconfig ile manuel olarak yapılandırmanız gerekebilir.

192.168.1.0_on_win7 192.168.1.0_on_FreeBSD

[Düzenle 2]

Bununla ne kadar uzun çalışırsam, kafam da o kadar karışır.

Rfc4632 - Sınıfsız Alanlar Arası Yönlendirme , yasaklıyor gibi görünmüyor, ancak hiçbiri de açıkça izin vermiyor.

Bu ServerFault yazısında şöyle yazıyor: "Birçok işletim sistemi ilk adresi bir yayın olarak kabul ediyor. Örneğin, yerel (/ 24) ağımda OS X, Linux ve Solaris'ten xxx0'e ping atmak yanıt veriyor. Windows size ping atmanıza izin vermiyor ilk adres varsayılan olarak ayarlansa da SetIPUseZeroBroadcast WMI yöntemini kullanarak bunu etkinleştirebilirsiniz. Tüm Windows ağında .0'ı bir ana bilgisayar adresi olarak kullanmaktan kaçınıp kaçamayacağınızı merak ediyorum. " .

Aynı soru, ama bir cevap değil.

Ağ adresi, yönlendirme tablolarında da kullanılır. Ama neden bu yüzden işe yaramayacağını anlayamadım. Yönlendirme tablolarındaki aynı gösterim doğru ağa yönlendirilir. Bir kez doğru ağda IP 0 olan bir PC'ye ulaşırdı.

(Bunların tümü 192.168.1 / 24 için.
192.168.0 / 23'ü kullandıysanız, 192.168.1.0 aralığın ortasında geçerli ve güvenli bir değer olur)

[Düzenle 3]

Aynı soruya bir link daha. Borsa değişiminde biraz popüler görünüyor:

/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address

Ve bir düşünce:

Destination_IP muhtemelen edilir VE yönlendirme tablolarındaki girdileri ile karşılaştırıldığında önce ağ direği (donanım hızlı bir operasyon) ile ed. Fakat:

(Yarı-rastgele bir IP) 192.168.0.42 VE 255.255.255.0, 192.168.0.0 verecek,
ancak 192.168.0.0 VE 255.255.255.0 da 192.168.0.0 verecek.


[Düzenle 4 - Bu cevap yazıldıktan çok sonra - bu yeni bilgi nedeniyle yazının tamamını yeniden yazmam gerekebilir ]

RFC923 , sayfa 3'te şunu belirtir:

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning host 37 on this
  network.

Son teklif @ylearn üzerinde bizim networkengineering sitesinde

Bunun ilk dokümantasyonunun RFC943'ü referans alan RFC950'den geldiğine inanıyorum ( yukarıdaki RFC923'ü eski ama aynı adresi özel adresler için kullanıyor):

     It is useful to preserve and extend the interpretation of these
     special addresses in subnetted networks.  This means the values
     of all zeros and all ones in the subnet field should not be
     assigned to actual (physical) subnets.

Bunu açıklamak için size XXX0 / 24 söylüyoruz olan bir ana bilgisayar için geçerli bir IP adresi? Öyleyse, neden (IP adresimi 25.1.255.255.0'lık bir ağ maskesiyle 192.168.1.0 olarak ayarlamaya çalıştığımda) Windows XP'de " IP adresi ve alt ağ maskesi kombinasyonu geçersiz" yazıyor. IP adresinin ana bilgisayar adresi kısmı 0 olarak ayarlanmıştır. Lütfen geçerli bir IP adresi ve alt ağ maskesi kombinasyonu girin. "
Grezzo

3
Windows yanlış. (Ya da daha az kuvvetle söylenir: pencereler herhangi bir sistem kombinasyonu ile çalışmak için çok dikkatlidir). Bunu sadece Windows 7 sistemimde denedim ve yaptığınız gibi aynı hatayı aldım. Temiz bir FreeBSD sistemi kurdum ve çalıştığı yerde test ettim. (Bunu yazıya ekleyeceğim)
Hennes

Teşekkürler, gerçekten yardımcı oldun. Sadece OS X’deki GUI’nin de bunu yapmanıza izin vermeyeceğini eklemek istedim, ancak bahse girersiniz eğerconfig olur. M0ntasars'ın cevabının neden daha fazla oy aldığını anlayamıyorum - sorumu cevaplamaya bile çalışmıyor. Bir şey daha; " Eski bir donanıma sahipseniz, ilk veya son adresi ağ adresi olarak kullanıp kullanmadığınızı kontrol etmeniz gerekir " derken yayın adresini mi kastediyorsunuz ?
Grezzo,

Evet, yayın adresini kastetmiştim. Kahretsin, "5 dakikadan daha eski yorumu düzenle" düğmesi nerede?
Hennes

Tatlı, .0 ve .255'e ping atmayı denedim, her iki seferde PS3'üm yanıt verdi (her şey kablosuzydu, bu yüzden sanırım ilk önce oraya gelir neden) .65'ten. neden (normalde) gerçek bir ana bilgisayar adresi için kullanmamalıyız.
Grezzo,

15

Tamamen sıfır anasisteme sahip bir adres, herhangi bir ana bilgisayar yerine, ağın kendisine atıfta bulunur.

Tarihsel olarak, bu sıfır ana bilgisayar adresi alternatif bir yayın adresi görevi görmüştür ve cihazlar hala bu şekilde yanıt verir.

Bu nedenle, diğer bazı cevaplara katılmıyorum: hayır, sıfır tamamen kullanışlı bir ana bilgisayar adresi değil. 254'ten fazla adrese ihtiyacınız varsa, daha büyük bir alt ağ oluşturmanız gerekir.

Bakın, adresini .1ping'lere cevap veren Linksys yönlendiricim .0. (Ağ maskesi 255.255.255.0, bu yüzden son sayı, ana bilgisayar numarasına karşılık gelir.)

webserver:~# ping  192.168.1.0
Do you want to ping broadcast? Then -b
webserver:~# ping -b 192.168.1.0
WARNING: pinging broadcast address
PING 192.168.1.0 (192.168.1.0) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.46 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.812 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.819 ms

.0Adresi bir ana bilgisayara atadıysam, yönlendirici de yanıtları olmadan içeri girmeden ping yapamazdım. Gördüğünüz gibi, bazı araçlar bu yönlendiricinin versiyonu gibi pingtedavi 0bir yayın olarak.

Tüm protokol yığınlarını ve bu tür bir bükülmeden etkilenen diğer yazılımları yamalamaya hazırsanız, kuralları bükebilirsiniz. Aksi takdirde kurallara uyun.

Konuşma konusu olan mesele.

14 yuvalı bir kasa içine yerleştirilmiş bir ağ düğümü tasarlayan bir şirkette çalıştım, birkaç kart türünde bağımsız işletim sistemi görüntüleri çalıştırarak hepsi arka panel üzerinden iletişim kurdum. Arka panelde, 127.X.0.YX düğümündeki Y düğümünün dahili IP adresi olan ve tümü 1'den numaralandırılmış bir kural olan bir ağ kurulumu vardı .

Temel olarak geridöngü adresini kendi amaçlarımızla alt ağa yerleştirdik. İşe yaraması için, burada ve oradaki Linux çekirdeğini ve biraz da kullanıcı alanı olan IIRC'yi yamalamak zorunda kaldık.

Bu ağ yalnızca kutu içinde kullanıldığından ve geri döngü gerektiren çoğu program normal olarak çalışmaya devam eden 127.0.*ağı (ve aslında belirli adresi 127.0.0.1) kullanır, her şey yolundadır.


7

aslında ağ maskesine bağlıdır, örneğin, ağ için


3
+1 - 83.23.158.255 geçerli bir ana bilgisayar adresi olabilir. İnsanlar alt ağ maskesini göz önünde bulundurmadan 0 ve 255'in kurallarına takılmazlar.
joeqwerty

1
Bir xxx0 adresinin / 24'ten küçük bir ağ maskesiyle geçerli olduğunu biliyorum, ancak benim sorumumda bir / 24 ağ maskesi belirttiğime dikkat edin, bu yüzden sorumu cevaplamadınız. Son dörtlü / bayttaki tüm 0 veya 255'lerden bahsetmiyordum, IP adresinin "ana bilgisayar bölümünde" tüm 0 veya 255'lerden bahsettim. Bu, ağ maskesini dikkate alır.
Grezzo

2
@ Grezzo kısa cevap: CIDR olmayan ve eski şeyler .0 ile kırılır, MS sadece tamamen izin vermez. Fakat IPv6 yaklaşıyor, neden endişeleniyorsunuz? ;)
Sammitch

2
Bu gerçekten bir cevap değil, çünkü soru nokta notasyonu numerolojisi ile ilgili değil, herhangi bir genişlik alt ağındaki 0 ​​ana bilgisayar adresinin durumu / anlamı ile ilgili.
Kaz

2
Bu cevabın neden bu kadar çok oyu olduğunu anlamıyorum. 83.23.159.0/23 geçerli bir ağ "teknik olarak" değildir. 83.23.159.0 23 maskeli aslında 83.23.158.0/23 ağının tam ortasında bir ip. Soru, "neden ipin sonunda .0 olamıyorum", "neden adresi tüm sıfırlarla birlikte kullanamıyorum" sorusu değildi. Örnekte, "tüm ana bilgisayar sıfırları" adresi 83.23.158.0 olacaktır. Diğer cevaplarda da belirtildiği gibi, bu tarihsel olarak kullanılamaz bir adrestir ("ağ adresi") ve bazı işletim sistemlerinde çalışabilirken, denemek ve kullanmak tavsiye edilmez.
USD Matt

3

Temel ağ iletişimi ile ilgili biraz karışıklık var gibi geliyor.

Yanıtlardan birinde belirtilen 'eski donanım' IP Alt Ağ Sıfır kullanmaz - a / 24 CIDR veya 255.255.255.0 alt ağ maskesi için ayarlanmış bir ağla birlikte xxx0 ip adresini kullanarak tamamen farklı bir konudur.

IP Alt Ağ Sıfır

  • Eski donanımlar IP Alt Ağını Sıfır kullanmazlardı - yani çok alt ağlı bir ağ sisteminde ilk alt ağı kullanmazlardı. Bu nedenle, 23 / 255.255.254.0 ağında XXX0 alt ağı ve adresleri kullanılmaz. Modern yönlendiriciler bu kısıtlamaya sahip değildir, ancak istenirse bu alt modeli sıfır kullanmayacak şekilde eski IE modelini kullanacak şekilde yapılandırılabilir.

Bir alt ağda kullanılabilir ana bilgisayar IP adresleri

  • Temel ağ:
    • / 24 yani, 255.255.255.0 alt ağ maskesi
    • xxx0 ağ adresi olarak ayrılmıştır. Yönlendiriciler ve yönlendirme protokolleri (EIGRP, RIP2, vb.) Ağ adresini, ağ ağı sınırları içinde ve ötesinde taşımak üzere ağ parçalarını tanımlamak için ağ adresini kullanır.
    • xxx255 yayın adresi için ayrılmıştır
    • 253 kullanılabilir IP numarası bırakacak şekilde yönlendiricilerde 0,1 veya 0,254 adreslerini kullanmak yaygın bir uygulamadır.

Hem ağ adresi hem de yayın adresi ayrılmıştır ve (mevcut ve önceki ağ standartlarına göre) bir aygıta atanamaz. / 24 sistemindeki bir ana bilgisayar adresi için xxx0 kullanılması yanlış. Linux kullanmanıza izin verse bile, bunun doğru olduğu anlamına gelmez, sadece Linux ne yaptığınızı bildiğinizi düşünüyor demektir.

Sisteminiz bir ana bilgisayara bir IP4 adresi olarak xxx0 atamanıza izin veriyorsa ve çalışıyor gibi görünüyorsa - olasılıklar belirli bir ana makinenin o ağdaki HERHANGİ bir cihaza yönelik TÜM trafik almasıdır, bu nedenle ağı muhtemelen en iyi şekilde çalışmıyordur.


1
" Xxx0 ağ adresi olarak ayrılmıştır (genel adres ya da tüm alt ağ için işaretçi olarak düşünün ") dedin, ancak gerçekte ne için kullanıldığını açıklamamışsınız ve bu nedenle neden bir ana bilgisayar için kullanılamayacağını açıklamamışsınız.
Grezzo

2
Gönderim güncellendi. Alt satırda, ağ adresini bir aygıta atamak özelliklere aykırıdır ve küçük bir saplama ağında kullanmaktan kaçınabilirken, yönlendiricinizin yazılım güncellemesi alması (ya da yönlendiricileri değiştirirseniz) riskini hala alıyorsunuzdur. ) cihazın veya tüm ağınızın düzgün çalışmasını durdurabilir.
Steven

3

RFC 1122 ("İnternet Sunucuları için Gereksinimler - İletişim Katmanları") şunları yasaklamaktadır:

IP adreslerinin, <Ana Bilgisayar numarası>, <Ağ numarası> veya <Alt ağ numarası> alanlarından hiçbirinde 0 veya -1 değerine sahip olmalarına izin verilmez.


1
Olduğu kadar doğru. Ancak, tavsiye edildiği gibi bölüm 3.3.6’ya gittiğinizde, tam bir açıklama alacaksınız.
Michael Hampton

@ MichaelHampton BSD 4.2 yayın olarak 0 kullandığından?
Grezzo

3
@ Grezzo Çok fazla. Buna şaşırdın çünkü 80'ler ölmeyecek.
Michael Hampton

0

Aslında cevap, alt ağın temelidir. Ağ kimliğiyle birleştirilmiş alt ağınızın "tüm sıfırları" IP'si, paketin nereye gönderileceğini hesaplamak için kullanılır.

Örnekte 255.255.255.0 alt ağınız var. TCP / IP protokolünü bilen herhangi bir cihaz, paketin yerel ağa yönlendirilip yönlendirilmediğini (mantıksal bir VE işlemi gerçekleştirerek) veya ağ geçidi / yönlendiriciden gönderilmesi gerektiğini hesaplamak için IP adresiyle birlikte ağ maskesini kullanır.

Bu yüzden IP'nin kullanılamamasının nedeni, ağ sınırlarını tasarım ile ağ maskesiyle birlikte "tanımlamak" için kullanılmasından kaynaklanmaktadır.


" TCP / IP protokolünü bilen herhangi bir cihaz, paketin yerel ağa yönlendirilip gönderilmediğini (mantıksal bir VE işlemi gerçekleştirerek) hesaplamak için IP adresiyle birleştirilmiş ağ maskesini kullanır " deyin, ancak ANDing 83.23.159.0 ile 255.255 255.255.255.0 ile .255.0 ve ANDing 83.23.159.1 aynı sonucu (83.23.159.0) üretir bu ağ için mukadder ya bir konak 0,0 adresi vardır bile yönlendirici hala çalışır olup olmadığını anlamaya, şu hesaplama kullanılarak yüzden
Grezzo

0

Cevabımı NetworkEngineering'den tekrar göndermem istendi , bu yüzden bu site için bazı değişiklikler yapacağım.

Gelen RFC919 , ağ adresinin genel kabul referans yapar:

However, as a notational convention, we refer to
networks (as opposed to hosts) by using addresses with zero fields.
For example, 36.0.0.0 means "network number 36"

Bu, eğer birisi ağ olarak "10.1.2.0" den bahsederse ve ağda bir ana bilgisayardan bahsetseydi, anlayışımızı netleştirmesi gereken bir sözleşme sağlar.

Oradan, bir IP adreslerinde "0" kullanımı RFC923'te tanımlanmış ve art arda RFC'lerde taşınmıştır:

Special Addresses:

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning host 37 on this
  network.

Bu örnek, adresin ağ bölümlerinde 0'ları kullanarak geçerli ağdaki belirli bir ana bilgisayarı (0.0.0.37) sağlar, ancak tam tersi durumu (adresin ana bilgisayar bölümünde 0) açıklığa kavuşturmaz. Ancak "0" ı "bu" olarak tanımladığı gibi.

In RFC1060 adresi "0.0.0.0" açıkça "Bu ağda bu ana" olarak belgelenmiştir:

     (a)   {0, 0}

        This host on this network.  Can only be used as a source
        address (see note later).

Adresin ana bilgisayar kısmı için tüm sıfırlar "bu ana bilgisayar" anlamına geldiğinden, mantıksal olarak ana bilgisayar adresi olarak kullanılamaz olduğunu izler.

Doğrudan sorularınızı yanıtlamaya geri dönme:

  1. Bir IP paketinin hedefi hiç alt ağ IP adresine ayarlandı mı?
  2. Eğer evet ise, hangi durumlarda ve neden?
  3. Hayır ise, neden herhangi bir ana bilgisayarın kullanması için bu adresi serbest bırakmıyorsunuz?

RFC’lerde bulduğuma göre, bu kullanılmamalıdır. İstediğim kadar açık bir şekilde belirtilmediğini kabul edeceğim, ama hepsi standartlarda ortak. Standartlar bir noktada biraz daha az sert olduğunda, endüstri daha sonra genel kabul görmüş bir yorumlamaya "yerleşmiş" görünmektedir.

Ayrıca, RFC yazılımı içeriğine bağlı olarak, bu adresin belirli bir ana bilgisayarı değil, ağı ele almak için kullanıldığını varsayarsak yazılabilir. Veya daha doğrusu bir çeşit "geridönüş" (yani, belirtilen ağdaki bu sunucu) gibi

Peki neden bazı işletim sistemleri kullanımına açıkça izin veriyor? Geliştiricinin zamanına / kaynaklarına kadar gelebilecek pek çok şey olduğunu ya da hiç kimsenin geçerlilik kontrolünü eklemeyi düşünmediğini hayal ediyorum. Daha büyük bir alt ağ (a / 23 veya daha büyük), .255 ve .0 geçerli IP adreslerini içereceğinden (yani 10.1.2.0/23 geçerli IP adreslerini içereceğinden), mantık "0'da biterse" den biraz daha fazla dahil edilmelidir. 10.1.2.255'in adresi ve 10.1.3.0). Bazı kuruluşlar, modern alt ağı doğru bir şekilde desteklemeyen yazılımlarla ilgili garip sorunları önlemek için bu geçerli adreslerin daha büyük alt ağlarda kullanılmasından da kaçınıyor.

Bu IP adresini neden serbest bırakmadığına gelince, sadece maliyet / faydadan kaynaklanıyor. Alt ağ başına bir IP adresini geri almak ve ek IP adreslerine ihtiyaç duyduğunuz kaç durumda, sadece bir adres yeterli olacak mı? İkinci bir alt ağ eklemek veya mevcut alt ağı büyütmek çok daha kolaydır, potansiyel olarak herhangi bir yazılım / donanımda herhangi bir değişiklik yapılmadan, yalnızca bir tane yerine size kullanılacak birçok adres verir.

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.