Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> Internet

Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web

Trong bài viết này, tôi sẽ hướng dẫn bạn cách World Wide Web hoạt động ở mức cơ bản.

Công nghệ cốt lõi là HTTP - Hypertext Transfer Protocol (Giao thức Truyền Siêu Văn Bản). Đó là giao thức truyền thông bạn dùng khi lướt web.

Ở mức cơ bản, khi bạn truy cập trang web, trình duyệt tạo một yêu cầu HTTP đến máy chủ. Sau đó máy chủ phản hồi với một tài nguyên (hình ảnh, video, hoặc HTML của trang web) -  mà trình duyệt sau đó hiển thị cho bạn.

Đây là mô hình dựa trên tin nhắn của HTTP. Mọi tương tác HTTP đều bao gồm một yêu cầu và một phản hồi.

Theo bản chất, HTTP là stateless (vô trạng thái).

Stateless (Vô trạng thái) có nghĩa là tất cả các yêu cầu đều tách biệt nhau. Vì vậy mỗi yêu cầu từ trình duyệt phải chứa đủ thông tin riêng để máy chủ thực hiện yêu cầu. Điều đó cũng có nghĩa là mỗi giao dịch của mô hình dựa trên tin nhắn HTTP được xử lý riêng biệt với các giao dịch khác.

URLs

URL (Uniform Resource Locator - Bộ Định vị Tài nguyên Thống nhất) có lẽ là khái niệm nổi tiếng nhất của Web. Nó cũng là một trong những khái niệm quan trọng và hữu ích nhất. URL là địa chỉ web dùng để xác định tài nguyên trên Web.

Ý tưởng của Web được cấu trúc xung quanh tài nguyên. Từ đầu Web là nền tảng chia sẻ tệp văn bản/HTML, tài liệu, hình ảnh, v.v., và như vậy có thể coi là tập hợp tài nguyên.

Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web
Ví dụ của một URL

Giao thức (Protocol) — Thường là HTTP (hoặc HTTPS cho phiên bản an toàn của HTTP).

Các giao thức đáng chú ý khác:

  • Giao thức Truyền Tệp (File Transfer Protocol - FTP) — là giao thức tiêu chuẩn dùng để truyền tệp giữa client và server qua mạng.
  • Giao thức Truyền Thư Đơn Giản (Simple Mail Transfer Protocol - SMTP) là tiêu chuẩn cho truyền email.

Miền (Domain) — Tên dùng để xác định một hoặc nhiều địa chỉ IP nơi tài nguyên nằm.

Đường dẫn (Path) — Chỉ định vị trí tài nguyên trên máy chủ. Nó dùng logic giống như vị trí tài nguyên trên thiết bị bạn đang đọc bài này (ví dụ: /search/cars/VWBeetle.pdf hoặc C:/my cars/VWBeetle.pdf).

Tham số (Parameters) — Dữ liệu bổ sung dùng để xác định hoặc lọc tài nguyên trên máy chủ.

Lưu ý: Khi tìm kiếm bài viết và thông tin về HTTP, bạn có thể gặp thuật ngữ URI (Uniform Resource Identifier - Bộ Định danh Tài nguyên Thống nhất). URI đôi khi dùng thay cho URL nhưng chủ yếu trong đặc tả chính thức và bởi những người muốn khoe. :)

Yêu Cầu HTTP (HTTP Requests)

Trong HTTP, mọi yêu cầu phải có địa chỉ URL. Ngoài ra, yêu cầu cần một phương thức (method). Bốn phương thức HTTP chính là:

  • GET
  • PUT
  • POST
  • DELETE

Tôi sẽ giải thích các phương thức này, và thêm, trong phần Phương thức HTTP của bài viết.

Và các phương thức này tương ứng trực tiếp với các hành động:

  • đọc (read)
  • cập nhật (update)
  • tạo (create)
  • xóa (delete)

Tất cả tin nhắn HTTP có một hoặc nhiều header, theo sau là phần thân tin nhắn tùy chọn. Phần thân chứa dữ liệu sẽ được gửi với yêu cầu hoặc dữ liệu nhận được với phản hồi.

Phần đầu của mọi yêu cầu HTTP chứa ba mục:

Ví dụ:

  • GET /adds/search-result?item=vw+beetle HTTP/1.1

