Hãy tưởng tượng ngôi nhà của bạn là một siêu máy tính. Thay vì đường Goodison hay đường số 4, địa chỉ nhà bạn gồm các con số. Ví dụ: 112.231.31.20.
Như trong phim viễn tưởng, thành phố của bạn phần lớn là robot high-tech trên trời bay từ nhà này sang nhà kia, truyền tin nhắn và mang phản hồi về.
Đã hình dung được chưa?
Tổng quan về cách Internet hoạt động
Đơn giản hóa một chút, đây là điều xảy ra khi bạn gõ địa chỉ web vào trình duyệt:
- Nó tìm địa chỉ của "ngôi nhà" mà bạn muốn gửi yêu cầu
- Nó gửi yêu cầu bằng người gửi thư robot
- Nó kiên nhẫn chờ phản hồi từ người gửi thư robot
Tất cả điều này được trừu tượng hóa khỏi bạn với tư cách người dùng cuối. Bạn gõ địa chỉ web vào trình duyệt, và trang web xuất hiện trước mắt - như phép màu.
Giống như bất kỳ công nghệ đủ tiên tiến nào, người dùng trung bình sẽ không thể sử dụng Internet nếu không có các lớp trừu tượng này.
Phần lớn thời gian, bạn không cần lo lắng về cách thứ gì đó hoạt động – bạn chỉ cần biết nó hoạt động.
Nhưng đối với một số chủ đề, đào sâu một chút vào chi tiết kỹ thuật là hữu ích, hoặc đơn giản chỉ để thỏa mãn sự tò mò.
Bạn sẽ không trở thành chuyên gia về chi tiết kỹ thuật của Internet chỉ bằng cách đọc bài viết này – đó sẽ tốn nhiều thời gian và công sức hơn – nhưng bạn sẽ có cái nhìn tổng quan và hiểu tốt hơn.
Nếu bạn thấy muốn tìm hiểu thêm, tôi có một playlist trên YouTube đi sâu hơn.
Hệ thống nhắn tin
Từ ví dụ so sánh ở đầu bài, chúng ta biết Internet bao gồm các tin nhắn được truyền đi. Phần lớn các tin nhắn này được gửi bằng giao thức HTTP.
Giao thức (Protocol). Đó là từ đáng sợ. Đó là loại từ làm bạn nhăn nhó và đóng trình duyệt. Vậy hãy chia nhỏ nó thành thuật ngữ dễ hiểu hơn.
Giao thức chỉ là từ xa xỉ cho "sự thỏa thuận".
Hãy làm rõ hơn bằng một ví dụ so sánh.
Giả sử bạn và bạn thân để lại cho nhau tin nhắn bí mật. Khi bạn tìm thấy một tờ giấy trước cửa với từ "ballfoot" (bóng đá viết ngược), bạn biết bạn thân muốn gặp bạn chơi bóng tối nay lúc 20:00.
Bạn biết điều này vì bạn đã thỏa thuận từ "ballfoot" trên tờ giấy gửi đến nhà đại diện cho lời mời chơi bóng.
Vấn đề nảy sinh khi bạn bắt đầu để lại ghi chú "ballfoot" cho các bạn khác mà không nói cho họ ý nghĩa bí mật. Họ sẽ không biết làm gì với thông tin đó.
Họ sẽ thấy ghi chú trước cửa, gãi đầu một lúc, rồi tiếp tục chơi Fortnite trong phòng khách. Và bạn với bạn thân khác sẽ chuyền bóng cho nhau. Lui và về. Lui và về. Cho đến khi sự nhàm chán trở nên không thể chịu đựng và bạn cả hai về nhà.
Nhưng không nhất thiết phải như vậy. Nếu bạn nói cho bạn bè biết ý nghĩa của "ballfoot" thì sao? Bây giờ mọi bạn bè của bạn sẽ biết và chia sẻ sự thỏa thuận rằng ghi chú có từ "ballfoot" có nghĩa là hãy đến sân bóng địa phương lúc 20:00 chơi bóng.
Thành công.
Đây – về bản chất – chính là điều mà giao thức HTTP đại diện. Chúng ta đã thỏa thuận rằng nếu gửi tin nhắn theo một cách cụ thể, máy chủ sẽ hiểu nó, và trả lời lại.
Cấu trúc của tin nhắn
Hãy nhìn kỹ hơn vào sự thỏa thuận HTTP. Nó bao gồm yêu cầu (request) và phản hồi (response). Nói đơn giản, bạn yêu cầu thứ gì đó và nhận câu trả lời từ thứ gọi là máy chủ (server).
Trước khi tiếp tục, hãy điều chỉnh ví dụ so sánh ở đầu để hiểu tốt hơn về chu trình yêu cầu/phản hồi HTTP.
Nhớ những robot bay từ nhà này sang nhà kia mang tin nhắn? Bây giờ hãy tưởng tượng tất cả robot đó thuộc về ai đó.
Bạn có robot riêng, và bạn có thể yêu cầu nó đi đến bất kỳ địa chỉ (địa chỉ IP) nào với tin nhắn. Khi robot của bạn đến địa chỉ đã cho với tin nhắn của bạn, nó sẽ tiến vào và tuyên bố lớn rằng nó có tin nhắn để giao. Sau đó nó nói tin nhắn đó.
Vì ví dụ so sánh, hãy tưởng tượng cửa các ngôi nhà (máy chủ) giống như lối vào mỏ Moria trong Lord of the Rings. Chỉ khi lời nói được nói chính xác cửa mới mở và cho bạn vào.
Trong trường hợp này, chỉ khi robot của bạn nói tin nhắn theo cách cụ thể thì chúng mới nhận được tin nhắn phản hồi để mang về cho bạn.
Đây là giao thức HTTP đang hoạt động. Có một tập quy tắc được định nghĩa trước hướng dẫn tin nhắn yêu cầu và phản hồi trông như thế nào.
Lúc này bạn có thể thắc mắc tin nhắn đó đến từ đâu. Bạn chắc chắn không tự viết chúng khi nhập địa chỉ trang web vào trình duyệt.
Thực tế, trình duyệt tự động xử lý tất cả cho bạn. Khi bạn gõ địa chỉ, trình duyệt lo việc soạn thảo tin nhắn yêu cầu HTTP và gửi nó đến máy chủ. Tin nhắn Yêu cầu HTTP trông như sau:
GET / HTTP/1.1 Host: google.com User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9, image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 ...etcTrông đáng sợ, phải không?
May mắn là trình duyệt làm giúp chúng ta.
Hãy nhìn kỹ chỉ dòng đầu tiên: GET / HTTP/1.1. Dòng này khiến robot của bạn đến nhà Google và nói, "Cho tôi nhận bất cứ thứ gì bạn có ở gốc trang web của bạn được không?" (Điều này có nghĩa là chúng ta muốn lấy nội dung tại www.google.com, không phải www.google.com/home.)
Vậy bây giờ chúng ta đã gửi tin nhắn đến nhà Google (máy chủ) theo cách đúng đắn. Cửa sáng lên và mở ra.
Bên trong bạn thấy một robot khác. Phía sau nó là một loạt hộp khóa có nhãn như GET / HTTP/1.1 và GET /search HTTP/1.1. Nếu yêu cầu của bạn khớp với một trong những hộp khóa đó, robot sẽ mở khóa và đưa cho robot của bạn nội dung bên trong, khiến nó nhanh chóng trở về với phản hồi.
Phản hồi (Response)
Phản hồi bạn nhận được sẽ trông như thế này:
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length: 88 Content-Type: text/html Connection: ClosedBây giờ, bạn sẽ không bao giờ thấy phản hồi này trừ khi bạn thực sự muốn kiểm tra nó trong công cụ nhà phát triển của trình duyệt. Nhưng dù sao bạn vẫn nhận được nó.
Điều xảy ra tiếp theo phụ thuộc vào loại phản hồi bạn nhận được, và thứ gì bên trong hộp khóa của máy chủ.
Trong nhiều trường hợp, thứ bạn nhận được là một tài liệu HTML. HTML đại diện cho cấu trúc trang web và định nghĩa những gì trình duyệt nên hiển thị.
Nếu bạn vào www.google.com, bạn sẽ nhận được một tệp HTML định nghĩa cách trang google.com sẽ hiển thị trong trình duyệt của bạn.
Nếu bạn có thời gian, video 11 phút này đi sâu hơn vào yêu cầu và phản hồi HTTP:
Kết luận
Trong bài viết này, chúng ta đã xem xét cách Internet hoạt động, và cách chúng ta dùng HTTP để giao tiếp trên Internet.
Chúng ta đã học rằng giao thức HTTP được dùng để giao tiếp giữa trình duyệt và máy chủ trên Internet và bao gồm một tiêu chuẩn chung về cách yêu cầu được gửi và nhận.
Chúng ta cũng khám phá tầm quan trọng của việc có các tiêu chuẩn truyền thông như vậy và lợi ích của việc có một tiêu chuẩn chung được đồng thuận.
Còn nhiều khía cạnh khác để hiểu cách Internet hoạt động và các loại phản hồi bạn có thể nhận được.
Nếu bạn có chút thời gian, video 18 phút này dạy bạn cách xây dựng máy chủ web sẽ xem lại nhiều chủ đề trong bài này, và đi qua một số chủ đề mới:
Bây giờ bạn nên có hiểu biết tổng quát về cách truyền thông trên Internet hoạt động.
Nếu bạn nghĩ người khác có thể hưởng lợi từ bài viết này, hãy lan tỏa. Và nếu bạn muốn biết khi tôi đăng thêm nội dung, bạn có thể đăng ký kênh YouTube của tôi, hoặc theo dõi tôi @foseberg trên Twitter.