Web tarayıcımda localhost: 8080'e gittiğimde tam olarak ne oluyor? (Apache Tomcat)


11

Kariyerimi tüm yerel uygulama programlarını (C ++ uygulamaları ve ne olursa olsun) yaparak geçirdim. Ancak şimdi ayaklarımı web dünyasına kazmaya çalışıyorum. Eclipse (Mars) ve Apache Tomcat 8.0.23 denemek ve hangi ile deneme ve sunucu tarafı programlama (JSP, PHP, vb) hakkında bilgi edinmek için bir çevre kurmak için kullanıyorum. Her şeyi yazdığım şekilde yazdım

localhost:8080

tarayıcımda doğru tomcat sayfasına yönlendiriyor. Bunun muhtemelen çok basit olduğunu biliyorum, ama burada aklımı uçurmak gibi.

Localhost yazdığımda tam olarak neler oluyor?

İnternet olmasa da tomcat sayfası nereden geliyor? Verilerin Tomcat sayesinde bilgisayarımdaki bir sunucudan geldiğinden eminim, ancak tarayıcım bilgileri localhost: 8080'den nerede bulacağını nasıl bilebilir?

8080'in bir liman ya da bir şey olduğunu varsayıyorum, ama bundan da emin değilim ve eğer bir liman ise bunun ne anlama geldiğinden emin değilim.

Temelde sunucu tarafı web geliştirme hakkında bildiğim tek şey (bence ...) saf html / css web geliştirmede her şey indirildikten sonra tüm işlerin yerel olarak yapılması, ancak sunucularla bazı çalışmaların (bazı sınırlayıcıların içinde) sunucuya geri döner ve html'ye farklı bir biçimde (C ++ 'da bir işleve veri gönderilmesi ve döndürülmekte olan farklı veriler) enjekte edilir ve daha sonra tekrar yerel olarak sayfaya çekilir.


2
Sizi RFC 7230'u okumaya davet etmek istiyorum .
Michael Hampton

Görünüşe göre bu gunna uzun bir gece olacak;)
softeng

Yanıtlar:


9

Web tarayıcımı localhost: 8080'e yönlendirdiğimde tam olarak ne oluyor?

  1. Web tarayıcınızın işletim sisteminizden ana bilgisayar adını çözmesini istemesine neden oluyorsunuz localhost. İşletim sistemleri normalde hostname çözeceğini localhostiçin 127.0.0.1, sizin döngü geri arayüzü.

  2. Herhangi bir ana bilgisayar adı veya IP adresi ve ardından :bir bağlantı noktası numarası :8080tarayıcıya varsayılan web sunucusu bağlantı noktası 80 yerine bu TCP bağlantı noktasına bağlanmasını söyler.

    Tıpkı http://localhost:80/, http://localhost/, http://127.0.0.1/:80, ve http://127.0.0.1/, aynı sunucu ve bağlantı noktasına her bağlantı öylesine vermez http://localhost:8080/ve http://127.0.0.1:8080/aynı zamanda aynı ip adresine ancak TCP bağlantı 8080 tarihinde bağlamak

Ek Not: HTTP / 1.1'de, web tarayıcısı aynı IP adresine ve bağlantı noktasına birçok web sunucusuna bağlansa da, localhost ile 127.0.0.1 arasında küçük bir fark vardır. Adres çubuğunda ne olduğuna bağlı olarak, tarayıcınız içinde Host: localhostveya Host: 127.0.0.1içinde bir istek başlığı alanı gönderir . Bir web sunucusu düzgün bir şekilde yapılandırıldığında, tarayıcının Ana Bilgisayar üstbilgisi alanı, tek bir web sunucusunun tek bir IP adresi bağlantı noktasını dinlemesine ve aynı IP adresine çözümlenen birçok farklı etki alanı için farklı web sayfaları sunmasına olanak tanır.

İşletim sistemi genellikle localhost gibi ana bilgisayar adlarını nasıl çözer?

  1. Unix sistemlerinde veya Linux veya Freebsd gibi işletim sistemi gibi Unix'te, dosya / etc / hosts'dir ve büyük olasılıkla aşağıdaki gibi satırlara sahiptir:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. Windows'da dosya c:\windows\system32\drivers\etc\hostsgenellikle benzer bir çizgiye sahiptir ve olacaktır:

    127.0.0.1   localhost
    

