Chuyện gì xảy ra khi truy cập một Website - Một số khái niệm cơ bản cần biết về Web (Phần 1)

                   Một số khái niệm cơ bản cần biết về Web 

            (Phần 1: Chuyện gì xảy ra khi truy cập một Website)

Trong lập trình Web nói riêng cũng như lập trình ứng dụng kết nối mạng nói chung, chúng ta cần phải hiểu một số nguyên tắc gửi nhận dữ liệu cơ bản, cũng như các khái niệm liên quan. Trong bài viết này, mình sẽ giải thích cơ bản các khái niệm xoay quanh về lập trình Web. Cùng bắt đầu nào.


Website là gì?

Khi người dùng truy cập một Website, chuyện gì xảy ra?

Giả sử bạn truy cập vào trang Web google.com. Bạn nhập google.com vào khung trình duyệt chrome và ấn Enter.


Người dùng nhập google.com và ấn enter.

Đầu tiên, trình duyệt sẽ thông qua DNS (Domain Name System) để phân giải tên miền thành địa chỉ IP. 


Hệ thống DNS phân giải tên miền thành địa chỉ IP

Bạn có thể hiểu địa chỉ IP giống như địa chỉ nhà, và "nhà" ở đây chính là server Google mình muốn truy cập. Máy tính chỉ có thể hiểu địa chỉ IP, vì vậy cần phân giải tên miền thành địa chỉ IP.

Để hiểu rõ hơn về DNS, mình có làm video [Học 5 phút mỗi tuần] với chủ đề DNS. Khuyến khích bạn nên tham khảo: https://www.facebook.com/8techblog/videos/566656473905594
(Optional) Bạn cũng có thể tham khảo  [Học 5 phút mỗi tuần] định nghĩa về IP tại đây: (https://www.facebook.com/8techblog/videos/355680875250891)

Sau khi có địa chỉ IP của Google, mình tiến hành gửi dữ liệu cho google. Dữ liệu ở đây là gì? Đó chính là "yêu cầu" - request. Yêu cầu google trả một trang tìm kiếm google. Và server sẽ "phản hồi" - response trang tìm kiếm để hiện lên màn hình của bạn.



                                        Quá trình gửi và nhận dữ liệu

Bạn hãy hiểu client chính là bản thân mình, và server là hệ thống Google nhé!

Và bạn biết trang tìm kiếm hiện lên trên màn hình bạn là gì không? Đó không phải là hình ảnh đâu, mà đó chính là mã HTML CSS và JS cùng với các resource liên quan tạo thành.


Dữ liệu trả về của server Google

 Dữ liệu trả về cho client mình chính là đoạn code bên phải, còn bên trái là do browser thực thi (execute) đoạn code bên phải để tạo ra giao diện trực quan bên trái cho người sử dụng. (Nói đúng hơn là render vì HTML CSS không phải là ngôn ngữ lập trình, tuy nhiên vẫn có built-in compiler để execute JS) (Đoạn trong ngoặc này không hiểu thì tạm bỏ qua nhé :)) )

 Nếu vậy, sơ đồ đúng phải là như thế này:

Quá trình kết nối tới server


Quá trình render dữ liệu trả về

Kết luận: Mình đã cố gắng đơn giản hóa rất nhiều để những bạn gần như là mới có thể hiểu sơ bộ về quá trình này. Trong bài viết tới mình sẽ dựa vào đây bắt đầu phân tích thêm các khái niệm chi tiết xoay quanh vấn đề này. Cảm ơn các bạn đã xem!

Nội dung bài viết thuộc về Lê Công Diễn.

 

Người viết: Lê Công Diễn

Mang đi nhớ ghi nguồn

 




Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)