6 điểm bởi GN⁺ 2024-05-27 | 1 bình luận | Chia sẻ qua WhatsApp

Vòng đời của một yêu cầu HTTP

1. Client gửi yêu cầu

  • Tạo yêu cầu HTTP: Client (thường là trình duyệt web) tạo một yêu cầu HTTP.
  • Phương thức HTTP: GET, POST, v.v.
  • Tài nguyên được yêu cầu: Ví dụ: /index.html.
  • Phiên bản giao thức: Chẳng hạn HTTP/1.1.
  • Header và body: Bao gồm các header theo định dạng key: value và phần thân thông điệp tùy chọn.

2. Tra cứu DNS

  • Phân giải tên miền: Chuyển tên miền mà con người có thể đọc được (www.example.com) thành địa chỉ IP (93.184.216.34).
  • Truy vấn máy chủ DNS: Client gửi truy vấn đến máy chủ DNS để chuyển tên miền thành địa chỉ IP.

3. Bắt tay TCP

  • Thiết lập kết nối TCP: Client thiết lập kết nối TCP với server.
  • Bắt tay 3 bước:
    • SYN: Client gửi yêu cầu kết nối.
    • SYN-ACK: Server xác nhận yêu cầu.
    • ACK: Client gửi phản hồi xác nhận.

4. Gửi yêu cầu HTTP

  • Truyền yêu cầu HTTP: Khi kết nối TCP đã được thiết lập, client gửi yêu cầu HTTP thực tế.

5. Định tuyến gói tin qua Internet

  • Truyền gói tin: Các gói dữ liệu được định tuyến đến server thông qua nhiều thiết bị mạng khác nhau.
  • Vai trò của router: Router quyết định đường đi tối ưu cho các gói tin.

6. Server phản hồi

  • Tạo phản hồi HTTP: Server xử lý yêu cầu HTTP và tạo phản hồi.
  • Nội dung phản hồi:
    • Giao thức: Phiên bản HTTP được sử dụng.
    • Thông tin trạng thái: Mã trạng thái HTTP (ví dụ: 200, 404).
    • Header phản hồi: Tương tự như header của yêu cầu.
    • Body phản hồi: Nội dung được yêu cầu (ví dụ: trang HTML, dữ liệu JSON).

7. Render nội dung

  • Xử lý phản hồi HTTP: Client nhận và xử lý phản hồi HTTP.
  • Render trên trình duyệt: Trình duyệt phân tích HTML và render nội dung lên màn hình.
  • Yêu cầu thêm tài nguyên: Yêu cầu thêm các tài nguyên như hình ảnh, CSS, JavaScript, v.v.

HTTPS = HTTP + mã hóa

Bắt tay TLS

  • Bắt tay TLS: Client và server trao đổi khóa mã hóa và xác thực.
  • Giao tiếp được mã hóa: Sau khi bắt tay TLS, client và server sử dụng HTTP để trao đổi các thông điệp đã được mã hóa.

Bắt tay TLS 1.3

  • Quy trình được đơn giản hóa: TLS 1.3 cung cấp ít tùy chọn hơn nên đơn giản, an toàn và nhanh hơn.
  • Các bước cốt lõi:
    • Client Hello: Client gửi cho server bộ mã mã hóa và phiên bản TLS mà nó hỗ trợ.
    • Server Hello: Server gửi cho client bộ mã mã hóa và phiên bản TLS mà nó đã chọn.
    • Xác minh chứng chỉ: Client xác minh chứng chỉ SSL của server.
    • Tạo pre-master secret: Client tạo pre-master secret và gửi cho server.
    • Tạo session key: Client và server tạo session key.
    • Giao tiếp an toàn: Sử dụng session key để giao tiếp bằng mã hóa đối xứng an toàn.

Ý kiến của GN⁺

  • Hiểu về giao tiếp Internet: Nắm được các khái niệm cơ bản của HTTP và HTTPS sẽ giúp xây nền tảng vững chắc về truyền thông mạng.
  • Tầm quan trọng của bảo mật: Việc nâng cao tính bảo mật của truyền dữ liệu thông qua HTTPS là rất quan trọng.
  • Ưu điểm của TLS 1.3: Nên sử dụng TLS 1.3 vì đơn giản hơn, nhanh hơn và an toàn hơn.
  • Áp dụng trong thực tế: Cần áp dụng HTTPS trong các dự án thực tế để tăng cường bảo mật.
  • Học thêm: Có thể đạt được hiểu biết sâu hơn thông qua việc học thêm về các tầng mạng và giao thức.

1 bình luận

 
GN⁺ 2024-05-27
Ý kiến trên Hacker News
  • Có ý kiến đặt câu hỏi vì sao khi xảy ra sự cố mạng lại khó biết vấn đề phát sinh ở đâu. Họ cho rằng lời giải thích rằng đường đi mạng mang tính phi quyết định là chưa đủ thuyết phục.
  • Có ý kiến khuyến nghị các ví dụ chi tiết và có tính tương tác về TLSv1.2 và TLSv1.3. Có kèm liên kết.
  • Có ý kiến cho rằng kiểu giải thích "ELI(một kỹ sư tầm thường)" rất hữu ích. Họ muốn tìm thêm nhiều ví dụ hơn.
  • Có người yêu cầu ví dụ mã để xác minh chữ ký SHA256. Họ hiểu lý thuyết nhưng gặp khó khăn khi triển khai.
  • Có ý kiến nói rằng phần hay nhất của bài viết là đoạn nói có thể nhận lương $300K ở San Francisco chỉ bằng việc viết HTTP request.
  • Có ý kiến cho rằng việc client mã hóa premaster secret bằng khóa công khai của server rồi gửi đi là thông tin đã cũ.
  • Có ý kiến nghi ngờ về phần giải thích rằng chứng chỉ SSL bao gồm khóa riêng tư. Họ cho rằng đây là kiểu giải thích đúng với tiêu đề "Mediocre Engineer".
  • Có người đùa rằng họ muốn làm việc với mức lương thấp hơn $50K. Đồng thời chỉ ra rằng phần giải thích về TLS <1.3 là sai.
  • Có ý kiến cho rằng nội dung bài viết đã cũ, và hiện nay 30% web request sử dụng HTTP3 và CORS. Họ cũng chỉ ra rằng bài viết không có ngày xuất bản.
  • Có ý kiến cho rằng phần giải thích về HTTPS trông giống như bản tóm tắt do AI tạo ra. Bài viết thiếu giải thích thuật ngữ và giả định người đọc đã biết về mật mã khóa công khai. Họ cũng chỉ ra rằng phần giải thích về các tầng OSI là chưa đầy đủ.