Chính xác thì chuyện gì đang xảy ra khi tôi truy cập localhost: 8080 trong trình duyệt web của mình? (Mèo Tom Apache)


11

Tôi đã dành sự nghiệp của mình để làm tất cả các chương trình ứng dụng cục bộ (ứng dụng C ++ và không có gì). Tuy nhiên, tôi đang cố gắng đào sâu vào thế giới web. Tôi đang sử dụng Eclipse (Mars) và Apache Tomcat 8.0.23 để thử và thiết lập một envoirnment trong đó tôi có thể thử nghiệm và tìm hiểu về lập trình phía máy chủ (JSP, PHP, v.v.). Tôi có tất cả các thiết lập sao cho khi tôi gõ

localhost:8080

trong trình duyệt của tôi, nó hướng đến trang tomcat chính xác. Tôi biết điều này có lẽ rất đơn giản, nhưng nó là loại thổi vào tâm trí của tôi ở đây.

Chính xác thì chuyện gì đang xảy ra khi tôi gõ localhost?

Trang tomcat đến từ đâu nếu không phải là internet? Tôi khá chắc chắn dữ liệu đến từ một máy chủ, nhờ Tomcat, có trên PC của tôi, nhưng làm thế nào trình duyệt của tôi biết nơi tìm thông tin chỉ từ localhost: 8080?

Tôi cho rằng 8080 là một cổng hoặc một cái gì đó, nhưng tôi thực sự không chắc về điều đó và nếu đó là một cổng tôi không thực sự chắc chắn điều đó có nghĩa là gì.

Về cơ bản tất cả những gì tôi biết (tôi nghĩ ...) về phát triển web phía máy chủ là trong phát triển web html / css thuần túy, tất cả công việc được thực hiện cục bộ sau khi mọi thứ được tải xuống, nhưng với máy chủ, một số công việc (bên trong một số dấu phân cách) bị tắt máy chủ và quay trở lại được đưa vào html ở dạng khác (giống như gửi dữ liệu đến một hàm trong C ++ và dữ liệu khác được trả về), sau đó được đưa vào trang một lần nữa.


2
Tôi muốn mời bạn đọc RFC 7230 .
Michael Hampton

Có vẻ như đó là một đêm dài;)
softeng

Câu trả lời:


9

Chính xác thì chuyện gì đang xảy ra khi tôi hướng trình duyệt web của mình đến localhost: 8080?

  1. Bạn đang khiến trình duyệt web yêu cầu hệ điều hành của bạn giải quyết tên máy chủ localhost. Hệ thống hoạt động bình thường sẽ giải quyết hostname localhostđể 127.0.0.1, giao diện vòng lặp lại của bạn.

  2. Bất kỳ tên máy chủ hoặc địa chỉ IP nào được theo sau bởi một :và một số cổng như :8080yêu cầu trình duyệt kết nối với cổng TCP đó thay vì cổng máy chủ web mặc định 80.

    Cũng như http://localhost:80/, http://localhost/, http://127.0.0.1/:80, và http://127.0.0.1/mỗi kết nối đến máy chủ cùng và cảng, vì vậy không http://localhost:8080/http://127.0.0.1:8080/cũng kết nối với địa chỉ IP tương tự nhưng trên cổng TCP 8080

Lưu ý bổ sung: Trong HTTP / 1.1, mặc dù trình duyệt web kết nối với cùng một địa chỉ IP và cổng, với nhiều máy chủ web, có một sự khác biệt nhỏ giữa localhost và 127.0.0.1. Tùy thuộc vào những gì trong thanh địa chỉ, trình duyệt của bạn sẽ gửi trường tiêu đề yêu cầu với Host: localhosthoặc Host: 127.0.0.1trong đó. Khi máy chủ web được định cấu hình đúng, trường tiêu đề Máy chủ của trình duyệt cho phép một máy chủ web nghe trên một cổng địa chỉ IP duy nhất và phục vụ các trang web khác nhau cho nhiều tên miền khác nhau phân giải cùng một địa chỉ IP.