Ek not: İsterseniz, hosts dosyanıza aşağıdaki gibi satırlar ekleyebilirsiniz:

127.0.0.1     localhost
127.0.0.1     developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2     www.spam.advertisements.com
127.0.0.2     super.ads.com
# Block These Sites
127.0.0.3     www.dont.go.here.com
127.0.0.3     nsfw.stuff.com 
  • http://developer.yourdomain.com:8080/Tarayıcınızın adres çubuğundaki Tekdüzen kaynak bulucu (URL) , web tarayıcısını yerel geridöngü adresinizin 127.0.0.1'in 8080 bağlantı noktasına TCP bağlantısı kurmaya yönlendirir.

  • Ayrıca, 127.0.0.0/8 aralığındaki herhangi bir adresin rfc1700 sayfa 4'e göre geri döngü adresidir. Böylece, düzgün çalışan bir web sunucusu 127.0.0.3 bağlantı için genel bir "Buraya gitmemelisiniz. Site engellendi" iletisi verirken 127.0.0.2 bağlantı noktasındaki tüm isteği reddedebilir.

Tomcat sayfası nereden geliyor?

Apache Tomcat, bir bağlantı noktasını dinleyen ve tarayıcınıza gönderilecek içerik oluşturan java programlarını çalıştıran bir sunucudur.


Hiçbir şey açıklamaz. Çok yüzeysel
Yeşil

@Green özellikle neyi arıyordunuz? Bir adrese çözümlenen yerel ana bilgisayar adı ve TCP bağlantı noktası numarası ele alındı. Kapsadım: çeşitli sunucuların bağlantı noktasına listeyi nasıl işlediğini, sunucu havuzlarının birden çok bağlantıyı nasıl işlediğini, web sunucularını nasıl yapılandıracağınızı, TCP iletişiminin iç işleyişini, tam HTTP üstbilgileri açıklamasını veya ana bilgisayarlarda bulunmayan etki alanları için ad çözümlemesinin nasıl çalıştığını her biri sorunun kapsamı dışındadır.
Keith Reynolds

1

Web tarayıcınıza www.google.com yazdığınızda, varsayılan bağlantı noktası 80'de Google sunucusuna (www.google.com IP adresinin ne olduğunu görmek için bir DNS araması yoluyla) bir bağlantı açılır ve web sayfasını ister. Google sunucusu, tarayıcınızın ekranda çizdiği bir web sayfasıyla yanıt verir (genellikle resimler, CSS ve JavaScript için daha fazla çağrı yaparak).

Localhost'a gittiğinizde: 8080 aynı şeydir. Localhost sunucu adı her zaman üzerinde çalıştığınız makineye çözümlenir ve 127.0.0.1 sahte IP adresini kullanır (bilgisayarınızın iki IP adresi olacaktır - bu, her bilgisayarın sahip olduğu ve gerçek adres). Bu nedenle 8080 numaralı bağlantı noktasındaki bağlantıları yerel olarak dinleyen bir Tomcat örneğiniz olmalıdır.

Neden varsayılan http bağlantı noktası 80 yerine 8080 bağlantı noktası? Zaten yerinde bir web sunucunuz olması durumunda.

