Chủ Nhật, 15 tháng 12, 2013

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.

  

                

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).
 

Ứng dụng

HTTP được ứng dụng trong các phần mềm máy chủ Web và trong các trình duyệt Web để trao đổi thông tin giữa máy chủ Web và máy khách Web trên môi trường mạng. Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Bắt buộc áp dụng tiêu chuẩn HTTP phiên bản 1.1 và được xếp vào nhóm Tiêu chuẩn về kết nối.



2 nhận xét:

  1. yêu cầu/đáp ứng.
    = 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ề.

    Trả lờiXóa
  2. http://www.familug.org/2013/03/familug-guide-to-web-server.html
    http://www.familug.org/2013/03/curl.html

    Trả lờiXóa