Trong bài viết này, tôi muốn người đọc hình dung một khái niệm rất cơ bản của thế giới web. Trước đây, tôi đã viết về những thứ "sang trọng" của thị trường hiện nay, ví dụ hành trình Angular, cơ bản React, v.v. Nhưng hôm nay, tôi muốn người đọc đi vào hành trình mà họ gặp đầu tiên khi truy cập bất kỳ URL nào.
Vì chủ đề tự giải thích - khi chúng ta truy cập bất kỳ URL thì gì xảy ra? - hãy bắt đầu!
Trước khi thảo luận gì xảy ra sau khi truy cập URL, chúng ta phải xem URL thực sự là gì, và các phần khác nhau của URL có ý nghĩa gì - đúng không? Không lãng phí thời gian, hãy hiểu thêm về URL.
URL – Uniform Resource Locator (Bộ Định vị Tài nguyên Thống nhất)
Nếu nhìn vào tên đầy đủ, nó tự giải thích: nó có vị trí của tài nguyên mà chúng ta muốn truy cập. Nó là địa chỉ của nơi chúng ta muốn đi để tương tác hoặc tìm thông tin.
Hãy nhìn vào đời sống hàng ngày. Nếu bạn muốn đến nhà bạn để làm việc hoặc lấy thông tin, bạn cần địa chỉ của họ. Cái tương tự xảy ra ở thế giới web lớn này: chúng ta phải đưa địa chỉ của trang web muốn truy cập. Trang web giống như ngôi nhà và URL là địa chỉ.
Cấu tạo của một URL
Bây giờ, chúng ta biết URL là gì nhưng vẫn chưa biết các phần của URL. Hãy đi nào!
Ví dụ:
https://www.example.com/page1
Ở đây, phần đầu là 'https'. Điều này nói cho trình duyệt biết nó nên dùng giao thức nào. Có thể là http, https, ftp, v.v. Một giao thức là tập quy tắc trình duyệt dùng để truyền thông qua mạng. 'https' là bản an toàn, tức thông tin trao đổi an toàn.
Phần thứ hai www.example.com là tên miền (domain name). Bạn có thể liên hệ nó với nhà bạn. Đó là địa chỉ trang web. Chúng ta dùng nó để đến máy chủ (máy tính được huấn luyện) chịu trách nhiệm phục vụ thông tin cho trang web đó. Đợi! Bạn có thể nghĩ, vài giây trước tôi nói URL là địa chỉ mà tôi cũng nói tên miền là địa chỉ. Bạn có thể bị nhầm lẫn. Đừng nhầm lẫn!
Khác biệt giữa URL và Tên miền (Domain Name)
Khác biệt chính là URL là địa chỉ hoàn chỉnh. URL nói về phương thức trao đổi thông tin, đường dẫn sau khi đến trang web. Trong khi tên miền là một phần của URL.
Hãy lấy ví dụ trước để hiểu rõ hơn. Bạn có thể nói địa chỉ nhà bạn là tên miền, trong khi URL không chỉ nói địa chỉ nhà bạn (tên miền) mà còn cách bạn giao tiếp như nói trong phòng riêng (an toàn) hay trước mặt mọi người (thông tin có thể rò rỉ). Nó cũng nói đường dẫn, tức phần nào của nhà bạn sẽ đến sau khi vào nhà. Do đó, tên miền là một phần của URL. Tên miền với thêm thông tin là URL.
Tôi hy vọng bây giờ bạn rõ về URL. Hãy đi vào phần tiếp theo.
Tên Miền (Domain Name)
Ở phần trước, tôi giải thích về tên miền, nhưng chưa sâu. Tôi muốn bạn đi sâu hơn. Như tôi nói, tên miền là địa chỉ trang web. Nó cho bản sắc duy nhất cho trang web của bạn trong thế giới web khổng lồ này. Không hai tên miền nào giống nhau NHƯNG - Có! Có 'nhưng'. Đây không phải là định nghĩa duy nhất của tên miền. Có câu chuyện khác đằng sau. Hãy đi vào câu chuyện đó.
Chúng ta biết, khi truy cập bất kỳ URL hay tên miền, trang web mở ra với nội dung. Một máy chủ (máy tính được huấn luyện) phục vụ nó. Chúng ta cũng biết mỗi máy tính có địa chỉ IP dùng để truyền thông qua Internet. Đó là địa chỉ như tên gọi 'IP address'. Khi chúng ta truy cập bất kỳ URL, thực tế chúng ta đang truy cập địa chỉ IP của máy tính chịu trách nhiệm phục vụ nội dung trang web (hosting).
Nhưng, bây giờ, bạn có thể nghĩ cái gì... mọi thứ都是地址? Tại sao tên miền tồn tại nếu địa chỉ IP đã có? Tại sao không dùng địa chỉ IP để lấy nội dung trang web?
Vâng! Bạn có thể dùng địa chỉ IP để lấy nội dung trang web nhưng thật sự!.. Bạn có nhớ được địa chỉ IP liên kết của mỗi trang web? Chắc chắn không! Nó khó để nhớ địa chỉ IP của mọi trang web. Đó là lý do tên miền xuất hiện.
Bạn có thể liên hệ với danh bạ điện thoại. Bạn không nhớ số của mọi người, nhưng nhớ tên. Cái khái niệm tương tự áp dụng ở đây. Bạn không thể nhớ những địa chỉ IP đáng sợ, nhưng bạn có thể dễ dàng nhớ tên miền.
Khoảng dữ liệu khổng lồ này được duy trì trong cơ sở dữ liệu nơi tên miền với địa chỉ IP tương ứng được lưu. Hệ thống lưu tên miền với địa chỉ IP tương ứng gọi là DNS (Domain Name System - Hệ thống Tên miền) (Tôi tin bạn đã nghe về nó).
Tôi nghĩ tôi đã thảo luận đủ cơ bản. Bây giờ, hãy đi sâu vào quy trình khi truy cập bất kỳ URL.
Tra cứu DNS để tìm địa chỉ IP
Sau khi truy cập URL, điều đầu tiên cần xảy ra là giải quyết địa chỉ IP liên kết với tên miền. DNS giúp giải quyết điều này. DNS giống như danh bạ điện thoại và giúp cung cấp địa chỉ IP liên kết với tên miền giống như danh bạ cho số điện thoại liên kết với tên người.