Genellikle web sunucularınız ve uygulama sunucularınız vardır.

  1. Web sunucuları (Apache httpd gibi) statik sayfalar sunar. Aslında bu süslü tek yönlü bir FTP sunucusu gibi. Bir TCP bağlantısı açar ve HTTP komutlarını (genellikle GET) kullanarak bir dosya istersiniz. Web sunucusu bir HTML dosyası döndürür ve tarayıcınız dosyayı indirir ve ayrıştırır, başka görüntülere ihtiyaç duyduğunu görür ve bunları ister. Bir web sunucusu çok hızlıdır, ancak temel olarak dosyaları yerel diskten kaldırır ve döndürür.

  2. Bir Uygulama Sunucusu (Tomcat veya JBoss gibi) benzerdir, ancak genellikle doğrudan diskten kaldırmak yerine istediğiniz sayfayı "oluşturmak" için kod çalıştırır. Bu sayfayı oluşturmak için yaptıklarınız uygulamanıza bağlıdır. Bir veritabanına bağlanabilir, bir program çalıştırabilir, rastgele bir sayfa sunabilir ... vb. Örneğin, çevrimiçi bankacılığınızda oturum açtığınızda, uygulama sunucusu sizin için bir oturum ayarlar, bu oturum kimliğini bir çerezde döndürür. oturumu kapatana kadar her istek yaptığınızda tarayıcı yeniden gönderilir. Eğer "bakiyelerim" sayfasını sorarsanız, o zaman banka oturum kimliğinize göre kime baktığınızı arar, sonra adınızı ve banka bakiyenizi almak için veritabanına gider, sonra "Merhaba John Smith, bakiyeniz 100 € 'dur. " Uygulama sunucuları genellikle Web Sunucularına göre daha yavaş ancak çok yönlüdür.

Birçok yerde varsayılan 80 numaralı bağlantı noktasında çalışan bir WebServer ve ikincil bir bağlantı noktasında (8080 gibi) çalışan AppServer bulunur. Statik sayfalar hızlı bir şekilde sunulur ve kullanıcılar kendilerini dinamik bir sayfaya götüren bir bağlantıyı tıkladıklarında, bağlantı 8080'e (uygulama sunucusunun yanıt verdiği) gider veya web sunucusu belirli istekleri uygulama sunucusuna (içinde bu durumda hala varsayılan port 80'e benziyor ve bu yüzden kullanıcıya biraz daha hoş görünüyor).

Tabii ki bu çok yüksek bir genel bakış ve hiçbir şey siyah ve beyaz değil. Çoğu Web sunucusu komut dosyaları (tipik olarak perl veya PHP kullanan komut dosyaları aracılığıyla CGI aracılığıyla) çalıştırarak bazı dinamik içerik oluşturabilir ve çoğu uygulama sunucusu web sunucusu gibi düz dosyalar da sunabilir. Aslında bir uygulama sunucusu çalıştırmak ve tomcat port numarasını 8080'den 80'e değiştirmek mümkündür.

Son olarak, birçok uygulama her istek için tam HTML sayfalarını uygulama sunucusuna sunmaktan uzaklaşmaktadır (yavaş ve verimsiz olarak görülmektedir) ve bunun yerine yalnızca JSON veya XML göndermek için AJAX kullanan veri snippet'leriyle yanıt vermektedir. Arama sorgunuzu yazmak için kullandığınız orijinal www.google.com'a geri dönün, Ara'ya basın ve sonuçlarınızın bir sayfasını alın. Şimdi bunun yerine, siz yazarken, tarayıcınız sürekli olarak Google'a AJAX istekleri gönderiyor, bu da yazdıklarınıza göre güncel arama sonuçlarıyla yanıt veriyor ve ardından tarayıcınız sayfayı güncelliyor. Bu, kullanıcının sayfayı çok daha hızlı ve daha dinamik bir şekilde kullanıcıya göndermesini beklemeye gerek olmadığı anlamına gelir (eski bir okul masaüstü uygulaması gibi).


1

Bu senaryoda 127.0.0.1 (geri döngü arabirimi) olan localhost'u çözümlemek için bir istek gönderirsiniz ve Apache 8080 bağlantı noktasını dinlemek üzere yapılandırılır, 8080 bağlantı noktasında localhost'a eriştiğinizde varsayılan VirtualHost döndürür.


0

Bir web adresi olarak localhost, yerel makinenize bağlanır; bu durumda web sunucusu olarak Apache yüklüdür.

İkinci bölüm: 8080, söz konusu web adresinin 8080 numaralı bağlantı noktasına bağlanmak anlamına gelir. Belirtmezseniz, web tarayıcınız 80 numaralı bağlantı noktası olan varsayılan web sunucusu bağlantı noktasına bağlanır.

Henüz IP adreslerine giriyorsanız, localhost 127.0.0.1'e sabit bir DNS bağlantısıdır.

Seni oraya götürmeli ...

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.