Communication protocol HTTP
Có nhiều protocol để giao tiếp như TCP, IP, HTTP, FTP...nhưng nghe bà con nói học làm web thì phải nắm chắc HTTP nó mới dễ hiểu. Anh em xem qua cái này phát
HTTP: HyperText Tranfer Protocol tạm hiểu là một giao thức làm việc trên quy tắc trao đổi chính là ''siêu văn bản" thông qua internet,( với hai hình thức chính là "Get" và "Post"), với nhiệm vụ chính là nhận thông tin từ webClient về webserver và nhận phản hồi từ Webserver thông qua một interface là một trang web, cho phép dùng cho world Wide web WWW. HTTP là giao thức ứng dụng của bộ giao thức nền tảng TCP/IP
Mô hình HTTP
Giao
thức HTTP là một giao thức có dạng yêu cầu/đáp ứng. Khi một máy khách
gửi một yêu cầu đến máy chủ gồm phương thức yêu cầu (gồm GET, POST,
HEAD,…), URI, phiên bản giao thức, kèm với thông điệp kiểu MIME gồm các
tham số chỉnh sửa của yêu cầu, thông tin máy khách và nội dung chính
thông qua kết nối đến máy chủ. Máy chủ sẽ đáp ứng bằng dòng trạng thái,
gồm phiên bản giao thức thông điệp và mã thông báo thành công hay lỗi,
kèm với thông điệp kiểu MIME có chứa thông tin về máy chủ, các thông tin
thêm về đối tượng và nội dung chính của đối tượng.
Hầu hết
giao tiếp HTTP được khởi tạo từ UA và một yêu cầu sử dụng nguồn tài
nguyên trên máy chủ gốc (Origin Server - O). Trong trường hợp đơn giản
nhất, giao tiếp này có thể được thực hiện thông qua một kết nối duy nhất
(v) giữa UA và O như Hình 1.
Tình
huống phức tạp hơn xảy ra khi có một hoặc nhiều điểm trung gian trong
chuỗi yêu cầu/đáp ứng. Có ba dạng trung gian phổ biến như: proxy,
gateway và tunnel (Một chương trình trung gian hoạt động như một điểm
trung chuyển giữa hai kết nối).
Proxy: là một điểm chuyển tiêp, nhận các yêu cầu từ một Url, viết lại tất cả hoặc một phần yêu cầu và chuyển tiếp yêu cầu đã đươc định dạng về webserver xác định bởi Url.
Gateway: Hoạt động như một phần phía trên của một máy chủ khác UA và nếu cần thiết thì sẽ biên dịch và gửi yêu cầu tới máy chủ khác UA
Hoạt động như một điểm trung chuyển giữa hai kết nối mà không cần biên dịc lại yêu cầu. Các tunnel sử dụng cần chuyển yêu cầu qua một điểm trung gian khác( như Tường lửa ..) mặc dù điểm này có thể không hiểu nội dung thông điệp.
Proxy: là một điểm chuyển tiêp, nhận các yêu cầu từ một Url, viết lại tất cả hoặc một phần yêu cầu và chuyển tiếp yêu cầu đã đươc định dạng về webserver xác định bởi Url.
Gateway: Hoạt động như một phần phía trên của một máy chủ khác UA và nếu cần thiết thì sẽ biên dịch và gửi yêu cầu tới máy chủ khác UA
Hoạt động như một điểm trung chuyển giữa hai kết nối mà không cần biên dịc lại yêu cầu. Các tunnel sử dụng cần chuyển yêu cầu qua một điểm trung gian khác( như Tường lửa ..) mặc dù điểm này có thể không hiểu nội dung thông điệp.
Hình 2 mô tả ba điểm
trung gian (A, B và C) giữa tác nhân người dùng và máy chủ gốc. Một
thông điệp yêu cầu/đáp ứng sẽ truyền qua toàn bộ các điểm này bằng bốn
kết nối riêng biệt. Mỗi điểm trung gian có thể được tham gia vào nhiều
kết nối và các giao tiếp khác tại cùng một thời điểm. Ví dụ, điểm B có
thể nhận yêu cầu từ nhiều máy khách khác ngoài A, hay chuyển tiếp yêu
cầu đến nhiều máy chủ khác ngoài C đồng thời với việc xử lý yêu cầu từ
điểm A.
Bất cứ
thành phần nào tham gia kết nối mà không hoạt động như một tunnel đều có
thể sử dụng một bộ nhớ đệm (cache) nội bộ để xử lý các yêu cầu. Bộ nhớ
đệm giúp cho chuỗi yêu cầu/đáp ứng được xử lý nhanh hơn khi một trong
các thành phần tham gia trong chuỗi có yêu cầu về dữ liệu. Hình 3 sau
đây minh họa chuỗi yêu cầu/đáp ứng từ điểm UA đến điểm B khi tại điểm B
có lưu trữ dữ liệu tạm thời từ điểm O (thông qua điểm C), không được lưu
trữ tạm thời tại UA hay tại điểm A.
Người ta goi HTTP là một giao thức Stateless( phi trạng thái), nghĩa là các nhóm lệnh hoạt động độc lập với nhau, lệnh sau không có bất kì mối liên hệ gì với nhóm lệnh trước. Đây là một hạn chế của HTTP vì nó rất khó trong việc thiết kế các website thông minh có thể sử lý nhanh nhạy các yêu cầu phức tạo và đa dạng của người dùng nhập vào.
An toàn bảo mật của giao thức HTTP phiên bản 1.1 (phiên bản HTTP mới nhất) cũng là một vấn đề hết sức quan trọng đối với các nhà phát triển ứng dụng, nhà cung cấp thông tin và người dùng cuối. Các vấn đề an toàn bảo mật cần xem xét bao gồm: Bảo vệ thông tin cá nhân (lạm dụng thông tin đăng nhập máy chủ, truyền thông tin nhạy cảm, mã hóa thông tin nhạy cảm ở dạng URI, vấn đề riêng tư khi kết nối để nhận các tiêu đề), các tấn công tệp tin và tên đường dẫn, hệ thống tên miền (Domain Name System – DNS) giả, các tiêu đề giả, các vấn đề sắp xếp nội dung, vấn đề xác thực và máy khách không hoạt động, vấn đề về proxy và cache, các tấn công từ chối dịch vụ trên proxy. Do đó, để đảm bảo an toàn khi truyền thông trên mạng, có thể sử dụng HTTPS (Hypertext Transfer Protocol Secure – đây là sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL (Secure Socket Layer) hay TLS (Transport Layer Security) cho phép trao đổi thông tin một cách bảo mật trên Internet).
An toàn bảo mật của giao thức HTTP phiên bản 1.1 (phiên bản HTTP mới nhất) cũng là một vấn đề hết sức quan trọng đối với các nhà phát triển ứng dụng, nhà cung cấp thông tin và người dùng cuối. Các vấn đề an toàn bảo mật cần xem xét bao gồm: Bảo vệ thông tin cá nhân (lạm dụng thông tin đăng nhập máy chủ, truyền thông tin nhạy cảm, mã hóa thông tin nhạy cảm ở dạng URI, vấn đề riêng tư khi kết nối để nhận các tiêu đề), các tấn công tệp tin và tên đường dẫn, hệ thống tên miền (Domain Name System – DNS) giả, các tiêu đề giả, các vấn đề sắp xếp nội dung, vấn đề xác thực và máy khách không hoạt động, vấn đề về proxy và cache, các tấn công từ chối dịch vụ trên proxy. Do đó, để đảm bảo an toàn khi truyền thông trên mạng, có thể sử dụng HTTPS (Hypertext Transfer Protocol Secure – đây là sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL (Secure Socket Layer) hay TLS (Transport Layer Security) cho phép trao đổi thông tin một cách bảo mật trên Internet).
yêu cầu/đáp ứng.
Trả lờiXóa= request / response : không dịch
cơ bản là đọc qua thấy vẫn chưa hiểu gì về HTTP cả.
Trình độ như hiện tại đọc RFC thì hơi khó (ít ai dám đọc RFC)
cái "tiêu chuẩn của VN" cho vào thấy buồn cười :))
Protocol: hiểu đơn giản, là một tập các quy định về "LỆNH" 2 bên sẽ phải tuân theo khi giao tiếp với nhau (server <=> client).
cách đơn giản nhất để hiểu rõ cái này là dùng telnet .
VD:
telnet google.com 80
rồi gõ các lệnh quy định bởi HTT protocol để lấy các giá trị về.
http://www.familug.org/2013/03/familug-guide-to-web-server.html
Trả lờiXóahttp://www.familug.org/2013/03/curl.html