Đây là tổng quan, nhưng có bốn lớp mà truy vấn tên miền đi qua. Hãy hiểu các bước:
1. Sau khi truy cập URL, cache trình duyệt được kiểm tra. Vì trình duyệt lưu bản ghi DNS một thời gian cho các trang web bạn đã truy cập trước. Do đó, đầu tiên, truy vấn DNS chạy ở đây để tìm địa chỉ IP liên kết với tên miền.
2. Nơi thứ hai truy vấn DNS chạy là cache hệ điều hành (OS cache) tiếp theo là cache router.
3. Nếu ở các bước trên, truy vấn DNS không được giải quyết, nó nhờ đến máy chủ resolver (resolver server). Resolver server chính là ISP (Nhà cung cấp dịch vụ Internet) của bạn. Truy vấn được gửi đến ISP nơi truy vấn DNS chạy trong cache ISP.
4. Nếu ở bước 3 cũng không có kết quả, yêu cầu gửi đến máy chủ gốc hoặc cấp cao nhất (top/root server) của hệ thống phân cấp DNS. Ở đó không bao giờ xảy ra việc nói không có kết quả, mà thực tế nó nói, từ đâu bạn có thể lấy thông tin này. Nếu bạn tìm địa chỉ IP của tên miền cấp cao nhất (.com,.net,.gov,.org). Nó bảo resolver server tìm máy chủ TLD (Top Level Domain - Tên miền Cấp cao nhất).
5. Bây giờ, resolver hỏi máy chủ TLD cho địa chỉ IP của tên miền của chúng ta. TLD lưu thông tin địa chỉ của tên miền. Nó bảo resolver hỏi Máy chủ Tên Có Thẩm Quyền (Authoritative Name Server).
6. Máy chủ tên có thẩm quyền chịu trách nhiệm biết mọi thứ về tên miền. Cuối cùng, resolver (ISP) nhận địa chỉ IP liên kết với tên miền và gửi lại cho trình duyệt.
Sau khi có địa chỉ IP, resolver lưu nó vào cache để lần sau nếu cùng truy vấn đến thì không phải qua lại các bước. Nó có thể cung cấp địa chỉ IP từ cache.
Đó là tất cả các bước để giải quyết địa chỉ IP liên kết với tên miền. Xem bên dưới để hiểu rõ hơn:

Kết nối TCP được khởi tạo với máy chủ bởi Trình duyệt
Một khi địa chỉ IP của máy tính (nơi thông tin trang web của bạn) được tìm thấy, nó khởi tạo kết nối với nó. Để truyền thông qua mạng, giao thức Internet được tuân theo. TCP/IP là giao thức phổ biến nhất. Một kết nối được thiết lập giữa hai máy bằng quá trình gọi là 'TCP 3-way handshake' (Bắt tay 3 bước TCP). Hãy hiểu quy trình sơ lược:
1. Máy tính client gửi tin nhắn SYN nghĩa là, máy tính thứ hai có mở cho kết nối mới không.
2. Sau đó máy tính kia, nếu mở cho kết nối mới, nó gửi tin nhắn xác nhận (acknowledge) kèm tin nhắn SYN.
3. Sau này, máy tính đầu tiên nhận tin nhắn và xác nhận bằng cách gửi tin nhắn ACK.
Để hiểu rõ hơn, xem sơ đồ dưới.

Bắt Đầu Truyền Thông (Quy Trình Yêu Cầu Phản Hồi)
Cuối cùng, kết nối được xây dựng giữa client và server. Bây giờ cả hai có thể giao tiếp và chia sẻ thông tin. Sau kết nối thành công, trình duyệt (client) gửi một yêu cầu đến máy chủ rằng tôi muốn nội dung này. Máy chủ biết mọi thứ về phản hồi nó nên gửi cho mỗi yêu cầu. Do đó, máy chủ phản hồi lại. Phản hồi này chứa mọi thông tin bạn yêu cầu như trang web, mã trạng thái, kiểm soát cache, v.v. Bây giờ, trình duyệt hiển thị nội dung được yêu cầu.
Đó là tất cả! Toàn bộ quy trình trên xảy ra khi chúng ta truy cập bất kỳ URL. Mặc dù quy trình dài này mất chưa đến giây. Đây là câu trả lời cho câu hỏi 'gì xảy ra khi chúng ta truy cập URL trong trình duyệt?'
Cảm ơn đã đọc!