Khi URL chứa dấu "?", nghĩa là nó chứa truy vấn. Nghĩa là nó gửi tham số của tài nguyên được yêu cầu.

  1. Phần đầu là phương thức cho biết phương thức HTTP nào được dùng. Phổ biến nhất là GET. GET lấy tài nguyên từ máy chủ web và vì GET không có phần thân tin nhắn, không cần gì sau header.
  2. Phần thứ hai là URL được yêu cầu.
  3. Phần thứ ba là phiên bản HTTP đang dùng. Phiên bản 1.1 phổ biến nhất cho hầu hết trình duyệt, tuy nhiên phiên bản 2.0 đang chiếm ưu thế.

Có thêm một số điều thú vị trong yêu cầu HTTP:

Header Referer — cho biết URL nơi yêu cầu xuất phát.

Header User-Agent — thông tin thêm về trình duyệt được dùng để tạo yêu cầu.

Header Host — xác định duy nhất tên máy chủ; cần thiết khi nhiều trang web được lưu trữ trên cùng máy chủ.

Header Cookie — gửi tham số bổ sung đến client.

Phản Hồi HTTP (HTTP Responses)

Giống như yêu cầu HTTP, phản hồi HTTP cũng bao gồm ba mục:

Ví dụ:

HTTP/1.1 200 OK

  1. Phần đầu là phiên bản HTTP đang dùng.
  2. Phần thứ hai là mã số kết quả cho yêu cầu.
  3. Phần thứ ba là mô tả văn bản của phần thứ hai.

Có một số điều thú vị khác trong phản hồi HTTP:

Header Server — thông tin về phần mềm máy chủ web đang dùng.

Header Set-Cookie — cấp cookie cho trình duyệt.

Phần thân tin nhắn (Message body) — thường thấy phản hồi HTTP chứa phần thân.

Header Content-Length — cho biết kích thước phần thân tính bằng byte.

Phương Thức HTTP (HTTP Methods)

Phương thức phổ biến nhất là GET và POST. Nhưng có thêm vài phương thức khác.

GET — Dùng phương thức này để yêu cầu dữ liệu từ tài nguyên xác định mà không sửa đổi nó. Yêu cầu GET không thay đổi trạng thái tài nguyên.

POST — Dùng để gửi dữ liệu đến máy chủ để tạo tài nguyên.

PUT — Dùng để cập nhật tài nguyên hiện có trên máy chủ bằng nội dung trong phần thân yêu cầu. Hãy nghĩ đây là cách để "chỉnh sửa" thứ gì đó.

HEAD — Dùng giống GET, nhưng khác biệt là phản hồi của HEAD không được chứa phần thân. Nhưng phản hồi sẽ chứa cùng header như khi dùng GET. Dùng HEAD để kiểm tra tài nguyên có tồn tại trước khi làm yêu cầu GET.

TRACE — Dùng cho mục đích chẩn đoán. Phản hồi sẽ chứa trong phần thân nội dung chính xác của tin nhắn yêu cầu.

OPTIONS — Dùng để mô tả các tùy chọn truyền thông (phương thức HTTP) có sẵn cho tài nguyên đích.

PATCH — Dùng để áp dụng sửa đổi một phần cho tài nguyên.

DELETE —Dùng để xóa tài nguyên được chỉ định.

REST

Representational State Transfer (REST) là phong cách kiến trúc nơi yêu cầu và phản hồi chứa biểu diễn trạng thái hiện tại của tài nguyên hệ thống.

Cách "Thông thường":

  • https://carapp.com/search?make=wv&model=beetle

Cách REST:

  • https://carapp.com/search/vw/beetle

Bạn có thể tìm hiểu thêm về REST ở đây nếu tò mò.

Header HTTP (HTTP Headers)

Có ba thành phần chính tạo nên cấu trúc yêu cầu/phản hồi. Bao gồm:

  • Dòng đầu tiên
  • Headers
  • Phần thân/Nội dung (Body/Content)

Chúng ta đã nói về dòng đầu tiên trong yêu cầu và phản hồi HTTP, và chức năng phần thân cũng đã nhắc. Bây giờ chúng ta sẽ nói về header HTTP.

Header HTTP được thêm sau dòng đầu tiên và được định nghĩa dưới dạng cặp tên:giá trị cách nhau bằng dấu hai chấm. Header HTTP dùng để gửi tham số bổ sung cùng với yêu cầu hoặc phản hồi.

