나는 모든 로컬 응용 프로그램 프로그래밍 (C ++ 응용 프로그램 및 기타)을 수행하면서 경력을 쌓았습니다. 그러나 지금은 발을 웹 세계에 파고 들려고합니다. Eclipse (Mars)와 Apache Tomcat 8.0.23을 사용하여 서버 측 프로그래밍 (JSP, PHP 등)을 실험하고 배울 수있는 환경을 설정하고 시도하고 있습니다. 입력 할 때 모든 것이 설정되었습니다.
localhost:8080
내 브라우저에서 올바른 바람둥이 페이지로 연결됩니다. 나는 이것이 매우 간단하다는 것을 알고 있지만 여기에 내 마음을 불어 넣는 것입니다.
localhost를 입력하면 정확히 어떻게됩니까?
인터넷이 아닌 경우 바람둥이 페이지는 어디에서 오는가? Tomcat 덕분에 PC에있는 서버에서 데이터를 가져 오는 것이 확실합니다.하지만 브라우저는 localhost : 8080에서 정보를 찾을 위치를 어떻게 알 수 있습니까?
나는 8080이 포트 또는 무언가라고 가정하지만, 실제로 그것에 대해 확실하지 않으며 그것이 포트라면 나는 그것이 무엇을 의미하는지 확실하지 않습니다.
기본적으로 서버 측 웹 개발에 대해 알고있는 것 (생각합니다 …)은 순수한 html / css 웹 개발에서 모든 작업이 다운로드되면 로컬에서 모든 작업이 완료되지만 서버를 사용하면 일부 구분 기호 내부의 일부 작업이 시작됩니다. 서버는 C ++의 함수에 데이터를 보내고 다른 데이터가 반환되는 것과 같이 다른 형식으로 html에 다시 주입 된 다음 다시 로컬로 페이지에 그려집니다.
답변
웹 브라우저에서 localhost : 8080으로 이동하도록 지시하면 정확히 어떻게됩니까?
-
웹 브라우저에서 운영 체제에 호스트 이름을 확인하도록 요청하고 있습니다
localhost
. 운영 체제는 일반적으로 호스트 이름localhost
을127.0.0.1
루프백 인터페이스 로 해석합니다 . -
호스트 이름 또는 IP 주소 뒤에 a
:
와 같은 포트 번호:8080
가 있으면 기본 웹 서버 포트 80 대신 해당 TCP 포트에 연결하도록 브라우저에 지시합니다.마찬가지로
http://localhost:80/
,http://localhost/
,http://127.0.0.1/:80
, 및http://127.0.0.1/
, 동일한 서버 및 포트에 각각 연결은 그렇게http://localhost:8080/
하고http://127.0.0.1:8080/
도 동일한 IP 주소로하지만, TCP 포트 8080에 연결
추가 참고 사항 : HTTP / 1.1에서는 웹 브라우저가 동일한 IP 주소 및 포트, 많은 웹 서버에 연결되어 있지만 localhost와 127.0.0.1 사이에는 약간의 차이가 있습니다. 주소 표시 줄에있는 내용에 따라 브라우저는 요청 헤더 필드를 Host: localhost
또는 Host: 127.0.0.1
안에 포함합니다. 웹 서버가 올바르게 구성되면 브라우저의 호스트 헤더 필드를 통해 단일 웹 서버가 단일 IP 주소 포트에서 수신 대기하고 동일한 IP 주소로 해석되는 여러 도메인에 대해 서로 다른 웹 페이지를 제공 할 수 있습니다.
운영 체제는 일반적으로 localhost와 같은 호스트 이름을 어떻게 확인합니까?
-
Linux 또는 Freebsd와 같은 OS와 같은 Unix 시스템 또는 Unix에서 파일은 / etc / hosts이며 다음과 같은 줄이있을 수 있습니다.
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback
-
Windows에서 파일은
c:\windows\system32\drivers\etc\hosts
일반적으로 다음과 같은 줄을 갖습니다.127.0.0.1 localhost
추가 사항 : 원한다면 다음과 같이 호스트 파일에 행을 추가 할 수 있습니다.
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/
브라우저의 주소 표시 줄에있는 URL (Uniform Resource Locator) 은 웹 브라우저가 로컬 루프백 주소 127.0.0.1의 포트 8080에 TCP 연결을하도록 지시합니다. -
또한 rfc1700 페이지 4 에 따르면 127.0.0.0/8 범위의 모든 주소도 루프백 주소입니다. 따라서 컴퓨터에서 올바르게 구성된 웹 서버는 127.0.0.3 연결에 대한 일반적인 “여기에 가지 말아야합니다. 사이트가 차단되었습니다”라는 메시지를 표시하면서 포트 127.0.0.2의 모든 요청을 거부 할 수 있습니다.
바람둥이 페이지는 어디에서 오는가?
Apache Tomcat은 포트에서 수신 대기하고 브라우저로 보낼 컨텐츠를 생성하는 Java 프로그램을 실행하는 서버입니다.
답변
웹 브라우저에 www.google.com을 입력하면 기본 포트 80에서 Google 서버에 대한 연결 (DNS 조회를 통해 www.google.com이 어떤 IP 주소인지 확인)을 열고 웹 페이지를 요청합니다. Google 서버는 브라우저가 화면에 그리는 웹 페이지로 응답합니다 (일반적으로 이미지, CSS 및 JavaScript를 추가로 호출하여).
localhost : 8080에 갈 때도 똑같습니다. 로컬 호스트 서버 이름은 항상 실행중인 컴퓨터로 확인되며 가짜 IP 주소 127.0.0.1을 사용합니다 (컴퓨터에는 두 개의 IP 주소가 있습니다.이 가짜 주소는 모든 컴퓨터에 있고 실제 주소입니다). 따라서 포트 8080에서 로컬로 수신 대기하는 Tomcat 인스턴스가 있어야합니다.
기본 http 포트 80이 아닌 포트 8080이 왜 필요한가요? 웹 서버가 이미있는 경우에 대비합니다.
일반적으로 웹 서버와 앱 서버가 있습니다.
-
Apache 서버와 같은 웹 서버는 정적 페이지를 제공합니다. 사실상 그것은 일방적 인 FTP 서버와 같습니다. TCP 연결을 열고 HTTP 명령 (일반적으로 GET)을 사용하여 파일을 요청하십시오. 웹 서버는 HTML 파일을 반환하고 브라우저는 해당 파일을 다운로드하여 구문 분석하고 다른 이미지가 필요한지 확인합니다. 웹 서버는 매우 빠르지 만 기본적으로 로컬 디스크에서 파일을 들어 올리고 반환합니다.
-
Tomcat 또는 JBoss와 같은 App Server는 일반적으로 디스크에서 직접 들어 올리지 않고 요청하는 페이지를 “만들기”위해 코드를 실행한다는 점을 제외하면 비슷합니다. 해당 페이지를 만드는 것은 응용 프로그램에 달려 있습니다. 그것은 데이터베이스에 연결하고, 프로그램을 실행하고, 무작위로 페이지를 제공 할 수 있습니다 … 등 온라인 뱅킹에 로그온하면 앱 서버가 세션을 설정하고 쿠키에 세션 ID를 반환합니다. 로그 아웃 할 때까지 요청을 할 때마다 브라우저가 다시 전송됩니다. “내 잔액”페이지를 요청하면 은행에서 세션 ID를 기반으로하는 사용자를 찾은 다음 데이터베이스로 이동하여 이름과 은행 잔고를 찾은 다음 “Hi John Smith, 잔액 € 100입니다. ” 앱 서버는 일반적으로 웹 서버보다 느리지 만 더 다양합니다.
많은 장소는 기본 포트 80에서 WebServer를 실행 한 다음 보조 포트에서 실행되는 AppServer (8080)를 갖습니다. 따라서 정적 페이지는 빠르게 제공되며 사용자가 동적 페이지로 연결되는 링크를 클릭하면 링크가 8080 (앱 서버가 응답)으로 이동하거나 웹 서버가 특정 요청을 앱 서버에 전달하도록 설정됩니다 ( 어떤 경우에는 여전히 기본 포트 80처럼 보이므로 사용자에게는 조금 더 좋아 보입니다).
물론 이것은 매우 높은 수준의 개요이며 흑백은 없습니다. 대부분의 웹 서버는 스크립트 (일반적으로 perl 또는 PHP를 사용하여 스크립트를 통해 CGI를 통해 CGI)를 실행하여 일부 동적 컨텐츠를 작성할 수 있으며 대부분의 앱 서버는 웹 서버와 같은 일반 파일을 제공 할 수도 있습니다. 실제로 앱 서버를 실행하고 Tomcat 포트 번호를 8080에서 80으로 변경할 수 있습니다.
마지막으로 많은 응용 프로그램이 각 요청에 대해 전체 HTML 페이지를 제공하지 않고 (앱 서버에 느리고 비효율적 인 것으로 보임) 대신 AJAX를 사용하여 JSON 또는 XML을 보내는 데이터 스 니펫으로 응답합니다. 검색어를 입력하는 데 사용한 원래 www.google.com으로 돌아가서 검색을 누르고 결과 페이지를 얻습니다. 대신, 입력하는 동안 브라우저는 AJAX 요청을 지속적으로 Google에 전송하여 지금까지 입력 한 내용을 기반으로 최신 검색 결과로 응답 한 다음 브라우저가 페이지를 업데이트합니다. 이는 사용자가 페이지를 더 빠르고 동적으로 제출할 때까지 기다릴 필요가 없다는 것을 의미합니다 (구식 데스크톱 앱처럼).
답변
이 시나리오에서는 로컬 호스트 127.0.0.1 (루프백 인터페이스)을 해결하기위한 요청을 보내고 포트 8080에서 Apache가 청취하도록 구성되어 있습니다. 포트 8080에서 localhost에 액세스하면 기본 VirtualHost가 리턴됩니다.
답변
웹 주소로 로컬 호스트를 간단하게 만들면 로컬 컴퓨터에 연결되며이 경우 Apache는 웹 서버로 설치됩니다.
두 번째 부분 인 : 8080은 해당 웹 주소의 포트 8080에 연결하는 것을 의미합니다. 지정하지 않으면 웹 브라우저가 기본 웹 서버 포트 (포트 80)에 연결됩니다.
아직 IP 주소를 사용하는 경우 localhost는 127.0.0.1에 대한 고정 DNS 링크입니다.
당신이 거기에 도착해야 …