Minh mở đúng địa chỉ trên điện thoại. Bống mở đúng địa chỉ đó trên máy tính ở nhà, cách xa mấy cây số. Cả hai cùng thấy y hệt một trang. Trang đó thật ra đang nằm ở đâu?
CLB Tin học đang làm một việc rất nhỏ — nhưng sắp khiến Minh thắc mắc cả buổi.
Sắp tới trường có Hội chợ Khoa học. Thầy Huy giao cho CLB Tin học làm một trang web bé xíu để giới thiệu — mấy dòng chữ, một tấm ảnh, và lịch các gian hàng.
Làm xong, thầy Huy gửi cho cả lớp đúng một dòng địa chỉ web, dặn: "Cứ gõ đúng dòng này vào trình duyệt, xem thử."
Tối đó, Minh gõ địa chỉ trên điện thoại của mình. Cùng lúc, Bống — đang ở nhà, cách Minh mấy cây số — gõ y hệt địa chỉ đó trên máy tính bàn nhà mình.
Hai đứa nhắn tin cho nhau ngay sau đó: cả hai cùng thấy đúng một trang, giống nhau đến từng chữ, dù đang dùng hai thiết bị khác hẳn nhau, ở hai nơi chẳng liên quan gì đến nhau.
Nếu em cũng gõ đúng một địa chỉ web trên điện thoại của em ngay bây giờ, em nghĩ trang đó đang "nằm" ở máy nào — máy của em, hay ở một nơi nào khác?
Minh nghĩ chuyện này bình thường thôi — cho tới lúc thử giải thích nó cho Bống nghe.
Minh bảo: "Chắc lúc gõ địa chỉ, máy mình tự tải trang đó về, giống như tải một tấm ảnh vậy."
Bống gật đầu, rồi bỗng khựng lại: "Ừ nhưng nếu máy tớ cũng tự tải một bản về máy tớ... thì bây giờ đang có hai bản riêng à? Một bản trong điện thoại cậu, một bản trong máy tớ?"
Minh im lặng. Nghe thì có lý — nhưng có gì đó không ổn.
Minh và Bống mang đúng câu hỏi đó tới CLB Rô-bốt, chỗ thầy Huy đang ngồi sửa dây điện cho một con robot nhỏ.
Minh hỏi thẳng: "Thầy ơi, trang web đó không nằm trên điện thoại con, cũng chẳng nằm trên máy Bống — vậy nó thật sự nằm ở đâu, mà cả hai đứa cùng mở ra giống hệt nhau được ạ?"
Thầy Huy không trả lời ngay. Thầy hỏi ngược lại: "Hai đứa nghĩ xem — nếu mỗi máy tự tải riêng một bản, thì khi cô giáo sửa lại lịch thi trên website trường, có phải mọi học sinh phải tự tải lại một bản mới không? Có ai từng phải làm thế chưa?"
Minh và Bống nhìn nhau. Không — chưa bao giờ ai phải làm vậy cả. Cứ mở lại trang là thấy bản mới nhất, tự nhiên như thể chẳng có gì phải "tải lại".
Nếu mỗi máy giữ một bản riêng, sao sửa một lần trên trường lại khiến mọi học sinh nhìn thấy bản mới — mà không ai phải làm gì cả? Đây chính là chỗ cần một cách giải thích khác.
Thầy Huy vẽ một hình rất đơn giản lên bảng, và mọi thứ bỗng sáng tỏ.
Website không được "tải về và cất" trong máy như một file thông thường. Nó nằm trên một máy chủ — gọi là server — đặt ở đâu đó, có khi cách trường hàng trăm cây số.
Còn trình duyệt trên điện thoại Minh, hay trên máy tính Bống, không hề giữ một bản riêng nào cả. Nó chỉ giống một "cửa sổ" — mỗi lần em ghé, nó lại hiển thị lại đúng nội dung đang có trên server, y hệt như đang nhìn qua khung cửa vào đúng cùng một căn phòng.
Hai chiếc điện thoại, hai máy tính khác nhau — nhưng cả hai đang nhìn qua hai khung cửa sổ khác nhau vào đúng một nơi.
Bây giờ đã hiểu bản chất, gọi đúng tên hai thứ này cho khỏi nhầm.
Cái nội dung nằm trên server, hiển thị được thông qua một địa chỉ web — người ta gọi là WEBSITE.
Còn phần mềm em dùng để mở và hiển thị nó ra — như Chrome, Safari, hay Cốc Cốc — gọi là TRÌNH DUYỆT (tiếng Anh: browser).
Vậy website là cái đang được xem, còn trình duyệt là công cụ để xem nó. Nhưng nếu trình duyệt chỉ là cửa sổ, không hề giữ gì cả — thì mỗi lần em bấm vào một đường liên kết, chuyện gì thật sự đang xảy ra phía sau?
Nhiều người quen gọi tắt "vào mạng" hay "lên web" — nhưng đúng ra là: mở trình duyệt, để nó hiển thị lại một website đang nằm ở nơi khác. Trình duyệt và website là hai thứ khác nhau, không phải một.
Chặng này giải thích chính xác điều gì xảy ra mỗi lần em gõ địa chỉ hoặc bấm vào một liên kết — chặng quan trọng nhất bài.
Mỗi lần vậy, trình duyệt gửi một yêu cầu tới đúng server đang giữ website đó (đúng như cuốn Server & Client đã kể — trình duyệt đóng vai client, người gọi món). Server nhận yêu cầu, chuẩn bị đúng nội dung, rồi trả về. Trình duyệt nhận nội dung đó và vẽ lại thành trang em đang nhìn thấy.
Vì vậy, khi Minh và Bống cùng mở một địa chỉ, cả hai đều đang "hỏi" đúng một server — không phải mỗi máy tự giữ một bản riêng. Nên trang hiện ra mới giống hệt nhau, đến từng chữ.
Có những trang hiển thị nội dung riêng theo từng người — ví dụ trang cá nhân hiện đúng tên em. Lúc đó server vẫn trả lời cho cả hai người hỏi, chỉ là nó biết ai đang hỏi để trả đúng phần dành cho người đó. Bản chất "hỏi cùng một server" vẫn không đổi.
Không cần máy tính mới thấy được điều này. Thư viện của cô Hạnh cũng đang hoạt động y hệt vậy.
Cô Hạnh giữ đúng một bản gốc duy nhất của mỗi cuốn sách quý trong thư viện. Học sinh tới đọc, cô đưa ra, các bạn đọc tại chỗ rồi trả lại — ai đọc cũng đang xem đúng một bản gốc đó.
Chuyện đó khác hẳn với việc mỗi bạn tự phô tô một bản riêng mang về nhà. Nếu làm vậy, sau này cô Hạnh sửa một lỗi in trong sách, cô chỉ sửa được bản gốc — còn hàng chục bản phô tô đã phát tán khắp nơi thì vẫn giữ nguyên lỗi cũ, chẳng ai cập nhật lại được.
Vậy nếu website hoạt động theo kiểu "mỗi người tự phô tô một bản" thay vì "một bản gốc, ai cũng xem lại" — điều gì sẽ xảy ra khi cần sửa một chỗ sai?
Thử tưởng tượng một thế giới không có website và trình duyệt như bây giờ — chỉ để thấy rõ hơn nó đang giúp gì.
Nếu không có cơ chế "một bản gốc trên server, ai cũng xem lại", thì mỗi người muốn xem cùng một nội dung phải được gửi riêng một bản sao — giống như gửi kèm một file đính vào email cho từng người một.
Vậy khi cô giáo sửa lịch thi, cô sẽ phải gửi lại file mới cho từng học sinh một, và hy vọng không ai lỡ mở nhầm bản cũ đã lưu từ trước.
Vậy điều gì khiến hàng triệu người trên khắp thế giới có thể cùng xem, cùng cập nhật một nội dung theo thời gian thực — mà không ai phải gửi lại gì cho ai?
Chuyện này không chỉ có ở CLB Tin học. Rất có thể em đã gặp nó nhiều lần rồi, mà chưa để ý.
Cập nhật lịch thi trên website trường: cô giáo chỉ sửa một lần trên server, mọi học sinh mở lại đều thấy bản mới ngay — không ai cần được gửi lại file nào cả.
Còn cái trang "404 not found" mà thỉnh thoảng em gặp khi bấm nhầm một liên kết? Đó là lúc trình duyệt đã hỏi đúng server, nhưng server tìm mãi không thấy đúng nội dung được yêu cầu — nên trả lời "không tìm thấy", chứ không phải máy em bị lỗi gì cả.
Không chấm điểm đâu — bấm vào câu em nghĩ là đúng, xem gợi ý bên dưới.
1. Minh và Bống ở hai nơi khác nhau nhưng thấy cùng một trang web — điều đó chứng tỏ trang web nằm ở máy của ai?
2. Nếu cô giáo sửa lịch thi trên website trường, học sinh có cần cài lại gì trên máy mình để thấy bản mới không?
3. Trang "404 not found" thật ra đang báo điều gì?
Đọc xong bài, chắc em còn thắc mắc gì đó chưa được giải thích hết. Viết ra đây, không cần đúng-sai, chỉ cần thật.
Cuộn nốt xuống dưới nhé — sắp xong trang này rồi!
Nếu chỉ được nhớ một câu từ cả bài này, hãy nhớ câu này.
Tối đó Minh thử kể lại cho Bống nghe những gì thầy Huy giải thích — bằng đúng một câu, ngắn nhất có thể.
Từ giờ, mỗi lần gõ một địa chỉ web, Minh sẽ nhớ tự hỏi: mình đang mở một bản của riêng mình, hay đang nhìn qua cửa sổ sang đúng nơi mọi người khác cũng đang nhìn vào?