Như đã nói, phần thân tin nhắn bao gồm dữ liệu gửi với yêu cầu hoặc dữ liệu nhận cùng phản hồi.

Có các loại header khác nhau được nhóm dựa trên việc sử dụng thành 4 loại rộng:

  • Header chung (General header) — Header dùng được cho cả yêu cầu và phản hồi và độc lập với dữ liệu trao đổi.
  • Header yêu cầu (Request header) — Header này định nghĩa tham số cho dữ liệu được yêu cầu hoặc tham số đưa ra thông tin quan trọng về client tạo yêu cầu.
  • Header phản hồi (Response header) — Header này chứa thông tin về phản hồi đến.
  • Header thực thể (Entity header) — Header thực thể mô tả nội dung tạo nên phần thân tin nhắn.
Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web
Các loại header

Mã Trạng Thái HTTP (HTTP Status Codes)

Khi lướt web, bạn có thể gặp trang "404 error: not found" hoặc "500 error: server is not responding".

Đây là mã trạng thái HTTP.

Mọi tin nhắn phản hồi HTTP phải chứa mã trạng thái HTTP trong dòng đầu, cho biết kết quả yêu cầu.

Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web

Có năm nhóm mã trạng thái được nhóm theo chữ số đầu:

  • 1xx — Thông tin (Informational).
  • 2xx — Yêu cầu thành công.
  • 3xx — Client được chuyển hướng đến tài nguyên khác.
  • 4xx — Yêu cầu chứa lỗi nào đó.
  • 5xx — Máy chủ gặp lỗi khi thực hiện yêu cầu.

Đây là danh sách đầy đủ Mã Phản Hồi Trạng Thái HTTP và giải thích.

HTTPS (Hypertext Transfer Protocol Secure - Giao thức Truyền Siêu Văn Bản An Toàn)

Phiên bản an toàn của giao thức HTTP là HyperText Transfer Protocol Secure (HTTPS). HTTPS cung cấp truyền thông được mã hóa giữa trình duyệt (client) và trang web (server).

Trong HTTPS, giao thức truyền thông được mã hóa bằng Transport Layer Security (TLS) hoặc Secure Sockets Layer (SSL).

Giao thức do đó cũng thường được gọi là HTTP qua TLS, hoặc HTTP qua SSL.

Cả TLS và SSL đều dùng hệ thống mã hóa bất đối xứng. Hệ thống mã hóa bất đối xứng dùng khóa công khai (khóa mã hóa) và khóa riêng (khóa giải mã) để mã hóa tin nhắn.

Ai cũng có thể dùng khóa công khai để mã hóa tin nhắn. Tuy nhiên, khóa riêng được giữ bí mật, nghĩa là chỉ người nhận dự định mới có thể giải mã tin nhắn.

Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web
Ví dụ hệ thống mã hóa bất đối xứng

Bắt tay SSL/TLS (SSL/TLS handshake)

Khi bạn yêu cầu kết nối HTTPS đến trang web, trang web gửi chứng chỉ SSL của nó đến trình duyệt. Quy trình trình duyệt và trang web khởi tạo truyền thông gọi là "bắt tay SSL/TLS".

Bắt tay SSL/TLS bao gồm một loạt bước nơi trình duyệt và trang web xác thực lẫn nhau và bắt đầu truyền thông qua đường hầm SSL/TLS.

Như bạn có thể nhận ra, khi đường hầm an toàn tin cậy được dùng trong kết nối HTTPS, biểu tượng ổ khóa xanh lá hiển thị trong thanh địa chỉ trình duyệt.

Làm Chủ HTTP: Hướng Dẫn Cốt Lõi Về Truyền Thông Web
Ví dụ một trong các trang an toàn của tôi

Lợi ích của HTTPS

Các lợi ích chính của HTTPS là:

  • Thông tin khách hàng, như số thẻ tín dụng và thông tin nhạy cảm khác, được mã hóa và không thể chặn nghe.
  • Khách truy cập có thể xác minh bạn là doanh nghiệp đã đăng ký và sở hữu tên miền.
  • Khách hàng biết họ không nên truy cập trang không có HTTPS, do đó họ tin tưởng và hoàn tất mua hàng trên trang dùng HTTPS nhiều hơn.

Cảm ơn bạn đã đọc! Xem thêm bài viết tương tự trên hồ sơ freeCodeCamp của tôi. Và xem những thứ vui khác tôi xây dựng trên trang GitHub.