localhost
IP adresini verme kararının kökeninin ne olduğunu merak ettim 127.0.0.1
. Bunun anlamı nedir 127
? "anlamı" 0.0.1
nedir?
localhost
IP adresini verme kararının kökeninin ne olduğunu merak ettim 127.0.0.1
. Bunun anlamı nedir 127
? "anlamı" 0.0.1
nedir?
Yanıtlar:
127, alt ağ maskeli bir A sınıfı ağdaki son ağ numarasıdır 255.0.0.0
. 127.0.0.1
alt ağdaki ilk atanabilir adres. 127.0.0.0
kullanılamaz çünkü bu tel numarası olacaktır. Ancak, ana bilgisayar kısmı için başka herhangi bir sayı kullanmak iyi çalışmalı ve kullanmaya geri dönmelidir 127.0.0.1
. İsterseniz ping yaparak kendiniz deneyebilirsiniz 127.1.1.1
. Bunu uygulamak için neden en son ağ numarasına kadar beklediler? Belgelendiğini sanmıyorum.
127'nin geri döngü ile ilgili olarak bulabildiğim en eski söz , Reynolds ve Postel tarafından yazılan Kasım 1986 RFC 990'dır:
Sıfır adresi, "bu ağ" da olduğu gibi "bu" olarak yorumlanmalıdır.
Örneğin, 0.0.0.37 adresi, bu ağdaki ana bilgisayar 37 olarak yorumlanabilir.
...
A sınıfı (127) ağ numarasına "geridöngü" işlevi atanır, yani daha yüksek düzeyde bir protokol tarafından bir ağ (127) adresine gönderilen bir datagram, ana bilgisayar içinde geri dönmelidir. Bir ağa 127 adresinin "gönderildiği" hiçbir veri hiçbir yerde herhangi bir yerde görünmemelidir.
Eylül 1981 gibi erken bir zamanda bile, RFC 790 , 0 ve 127 çoktan rezerve edildi:
000.rrr.rrr.rrr Ayrılmış [JBP] ... 127.rrr.rrr.rrr Ayrılmış [JBP]
0 ve 127, 1981 yılına kadar yalnızca ayrılmış A Sınıfı ağlardı. 0, belirli bir ana bilgisayarı işaret etmek için kullanıldı, böylece geri döngü için 127 kaldı.
Bunun soruyu cevaplamadığını biliyorum, ama bu kazabileceğim kadar geri döndü. Geridönüş için 1.0.0.0'ı seçmek daha mantıklı olabilirdi ama bu zaten BBN Paket Radyo Ağı'na verildi.
İnternet tasarımcıları, donanımın nasıl çalıştığını gerçekten biliyordu ve düşük seviyeli uygulama düşünülerek tasarlandılar.
0, 127 ve 255 değerleri 8 bit montaj ve makine dili programlamasında özeldir, çünkü bu değerleri test etmek için kullanabileceğiniz "hileler" vardır ve diğer tamsayılardan daha hızlı çalışan daha küçük komutlar kullanarak farklı kodlara dallanırlar. 127, işaretli en yüksek 8 bit tam sayıdır, bu nedenle 1 değerine yükseltmek, işaretli taşmalara neden olur. Benzer şekilde, 255 artış, işaretsiz taşmalara neden olur. 0 değerini yalnızca bir register'a yüklemek genellikle çip üzerine sıfır bayrak koyacaktır. Ağ programının sözde kodda böyle göründüğünü hayal edin:
if (value == 0) doLocal();
if (value == 127) doLoopback();
if (value == 255) doNetwork();
Her ne kadar çipe bağlı olsa da, o günlerde çoğu cips bu testleri sırasıyla 2 kelime, 3 kelime ve 3 kelime (toplam 8 kelime) ile kodlayabiliyordu ve bu testlerin hepsinin her birinin 1 saat döngüsünde yürütülmesi muhtemeldi. Başka herhangi bir değerin kullanılması muhtemelen her biri 4 kelime (toplam 12 kelime), kod boyutunda% 50 ve uygulama süresinde de% 50 artış gerektirecektir.
Bir yerel ana bilgisayar veya geridöngü IP adresinin ne anlama geldiğini düşünüyorsanız, o adresi veya bu adresin ait olduğu ağı bir ana bilgisayarın dışında asla görmek istemediğinizi fark edersiniz. (Bir ev sahibinin içinde onu görmek çok karanlık. Mark Twain için özür dilerim.)
Bu yüzden, biri bu yerel ana bilgisayar adresini temsil etmek için bir IP ağı seçmek zorunda kaldı. İlk kimin seçtiğini hatırlamıyorum, ancak periyodik olarak "Ana Bilgisayar Gereklilikleri" olarak yayınlanan IETF Yorumlar İsteğinde belirtildi.
Çok uzun zaman önce, A sınıfı bir adresin tamamını israf etme fikri o zaman kimsenin aklına girmedi.
Localhost'un yararı, kodlanmış bir IP adresi kullanarak kendinizle konuşabilmenizdir. Etki Alanı Adı Sistemi çok uzun zaman önce kullanıldı. Aslında 127.xxx geçerli adreslerinden herhangi birini kullanabilirsiniz, ancak hiç kimse kullanmaz. “Yönlendirici Gereksinimleri” RFC bu ağı herhangi bir internet üzerinden yönlendirmesine izin vermediğinden 127'yi gizlice kullanamaz ve gerçek bir ağ olarak kullanamazsınız.
İlk olarak, 127.xxx'in tamamı yerel ana makinenize işaret eder.
İkili olarak 127, "01111111" dir. "11111111" = 255 ve 0 aittir, yani seçim açıktır :)
Çünkü bu standartlar oluşturulduğunda, bilgisayarlar yavaştı ve genellikle 8 bitlik kayıtlarla sınırlıydı. Sayıların sayılarla karşılaştırılması çok yavaştı, özellikle de bu sayıların arkadan alınması gerekiyorsa GERÇEKTEN yavaş bellek. Kayıtlar, yani "on board CPU" depolaması çok daha hızlıydı.
Üstelik bu eski bilgisayarlarda "sıfıra eşit", "sıfırdan farklı", "negatif / pozitif tamsayı" nın tespit edilmesi için özel, daha hızlı talimatlar vardı (burda işaret vardı ... tahmin et ne oldu, en soldaki bit, şimdi 127 ile bir bağlantı gördü) , bu, en soldaki = işareti hariç tüm "1" sayılarına sahip sayıdır.).
Bu nedenle bunlar özel numaralardı, çünkü sık yapılan işlemlerde programlama işleminin bir çok CPU çevrimi kaydetmesini sağladılar.
Asla "IF CallerIP =" 0 "ama" IF NotZero (CallerIP) "komutunu görmezsiniz.
Daha uzun açıklamalar için "BEQ, BNE" (6502 CPU) gibi eski montaj talimatlarını kontrol edebilirsiniz. Ayrıca bu sayfayı kontrol edin .
Sonunda:
0, 255 ve 127 tek ve en hızlı talimatlarla kontrol edilebilir. C gibi daha yüksek seviyeli diller bile, derleyicinin dahili olarak tek bir komutta optimize edebileceği karşılaştırma işlevlerine "kısaltılmış" sahiptir.
70 ve 80 yıllarında programcılar gerçekten kıt kaynaklara sahip muhteşem mimariler ürettiler, IP numaralandırma gibi standartların arkasında çok fazla düşünce ve deha var.