Sau khi bạn truy cập URL lên trình duyệt, chuyện gì sẽ xẩy ra đằng sau đó? Đây là một câu hỏi phỏng vấn thường gặp dành cho các bạn kỹ sư phần mềm mới tốt nghiệp để kiểm tra các kiến thức về mạng máy tính. Có nhiều khía cạnh xẩy ra đằng sau việc truy cập một website thông qua một URL, tuy nhiên trong giới hạn bài viết này, chúng ta chỉ tập trung vào khía cạnh mạng máy tính.
Tags: #networking, #technical, #browser, #dnsSau khi bạn truy cập URL lên trình duyệt, chuyện gì sẽ xẩy ra đằng sau đó? Đây là một câu hỏi phỏng vấn thường gặp dành cho các bạn kỹ sư phần mềm mới tốt nghiệp để kiểm tra các kiến thức về mạng máy tính. Có nhiều khía cạnh xẩy ra đằng sau việc truy cập một website thông qua một URL, tuy nhiên trong giới hạn bài viết này, chúng ta chỉ tập trung vào khía cạnh mạng máy tính.
Ngoài ra đây cũng là một câu hỏi rất thú vị, bất kì ai cũng nên biết để hiểu hơn cách mạng máy tính hoạt động và cách các máy tính tương tác với nhau qua mạng.
Tổng quát, sau khi bạn nhập www.google.com vào trình duyệt web, các bước sau đây sẽ diễn ra:
Sau khi bạn gõ URL lên trình duyệt web, rất nhiều hành động được diễn ra ngầm ở đằng sau đó. Trình duyệt web (client) phải tìm ra địa chỉ IP của máy chủ để gửi và nhận dữ liệu. Khi người dùng nhập URL rút gọn (được tạo bằng cách sử dụng trình rút gọn URL chẳng hạn như bitly) vào trình duyệt, sẽ có một bước chuyển hướng URL bổ sung trước khi truyền dữ liệu giữa client và máy chủ.
Hệ thống tên miền (DNS) là một cơ sở dữ liệu lưu trữ ánh xạ từ tên miền (như google.com) sang địa chỉ IP của nó (142.250.185.78). Bạn có thể so sánh DNS với một sổ địa chỉ hoặc một danh bạ điện thoại.Bạn cần một tên miền (thay vì sử dụng địa chỉ IP trực tiếp) vì nó rất dễ nhớ tên miền. Mỗi máy chủ (ví dụ, google.com) phải có một địa chỉ IP duy nhất trên internet. DNS cho phép bạn tìm địa chỉ IP của máy chủ cụ thể trên internet bằng tên miền của nó.Không gian tên miền (phân cấp DNS) là một cấu trúc cây đảo ngược. Phân cấp DNS có một miền duy nhất ở cấp cao nhất được gọi là root domain (miền gốc).
Quá trình phân giải DNS bắt đầu từ root domain, TLD (top level domain), và tiến xuống miền cấp hai. Quá trình phân giải DNS có thể đi qua nhiều miền cấp ba cho đến khi tên máy chủ của trang web được phân giải thành địa chỉ IP. Một URL bao gồm các phần sau:
Phần giao thức của URL thông báo cho máy chủ web biết sử dụng giao thức nào khi truy cập một trang web. Tên miền phụ chỉ ra các dịch vụ được cung cấp bởi trang web như maps
hoặc mail
. Tên miền cấp hai chỉ tên của trang web. Tên miền cấp cao nhất chỉ loại hình thực thể mà tổ chức đăng ký trên internet.Quá trình phân giải DNS là một quy trình tuần tự. Các bước tiếp theo của quá trình phân giải DNS chỉ được thực hiện nếu bộ nhớ cache ở bước trước không tìm thấy tên miền đó.
Các hoạt động sau đây được thực hiện theo thứ tự tuần tự để phân giải DNS:
Một khi truy vấn DNS được giải quyết, các thành phần trung gian trong quá trình giải quyết DNS sẽ lưu kết quả vào bộ nhớ cache với thời gian hết hạn Time-to-live (TTL). Nếu bạn thay đổi địa chỉ IP của một trang web, Client nên chờ đến khi TTL hết hạn để tự động vô hiệu hóa bộ nhớ cache. Bộ nhớ cache cũng cải thiện độ trễ của các client request tiếp theo.
Client nên tạo một kết nối đến máy chủ để truyền và nhận dữ liệu. Transmission Control Protocol (TCP) là một trong những giao thức cơ bản trong Giao thức truyền tải siêu văn bản (HTTP).
Bạn có thể so sánh HTTP với một giao thức trừu tượng hoặc cấp cao (Lớp ứng dụng hoặc lớp 7 trong mô hình OSI) được sử dụng giữa client và server để truyền dữ liệu. Dữ liệu được truyền trong HTTP có thể đọc được bởi con người. TCP là một giao thức cấp thấp hơn (Lớp vận chuyển hoặc lớp 4 trong mô hình OSI) xử lý việc phát hiện lỗi và truyền lại các gói dữ liệu.
Client thực hiện một bước bắt tay ba chiều với máy chủ để thiết lập kết nối TCP. TCP cần bắt tay ba chiều vì kênh giao tiếp là kênh hai chiều. Nếu bạn thực hiện một bước bắt tay hai chiều, bạn chỉ có thể bắt đầu một kênh giao tiếp một chiều.
Các tin nhắn đồng bộ hóa (SYN) và xác nhận (ACK) sau đây được gửi giữa Client và máy chủ để mở kết nối TCP:Client gửi một yêu cầu SYN với một số thứ tự ngẫu nhiên (x). Máy chủ phản hồi với SYN-ACK. Số xác nhận được đặt thành một số lớn hơn một so với số thứ tự nhận được (x+1). Máy chủ gửi một số thứ tự ngẫu nhiên khác (y). Client gửi ACK kèm với một số xác nhận là một số lớn hơn một so với số thứ tự nhận được (y+1).
Hypertext Transfer Protocol Secure (HTTPS) là một phần mở rộng của Hypertext Transfer Protocol (HTTP). Dữ liệu được truyền qua HTTP không được mã hóa và do đó bất kỳ ai cũng có thể nghe trộm các gói dữ liệu được truyền.
HTTPS mã hóa dữ liệu được truyền và ngăn chặn các cuộc tấn công giữa người giữa. Hầu hết các trang web hiện đại trên internet cho phép HTTPS để giao tiếp an toàn. HTTPS sử dụng cổng 443 theo mặc định trong khi HTTP sử dụng cổng 80.
Trong mã hóa không đối xứng, có một cặp khóa - khóa công khai và khóa riêng tư. Khóa công khai có thể chia sẻ với bất kỳ ai trên internet trong khi khóa riêng tư không bao giờ được chia sẻ. Trong mã hóa đối xứng, chỉ có một khóa riêng tư và cả hai bên đều cần có quyền truy cập vào cùng một khóa để mã hóa hoặc giải mã tin nhắn.
Bạn có thể so sánh mã hóa không đối xứng với dịch vụ email. Khóa công khai giống như địa chỉ email của bạn và khóa riêng tư giống như mật khẩu được sử dụng để truy cập tài khoản email. Bất kỳ ai cũng có thể dễ dàng xác minh rằng bạn đã gửi email bằng cách nhìn vào địa chỉ email của người gửi. Tuy nhiên, nếu ai đó gửi email đến tài khoản của bạn, chỉ có bạn mới có thể truy cập nó bằng cách sử dụng mật khẩu.
Các hoạt động sau được thực hiện giữa máy khách và máy chủ để nâng cấp HTTP thành HTTPS trước khi chuyển giao bất kỳ gói dữ liệu nào:
Ai đó nghe lén các tin nhắn yêu cầu hoặc phản hồi nâng cấp HTTP sẽ không thể bắt được bất kỳ dữ liệu có ý nghĩa nào do sự mã hóa không đối xứng. Một khi HTTPS đã được nâng cấp, truyền thông tiếp theo giữa máy khách và máy chủ sử dụng mã hóa đối xứng.Để tạo một chứng chỉ SSL, máy chủ thực hiện Certificate Signing Request (CSR) đến CA.
Certificate Signing Request (CSR) chuyển khóa công khai của máy chủ đến Tổ chức Chứng chỉ (CA). CA có một cặp khóa công khai và khóa riêng tư. CA ký chữ ký số cho khóa công khai của máy chủ bằng khóa riêng tư của CA và tạo một chứng chỉ SSL. Bất kỳ ai trên internet có quyền truy cập vào khóa công khai của CA đều có thể dễ dàng xác minh chữ ký số của chứng chỉ SSL.
Giao thức Truyền tải Siêu văn bản (HTTP) là một cơ chế để vận chuyển dữ liệu giữa một máy khách và một máy chủ. Máy khách đưa ra HTTP(S) Request đến máy chủ để lấy hoặc chuyển giao dữ liệu. Máy chủ phản hồi với nội dung liên quan và thông tin trạng thái hoàn thành về yêu cầu.
Khách hàng thực hiện HTTP Request loại GET để xem một trang web (ví dụ: google.com). Khách hàng thực hiện HTTP Request loại POST nếu khách hàng muốn gửi dữ liệu đến máy chủ (ví dụ: tìm kiếm một từ khóa trên google.com).
URL có thể được phân chia thành nhiều thành phần. Tên miền được sử dụng để xác định máy chủ. Đường dẫn URL được sử dụng để xác định tài nguyên (một tệp cụ thể hoặc thông tin) trên máy chủ. Các tham số truy vấn được sử dụng để lọc hoặc sắp xếp dữ liệu (hoặc truyền thông tin có trạng thái). Dưới đây là quy trình đơn giản khi bạn xem trang web google.com trên máy khách của mình:
Yêu cầu HTTP được tạo thành từ các thực thể sau:
This content is only supported in a Lark Docs
Trình duyệt có thể tạo nhiều HTTP Request đến máy chủ để lấy tất cả dữ liệu liên quan cho một trang web như CSS, JavaScript, Hình ảnh hoặc Video. Cuối cùng, trình duyệt hiển thị HTML và nội dung nhận được từ máy chủ.
Tùy thuộc vào đầu mục phản hồi HTTP (Kiểm soát Bộ nhớ đệm), trình duyệt lưu trữ phản hồi để ngăn chặn việc yêu cầu lại cùng một dữ liệu từ máy chủ. Bộ nhớ đệm cải thiện độ trễ của trang web.
Thường thì, máy khách lưu trữ bản đồ DNS và phản hồi từ máy chủ với một thời gian hết hạn (TTL) tùy ý. Dịch vụ DNS không được truy vấn nhiều lần khi bạn quay lại cùng một trang web do có bộ nhớ đệm cục bộ.
Trong một hệ thống quy mô internet, có nhiều thành phần trung gian để đáp ứng nhu cầu tải đồng thời. Mạng Phân phối Nội dung (CDN), Bộ Cân Bằng Tải, và Reverse Proxy là một số thành phần trung gian có thể xuất hiện trong một hệ thống quy mô lớn.