Stay focused, be present

Coding

Một website hoạt động như thế nào trên Internet?

Hello cả nhà, Có lẽ đây cũng sẽ là bài viết khởi động lại blog của Hòa sau một thời gian đã khá dài.

Trong bài viết đầu tiên của chuỗi bài về WebDev nhập môn này, chúng ta sẽ cùng tìm hiểu và trả lời cho câu hỏi: “Một website hoạt động như thế nào trên Internet?” cũng như cùng điểm qua các khái niệm cơ bản nhất về web trước khi bắt đầu bắt tay vào đánh vào việc lập trình web nhé.

Điều gì xảy ra sau khi vào trình duyệt, gõ địa chỉ web và bấm Enter?

Câu hỏi rất đơn giản và cũng rất phổ biến, hay gặp trong các buổi phỏng vấn một ứng viên WebDev, hay là câu hỏi mà tôi cũng thường hay hỏi các bạn sinh viên khi nói về Internet và Web. Có rất nhiều cách trả lời ở nhiều mức độ phức tạp hóa hay đơn giản hóa cho câu hỏi này, chúng ta sẽ bắt đầu với một cách giải thích đơn giản đi nhé. Mời các bạn cùng quan sát sơ đồ sau:

Mô hình cơ bản về hoạt động của một website trên Internet [1]

