Câu 1localhost trong http://localhost:3000 của hướng dẫn chỉ máy tính nào?
Khi nhập một URL thì điều gì xảy ra — DNS, HTTP và HTTPS
Bài viết này nằm trong khóa Kiến thức nền tảng về CNTT, xây dựng từ đầu những kiến thức CNTT thực tế tối thiểu mà bạn cần để lập trình và vibe coding.
Một URL đọc được thành bốn phần. Các sơ đồ lần theo DNS đổi tên thành số, HTTP lấy nội dung về, và HTTPS giữ cho nội dung không bị đọc trên đường đi.
Bài viết này nói về những gì xảy ra từ lúc bạn nhập URL tới lúc màn hình hiện ra.
Có ba thứ xuất hiện: DNS đổi tên thành số, HTTP trao đổi nội dung, và HTTPS giữ cho luồng truyền đó không bị đọc.
Đủ cả ba thì mới quyết định được gửi cái gì tới đâu.
URL là chuỗi ký tự chỉ ra trang nào trên máy tính nào
Chuỗi bạn gõ theo hướng dẫn là URL (Uniform Resource Locator: chuỗi một dòng chỉ ra trang bạn muốn mở nằm trên máy tính nào và ở đâu trong máy đó).
- Phần này là toàn bộ những gì đứng trước "://"
- Nếu chỗ này là https thì nội dung bạn gửi được mã hóa
- Tên đọc được cho người, đặt cho một máy tính trên Internet
- Server công khai được đặt tên kiểu example.com
- localhost dùng ở máy mình là tên cố định chỉ chính chiếc máy đã gõ nó
- Yêu cầu tới máy tính nào là do chỗ này quyết định
- Số chỉ ra yêu cầu tới chương trình nào bên trong một máy tính
- Nhiều chương trình cùng chờ yêu cầu một lúc được, nên số này chọn ra một
- http cố định là 80 và https là 443, nên đúng số đó thì không viết ra
- Bắt đầu bằng "/", là vị trí của trang bên trong cùng một server
- Bỏ đi thì bạn được trang cửa vào của server đó
Chính trình duyệt là thứ cắt dòng này thành bốn phần.
Đọc URL theo bốn phần
URL là một dòng nối bốn phần lại.
Đầu là quy tắc gửi, giữa là máy tính nào, số là chương trình nào bên trong máy đó, cuối là trang nào; URL ở máy mình và URL công khai đều gồm đúng bốn phần đó, chỉ khác các ký tự bên trong.
Từ lúc nhập URL tới lúc màn hình hiện ra — DNS và HTTP
Địa chỉ IP đã xem ở bài trước chính là con số đó.
Quy tắc tra địa chỉ IP từ tên miền là DNS (Domain Name System), còn quy tắc để trình duyệt và server trao đổi request và response là HTTP (HyperText Transfer Protocol).
Máy giữ bảng tương ứng của DNS và trả lời các câu hỏi là server DNS.
Thứ trình duyệt gửi đi là request, thứ trả về là response, và từ lúc bạn nhập URL tới lúc màn hình hiện ra, trình duyệt kết nối lần lượt tới hai bên.
Thứ tự là: đổi tên thành số trước, rồi mới đi lấy nội dung.
Server DNS mà bạn kết nối trước chỉ trả về một con số, chứ không trả về nội dung trang.
Giữ nội dung là server bạn tới được ở số đó, và nó xem /reserve ở cuối URL rồi mới chọn thứ trả về.
Cùng một server, /reserve và /login chọn ra nội dung khác nhau.
Response trả về chứa một con số ba chữ số và nội dung trang, còn thứ hiện lên màn hình chỉ là file nội dung.
Đổi tên thành số trước, rồi mới nhận nội dung
Trình duyệt làm bốn việc: đọc, hỏi, nhận và vẽ.
Nó cắt URL bạn gõ thành bốn phần, hỏi server DNS con số, rồi xin trang ở số đó.
Server xem phần cuối URL, chọn thứ trả về, và trả kèm một con số cho biết việc đó có trót lọt không.
HTTPS là quy tắc để nội dung không bị đọc giữa đường truyền
Với kết nối bắt đầu bằng http, các ký tự bạn gõ đi nguyên như vậy, nên thiết bị trên đường truyền đọc được nội dung.
Thứ ngăn điều đó là HTTPS (HyperText Transfer Protocol Secure), nó mã hóa (encryption: chuyển sang dạng mà ngoài bên đã định thì không ai khôi phục lại được) nội dung gửi đi rồi mới trao đổi.
Ký tự server đọc được ở cả hai đều như nhau, chỉ khác ở chỗ thiết bị trên đường truyền nhìn thấy được gì.
Với https thì đường truyền vẫn biết luồng đó gửi tới server nào.
Thứ không biết được là bạn đang mở trang nào và đã gõ gì.
HTTPS còn gồm cả cơ chế xác nhận bên kia có phải chủ của tên miền đó không.
Bên cấp chứng chỉ không phải chính server mà là tổ chức phát hành chứng chỉ (CA) (certificate authority: bên thứ ba xác minh chủ của tên miền và cấp chứng chỉ).
Bên trong chứng chỉ có khóa công khai (public key: khóa đưa cho ai cũng được) dùng để xác nhận bên kia là thật.
Xác nhận là bước trước, mã hóa là bước sau.
Khóa chỉ được tạo sau khi biết chắc bên kia là chủ sở hữu, nên dù thiết bị giữa đường có chen vào thì cũng không đọc được nội dung.
https không cho đọc nội dung
Khác biệt giữa http và https chỉ là nội dung có đọc được trên đường truyền hay không.
Với http, các ký tự đi nguyên như vậy nên thiết bị trên đường truyền đọc được nội dung; với https, các ký tự được chuyển đổi trước khi gửi nên đường truyền chỉ biết được tới tên nơi nhận.
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Cơ chế nào lấy một tên miền như example.com và tra ra địa chỉ IP dùng để truyền tin?
Câu 3URL bắt đầu bằng https khác URL bắt đầu bằng http ở chỗ nào?