Điều gì xảy ra khi bạn nhập URL trong trình duyệt [đã đóng]


293

Ai đó có thể cho tôi biết tất cả những gì xảy ra đằng sau hậu trường từ khi tôi nhập URL trong trình duyệt cho đến khi tôi thấy trang trên trình duyệt không? Một tài khoản chi tiết của quá trình sẽ giúp đỡ rất nhiều.


2
Mặc dù điều này có thể liên quan đến lập trình (cuối cùng) - mức độ chi tiết mà điều này có thể được trả lời sẽ (và có) khối lượng đầy. Vui lòng trình bày lại như một truy vấn lập trình.
KevinDTimm

28
Nhận sách DNS và Bind của O'Reilly . Chỉ có 624 trang.
Wim Hollebrandse

7
edusagar.com/articles/view/70/ trộm đây là câu trả lời tốt nhất có thể!
Shivendra

1
Vì lợi ích của hậu thế, đây là phiên bản chi tiết về cách thức hoạt động của internet - goo.gl/eEHmpZ .
Ashwin KRnamurthy

4
Giờ đây đã có một nỗ lực hợp tác để trả lời chi tiết nhất có thể: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor rời khỏi tòa nhà vào

Câu trả lời:


587

Chú ý: đây là một bản phác thảo cực kỳ thô sơ và đơn giản hóa , giả sử yêu cầu HTTP đơn giản nhất có thể (không HTTPS, không HTTP2, không bổ sung), DNS đơn giản nhất có thể, không proxy, IPv4 xếp chồng đơn, chỉ một yêu cầu HTTP, máy chủ HTTP đơn giản trên đầu kia, và không có vấn đề trong bất kỳ bước nào. Đây là, đối với hầu hết các ý định và mục đích đương đại, một kịch bản không thực tế; tất cả những thứ này phức tạp hơn nhiều trong sử dụng thực tế và ngăn xếp công nghệ đã trở thành một thứ tự phức tạp hơn kể từ khi nó được viết. Với ý nghĩ này, dòng thời gian sau đây vẫn có phần hợp lệ:

  1. trình duyệt kiểm tra bộ đệm; nếu đối tượng được yêu cầu trong bộ đệm và mới, hãy bỏ qua # 9
  2. trình duyệt yêu cầu HĐH cho địa chỉ IP của máy chủ
  3. Hệ điều hành thực hiện tra cứu DNS và trả lời địa chỉ IP cho trình duyệt
  4. trình duyệt mở kết nối TCP đến máy chủ (bước này phức tạp hơn nhiều với HTTPS)
  5. trình duyệt gửi yêu cầu HTTP thông qua kết nối TCP
  6. trình duyệt nhận được phản hồi HTTP và có thể đóng kết nối TCP hoặc sử dụng lại cho yêu cầu khác
  7. trình duyệt kiểm tra xem phản hồi là chuyển hướng hay phản hồi có điều kiện (mã trạng thái kết quả 3xx), yêu cầu ủy quyền (401), lỗi (4xx và 5xx), v.v.; những điều này được xử lý khác với phản hồi bình thường (2xx)
  8. nếu được lưu trữ, phản hồi được lưu trữ trong bộ đệm
  9. trình duyệt giải mã phản hồi (ví dụ: nếu nó được nén)
  10. trình duyệt xác định phải làm gì với phản hồi (ví dụ: đây có phải là trang HTML không, có phải là hình ảnh không, có phải là clip âm thanh không?)
  11. trình duyệt hiển thị phản hồi hoặc cung cấp hộp thoại tải xuống cho các loại không được nhận dạng

Một lần nữa, thảo luận về từng điểm này đã lấp đầy vô số trang; chỉ coi đây là một bản tóm tắt, được rút ngắn để rõ ràng. Ngoài ra, có nhiều điều khác xảy ra song song với điều này (xử lý địa chỉ nhập, tìm nạp trước đầu cơ, thêm trang vào lịch sử trình duyệt, hiển thị tiến trình cho người dùng, thông báo bổ trợ và tiện ích mở rộng, hiển thị trang trong khi tải xuống, đường ống, theo dõi kết nối cho giữ nguyên, quản lý cookie, kiểm tra nội dung độc hại, v.v.) - và toàn bộ hoạt động trở nên phức tạp hơn với HTTPS (chứng chỉ và mật mã và ghim, oh my!).


Điều gì sẽ xảy ra trong trường hợp yêu cầu https ở bước 4, Bạn có thể giải thích thêm một chút không?
Mohammad Raheem

2
Đó là cách vượt quá phạm vi của câu trả lời này. Nhưng hãy kiểm tra trang GH được liên kết ở trên, nó cung cấp một cái nhìn tổng quan ngắn gọn: github.com/alex/what-happens-when/blob/master/ Kẻ
Piskvor rời khỏi tòa nhà vào

41

Đầu tiên máy tính tra cứu máy chủ đích. Nếu nó tồn tại trong bộ đệm DNS cục bộ, nó sử dụng thông tin đó. Mặt khác, truy vấn DNS được thực hiện cho đến khi tìm thấy địa chỉ IP.

Sau đó, trình duyệt của bạn sẽ mở kết nối TCP đến máy chủ đích và gửi yêu cầu theo HTTP 1.1 (hoặc có thể sử dụng HTTP 1.0, nhưng các trình duyệt thông thường không thực hiện được nữa).

Máy chủ tra cứu tài nguyên cần thiết (nếu nó tồn tại) và trả lời bằng giao thức HTTP, gửi dữ liệu đến máy khách (= trình duyệt của bạn)

Trình duyệt sau đó sử dụng trình phân tích cú pháp HTML để tạo lại cấu trúc tài liệu mà sau này được trình bày cho bạn trên màn hình. Nếu nó tìm thấy các tham chiếu đến các tài nguyên bên ngoài, chẳng hạn như hình ảnh, tệp css, tệp javascript, chúng được phân phối giống như tài liệu HTML.


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.