Sau khi bạn mở trình duyệt, nhập địa chỉ một trang web (ví dụ https://nth.vn) và bấm Enter, sau khoảng vài giây nội dung website sẽ được hiện ra trên trình duyệt với nhiều đoạn văn bản, có thể gồm cả hình ảnh, âm thanh hay video,… Quá trình đã xảy ra từ khi bạn Enter có thể được mô tả tóm tắt như sau:

  1. Trình duyệt Web sẽ thực hiện một truy vấn dựa vào tên miền (domain) để tìm ra địa chỉ IP thực sự của web server tương ứng chứa website có tên miền đó bằng một giao thức đặc biệt gọi là DNS.
  2. Sau khi đã tìm được địa chỉ IP, trình duyệt sẽ gửi gói tin yêu cầu – HTTP request đến địa chỉ của web server, yêu cầu trả về nội dung trang web. Gói tin yêu cầu đó cũng như tất cả các gói tin, dữ liệu khác trao đổi giữa máy chủ với máy chúng ta (gọi là máy khách) được thực hiện qua một bộ giao thức TCP/IP.
  3. Khi nhận được các yêu cầu từ máy khách, máy chủ web sẽ tiến hành kiểm tra và nếu có thể đáp ứng các yêu cầu đó thì nó sẽ gửi lại cho máy khách các tập tin được yêu cầu. Thông thường máy chủ sẽ trả về tập tin HTML để hiển thị trên trình duyệt, có liên kết đến những tập tin hình ảnh, âm thanh,… khác. Các tập tin này có thể được chia thành nhiều gói tin (packets) nhỏ và gửi về cho trình duyệt của người dùng đang ở máy khách.
  4. Khi nhận được, trình duyệt sẽ ghép những gói tin nhỏ nhận được thành những tập tin hoàn chỉnh và hiển thị lên màn hình. Như thế là chúng ta có một trang web hoàn chỉnh để xem.

Mở rộng

Thực tế không phải mỗi khi máy khách yêu cầu nội dung nào và được máy chủ trả về nội dung đó đồng nghĩa với việc máy chủ đã lưu sẵn nội dung đó ở các file riêng lẽ trong filesystem của mình. Thử tưởng tượng các website lớn như Amazon, Tiki sẽ cần phải lưu trữ hàng triệu file HTML trên server mà mỗi lần cần điều chỉnh nội dung chung nào đó thì người quản trị phải chỉnh sửa hàng triệu file đó thì sẽ vô cùng mất nhiều thời gian và cũng có thể gây ra nhiều sai sót, khó bảo trì.

Mô hình website động có cơ sở dữ liệu [1]

Do đó, trên máy chủ web thường sẽ có một ứng dụng web có thể tạo ra các trang HTML động theo yêu cầu dựa vào các mẫu (template) có sẵn đã được lập trình trước. Ứng dụng web này có thể tương tác với Cơ sở dữ liệu (Database) – nơi lưu trữ tập trung và hiệu quả thông tin của các đối tượng trên website (như thông tin các sản phẩm, bài viết,…). Ứng dụng web sẽ truy vấn các thông tin tương ứng được yêu cầu đến cơ sở dữ liệu và điền vào các mẫu đã được định sẵn trước đó để tạo ra các file HTML động và trả về cho máy khách theo yêu cầu. Cơ sở dữ liệu này có thể được đặt trên cùng máy chủ web đối với các web nhỏ, trung bình hoặc đặt riêng ở máy chủ khác để tối ưu hóa trong các website lớn.

Lúc này, khi bạn muốn thay đổi cách hiển thị hay các nội dung chung trong trang xem sản phẩm, bạn chỉ việc thay đổi trang mẫu và tất cả mọi trang khác cũng sẽ được đồng bộ theo. Cuộc sống trở nên giản đơn hơn đến lạ 😁

Một số khái niệm

Phân giải tên miền và IP nhờ DNS

Mạng Internet là một mạng lưới rất lớn gồm rất nhiều thiết bị mạng như các máy tính, điện thoại, camera IP, các server,… được kết nối và giao tiếp, trao đổi dữ liệu với nhau. Mỗi thiết bị trên mạng Internet sẽ được định danh bởi một địa chỉ (cũng giống như số nhà), gọi là địa chỉ IP với dãy các số (như 22.12.19.93) để các thiết bị khác có thể kết nối và giao tiếp. Các máy tính trên Internet thực sự kết nối với nhau qua địa chỉ IP, thử tưởng tượng nếu chúng ta muốn vào trang web nào đều phải nhớ và gõ địa chỉ IP gồm một dãy số dài ngoằn khó nhớ thì thật là khủng khiếp. Do đó, giao thức DNS (Domain Name System) ra đời với chức năng đưa ra các tên miền dễ nhớ (ví dụ nth.vn) và mỗi tên miền sẽ được ánh xạ tương ứng một đến địa chỉ IP giúp cho chúng ta dễ nhớ để truy cập vào website hơn. Mọi thứ trở nên dễ dàng hơn rất nhiều nhờ DNS.

Quá trình giao tiếp giữa các thiết bị mạng diễn ra liên tục và có thể thông qua một kết nối có dây hoặc không dây, quá trình này cũng không hề bị giới hạn bởi khoảng cách địa lý giữa các thiết bị mạng với nhau. Mỗi thiết bị trên mạng Internet có thể có hệ thống nhiều tập tin (filesystem) khác nhau như văn bản, hình ảnh, video và có thể công khai hoặc không công khai cho người khác có thể truy cập đến để tải về xem.

Một website bao gồm tập hợp của rất nhiều tập tin chứa văn bản, hình ảnh, video và được lưu trữ trên một thiết bị mạng, thực ra thường là một máy tính trên mạng Internet gọi là Web Server (máy chủ Web). Trình duyệt Web (Web Browser) như Chrome, Firefox, Edge hay Safari chẳng hạn, là một ứng dụng trên máy tính, điện thoại hay máy tính bảng,… giúp bạn có thể truy cập, xem và tương tác với các website.

Bài viết này tạm khép lại tại đây và hy vọng các bạn cũng đã có những cái nhìn tổng quan đầu tiên về những điều xảy ra khi chúng ta truy cập vào một website và có thể trả lời cho câu hỏi “Một website hoạt động như thế nào trên Internet?”

Tham khảo

[1] https://chungminhtu.github.io/WebSiteHoatDongNTN/#1

[2] How the Web works: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works

About author

always try to be better

Leave a Reply

Your email address will not be published. Required fields are marked *