Làm thế nào để hệ điều hành thường giải quyết tên máy chủ như localhost?

  1. Trên các hệ thống Unix hoặc Unix như HĐH như Linux hoặc Freebsd, tệp là / etc / hosts và có khả năng có các dòng như:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. Trên các cửa sổ, tệp đang c:\windows\system32\drivers\etc\hostsvà thường sẽ có một dòng tương tự:

    127.0.0.1   localhost
    

Lưu ý thêm: Nếu bạn thích, bạn có thể thêm dòng vào tệp máy chủ của mình như:

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 
  • Trình định vị tài nguyên thống nhất (URL) http://developer.yourdomain.com:8080/trong thanh địa chỉ của trình duyệt của bạn, chỉ đạo trình duyệt web tạo kết nối TCP tới cổng 8080 của địa chỉ vòng lặp cục bộ 127.0.0.1.

  • Hơn nữa, theo rfc1700 trang 4 bất kỳ địa chỉ nào trong phạm vi 127.0.0.0/8 cũng là một địa chỉ loopback. Do đó, một máy chủ web được cấu hình đúng đang chạy trên máy tính của bạn có thể từ chối tất cả yêu cầu trên cổng 127.0.0.2 trong khi đưa ra thông báo "Bạn không nên truy cập vào đây. Trang web bị chặn" cho các kết nối trên 127.0.0.3.

Trang tomcat đến từ đâu?

Apache Tomcat là một máy chủ lắng nghe trên một cổng và chạy các chương trình java tạo nội dung để gửi đến trình duyệt của bạn.


Không giải thích bất cứ điều gì. Rất hời hợt
Xanh

@Green cụ thể bạn đang tìm kiếm cái gì? Tên localhost phân giải thành một địa chỉ và số cổng TCP, được bảo vệ. Tôi không trình bày: cách các máy chủ khác nhau xử lý việc liệt kê vào cổng, nhóm máy chủ xử lý nhiều kết nối, cách định cấu hình máy chủ web, hoạt động bên trong của giao tiếp TCP, giải thích tiêu đề HTTP đầy đủ hoặc cách phân giải tên hoạt động cho các miền không tìm thấy trong máy chủ mỗi tập tin sẽ vượt xa phạm vi câu hỏi.
Keith Reynold

1

Khi bạn nhập www.google.com vào trình duyệt web, nó sẽ mở một kết nối trên cổng mặc định 80 đến máy chủ Google (thông qua tra cứu DNS để xem địa chỉ IP www.google.com là gì) và yêu cầu trang web. Máy chủ Google phản hồi với một trang web mà trình duyệt của bạn vẽ trên màn hình (thường bằng cách thực hiện các cuộc gọi tiếp theo cho hình ảnh, CSS và JavaScript).

Khi bạn truy cập localhost: 8080, đó chính là điều tương tự. Tên máy chủ Localhost luôn phân giải cho máy bạn đang chạy và sử dụng địa chỉ IP giả là 127.0.0.1 (máy tính của bạn sẽ có hai địa chỉ IP - địa chỉ giả này mà mọi máy tính đều có và địa chỉ thật). Vì vậy, bạn phải có một phiên bản Tomcat chạy cục bộ để nghe các kết nối trên cổng 8080.

Tại sao cổng 8080 thay vì cổng http mặc định 80? Vâng, đó là trong trường hợp bạn đã có một máy chủ web.

