HTT P( Hypertext Transfer protocol ): Giao thức truyền siêu văn bả n.

Một phần của tài liệu Tổng quan về giao thức SIP (Trang 25 - 31)

Là một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web client)

là giao thức Client/Server dùng cho World Wide Web-WWW, HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).

Cấu trúc của HTTP Message

HTTP là một giao thức kiểu client/server; client đưa ra các request, và server sẽ trả lời các request này. Cấu trúc các HTTP message vì thế cũng thay đổi theo yếu tố này. Có một định dạng cho HTTP request và cho các response.

1.HTTP Request

Mỗi request bắt đầu với một Request-Line. Dòng này chỉ ra phương thức mà client yêu cầu, tài nguyên, và phiên bản của HTTP mà client có thể hỗ trợ. Request-Line có thể có tiếp sau một hay nhiều header và một message body.

Một HTTP request bắt đầu với một Request-Line và có thể bao gồm các header và message body. Phần header có thể mô tả quá việc truyền dữ liệu, xác định các yêu cầu hay phần message body kèm theo.

GET / HTTP/1.1 Accept: */*

Accept-Language: en-us A ccept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Host: www.ft.com

Connection: Keep-Alive

Request-Line chứa ba mục phân biệt, đó là method, uri, và phiên bản HTTP, mỗi mục được phân tách bởi một hay nhiều khoảng trống.

Một HTTP Request-Line có một phương thức, một địa chỉ định danh tài nguyên (URI), và thông báo phiên bản HTTP.

Phương thức được xác định trên dòng đầu tiên của Request-Line. HTTP định nghĩa tất cả là 8 phương thức. Một HTTP server chỉ được yêu cầu hỗ trợ các phương thức GET và HEAD; nếu chúng hỗ trợ các phương thức HTTP khác, sự hỗ trợ đó phải

được gắn với các quy tắc của HTTP. Đặc tả HTTP cũng có các mở rộng để các phương thức khác có thể được bổ sung trong tương lai.

Mục tiếp theo trong Request-Line là Request-uri. Mục này cung cấp địa chỉ định danh tài nguyên cho một tài nguyên. Ví dụ, Request-uri là /, chỉ ra một request cho tài nguyên gốc. Cho các request không yêu cầu một tài nguyên cụ thể (như là TRACE request hay trong một số trường hợp cả OPTIONS request), client có thể dùng một dấu * cho Request-uri.

Mục cuối cùng trong Request-Line là phiên bản HTTP. Như trong ví dụ, phiên bản HTTP là 1.1 chứa trong đoạn text HTTP/1.1.

Tiếp sau Request-Line, một HTTP request có thể bao gồm một hay nhiều dòng message header. Một message header có thể chứa các loại general header, request header, hoặc entity header. General header áp dụng trong truyền dữ liệu; request header áp dụng cho các request cụ thể, và entity header áp dụng cho message body trong request.

Một HTTP request luôn chứa một dòng trống sau Request-Line và bất kỳ header nào. Nếu request bao gồm một message body, phần body đi sau một dòng trống. Dòng trống - blank line rất quan trọng vì server xác định được phần kết của request, hoặc phần kết của header. Không có dòng trống, server nhận các message sẽ không biết được các header khác nữa có tiếp tục được truyền không.

1.HTTP Response

HTTP Response khá giống với HTTP Request. Dấu hiệu khác biệt duy nhất là response bắt đầu với một dòng trạng thái status so với Request-Line. Status-Line, cũng giống như Request-Line, chứa ba mục ngăn cách bởi các khoảng trống.

Một HTTP response bắt đầu với một Status-Line và có thể chứa các header và một message body. Header có thể mô tả quá trình truyền dữ liệu, xác định response, hoặc phần body kèm theo.

Dòng bắt đầu với phiên bản cao nhất của HTTP mà server hỗ trợ. HTTP/1.1 200 OK

Date: Sun, 08 Oct 2000 18:46:12 GMT Server: Apache/1.3.6 (Unix) Keep-Alive: timeout=5, max=120 Connection: Keep-Alive

Content-Type: text/html <html>...

HTTP Status-Line bắt đầu với chỉ báo HTTP, mã trạng thái, và một đoạn text mô tả response.

Hai mục còn lại trong Status-Line là Status-Code và Reason-Phrase. Status-Code là một bộ ba kí tự chỉ báo kết quả của request. Status-Code phổ biến nhất là 200. Giá trị này thông báo yêu cầu của client thành công.

Phân loại HTTP Status Code Header Field

HTTP request và response có thể có một hay nhiều message header. Message header bắt đầu với tên trường và dấu (“:”). Trong một số trường hợp, chỉ có tên trường trong phần header. Trong hầu hết các trường hợp khác header chứa các thêm thông tin khác nữa, các thông tin này đi sau dấu “:”. Một message header kết thúc ở cuối dòng, nhưng nếu một client cần biểu diễn nhiều hơn một dòng thì dòng tiếp theo sẽ bắt đầu với một hay nhiều kí tự trống hay kí tự gạch ngang (ascii character 8). Ví dụ sau là của User-Agent header:

GET / HTTP/1.1 Accept: */*

Accept-Language: en-us

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Host: www.ft.com

Connection: Keep-Alive

Nếu một message header chứa một chuỗi giá trị phân tách bởi dấu “,”; ta có thể tách ra thành các dòng riêng, như ví dụ sau tách các giá trị của Accept-Encoding: GET / HTTP/1.1

Accept: */*

Accept-Language: en-us Accept-Encoding: gzip Accept-Encoding: deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Host: www.ft.com

Connection: Keep-Alive

Bảng sau thể hiện các HeaderField, phạm vi áp dụng của chúng trong các request hay response, hay trong message body (entity) đi kèm với request hay response.

Header General Request Response Entity

Accept ● Accept-Charset ● Accept-Encoding ● Accept-Language ● Accept-Ranges ● Age ● Allow ● Authentication-Info ● Authorization ● Cache-Control ● Connection ●

Content-Encoding ● Content-Language ● Content-Length ● Content-Location ● Content-MD5 ● Content-Range ● Content-Type ● Cookie ● Cookie2 ● Date ● Etag ● Expect ● Expires ● From ● Host ● If-Match ● If-Modified-Since ● If-None-Match ● If-Range ● If-Unmodified- ● Since ● Last-Modified ● Location ● Max-Forwards ● ● Meter ● Pragma ● Proxy-Authenticate ● Proxy- Authorization ● Range ● Referer ● Retry-After ● Server ● Set-Cookie2 ● TE ● Trailer ● Transfer-Encoding ● Upgrade ● User-Agent ● Vary ●

Warning ●

WWW-Authenticate ●

HTTP Header Field

Status

Code Ý nghĩa

100-199 Informational; server nhận được request nhưng kết quả cuối cùng không sẵn có.

200-299 Success; server có khả năng thực hiện các yêu cầu.

300-399 Redirection; client có thể chuyển hướng request sang một server hay tài nguyên khác

400-499 Client error; request có lỗi.

500-599 Server error; server không thể thực hiện các yêu cầu ngay cả khi request hợp lệ.

Bảng phân loại HTTP Status Code

Một phần của tài liệu Tổng quan về giao thức SIP (Trang 25 - 31)

Tải bản đầy đủ (DOC)

(31 trang)
w