Thông thường bạn có máy chủ web và máy chủ ứng dụng.

  1. Các máy chủ web (như Apache httpd) phục vụ các trang tĩnh. Trên thực tế, nó giống như một máy chủ FTP một chiều ưa thích. Bạn mở một kết nối TCP và yêu cầu một tệp bằng các lệnh HTTP (thường là GET). Máy chủ web trả về một tệp HTML và trình duyệt của bạn tải xuống và phân tích cú pháp, thấy nó cần các hình ảnh khác và yêu cầu chúng. Một máy chủ web rất nhanh nhưng về cơ bản sẽ nhấc các tệp ra khỏi đĩa cục bộ và trả lại chúng.

  2. Máy chủ ứng dụng (như Tomcat hoặc JBoss) tương tự ngoại trừ nó thường chạy mã để "tạo" trang bạn đang yêu cầu, thay vì nhấc nó trực tiếp từ đĩa. Những gì nó làm để tạo ra trang đó là tùy thuộc vào ứng dụng của bạn. Nó có thể kết nối với cơ sở dữ liệu, chạy chương trình, phục vụ ngẫu nhiên một trang ... v.v. Khi bạn đăng nhập vào ngân hàng trực tuyến của mình, máy chủ ứng dụng sẽ thiết lập một phiên cho bạn, trả về id phiên đó trong cookie mà bạn trình duyệt gửi lại mỗi lần bạn thực hiện yêu cầu cho đến khi bạn đăng xuất. Vì vậy, nếu bạn yêu cầu trang "số dư của tôi" thì ngân hàng sẽ tìm kiếm bạn là ai dựa trên id phiên của bạn, sau đó truy cập cơ sở dữ liệu để lấy tên và số dư ngân hàng của bạn, sau đó tạo một trang có nội dung "Xin chào John Smith, số dư của bạn là € 100. " Máy chủ ứng dụng thường chậm hơn, nhưng linh hoạt hơn so với Máy chủ web.

Nhiều nơi có Máy chủ Web chạy trong cổng mặc định là 80 và sau đó AppServer chạy trên cổng phụ (như 8080). Vì vậy, các trang tĩnh được phục vụ nhanh và khi người dùng nhấp vào liên kết đưa họ đến trang động, liên kết sẽ chuyển đến 8080 (máy chủ ứng dụng phản hồi) hoặc máy chủ web được thiết lập để chuyển tiếp một số yêu cầu đến máy chủ ứng dụng (trong trong trường hợp đó, nó vẫn giống như cổng 80 mặc định và do đó người dùng sẽ trông đẹp hơn một chút).

Tất nhiên đây là một tổng quan cấp độ rất cao và không có gì là đen trắng. Hầu hết các Máy chủ web có thể tạo một số nội dung động bằng cách chạy các tập lệnh (thường là CGI thông qua các tập lệnh bằng perl hoặc PHP) và hầu hết các máy chủ ứng dụng cũng có thể phục vụ các tệp đơn giản như máy chủ web. Trên thực tế, có thể chỉ cần chạy một máy chủ ứng dụng và thay đổi số cổng tomcat từ 8080 thành 80.

Cuối cùng, nhiều ứng dụng đang chuyển khỏi việc cung cấp các trang HTML đầy đủ cho mỗi yêu cầu đến máy chủ ứng dụng (được xem là chậm và không hiệu quả) và thay vào đó chỉ phản hồi bằng các đoạn dữ liệu bằng AJAX để gửi JSON hoặc XML. Quay lại www.google.com gốc mà bạn đã sử dụng để nhập truy vấn tìm kiếm của mình, nhấn Tìm kiếm và nhận trang kết quả của bạn. Bây giờ, thay vào đó, khi bạn nhập, trình duyệt của bạn liên tục gửi các yêu cầu AJAX tới Google, phản hồi với kết quả tìm kiếm cập nhật dựa trên những gì bạn đã nhập cho đến nay và sau đó trình duyệt của bạn cập nhật trang. Điều đó có nghĩa là không cần phải đợi người dùng gửi trang nhanh hơn và năng động hơn cho người dùng (giống như một ứng dụng máy tính để bàn cũ của trường học).


1

Trong trường hợp này, bạn gửi yêu cầu giải quyết localhost là 127.0.0.1 (giao diện loopback) và Apache được cấu hình để nghe trên cổng 8080, khi bạn truy cập localhost trên cổng 8080, nó sẽ trả về Virtualhost mặc định.


0

Làm cho nó đơn giản, localhost làm địa chỉ web kết nối với máy cục bộ của bạn, trong trường hợp này bạn đã cài đặt Apache làm máy chủ web.

Phần thứ hai, 8080, có nghĩa là kết nối với cổng 8080 của địa chỉ web đó. Nếu bạn không chỉ định nó, trình duyệt web của bạn sẽ kết nối với cổng máy chủ web mặc định, đó là cổng 80.

Nếu bạn đang truy cập địa chỉ IP, localhost là một liên kết DNS cố định đến 127.0.0.1.

Nên đưa bạn đến đó ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.