note: http protocol

2009100413:00

超文件傳輸協定
HTTP
HyperText Transfer Protocol

維基:超文本傳輸協定
http://zh.wikipedia.org/wiki/HTTP


RFC 2616

HTTP 使用 TCP 而不是 UDP (http://en.wikipedia.org/wiki /User_Datagram_Protocol#Difference_between_TCP_and_UDP


HTTP Request Method:

HTTP/1.1 協議中共定義了八種方法 Method,來表明Request-URI指定的資源的不同操作方式 (必須大寫):


OPTIONS

返回伺服器針對特定資源所支持的HTTP請求方法。也可以利用向Web伺服器發送'*'的請求來測試伺服器的功能性。

 
HEAD
HEAD 同 GET, 但 Server端只回應 http header,不回應內容

 
GET
網頁、圖片、檔案 下載(看網頁)

 
POST
網頁上填寫資料送出、填表上傳檔案 幾乎這種

 
PUT
向指定資源位置上傳其最新內容。
DELETE
請求伺服器刪除Request-URI所標識的資源。

 
TRACE
回顯伺服器收到的請求,主要用於測試或診斷。

 
CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理伺服器。


http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
http://zh.wikipedia.org/zh-tw/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE
 

HTTP Server 回應的狀態:

狀態代碼的第一個數字代表當前回應的類型:

  • 1xx 消息——請求已被伺服器接收,繼續處理
  • 2xx 成功——請求已成功被伺服器接收、理解、並接受
  • 3xx 重定向——需要後續操作才能完成這一請求
  • 4xx 請求錯誤——請求含有詞法錯誤或者無法被執行
  • 5xx 伺服器錯誤——伺服器在處理某個正確請求時發生錯誤

參考
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

note:

301 代表 Permanent Redirect(永久定址轉移)
302 則是暫時定址轉移

Ref:http://zh.wikipedia.org/zh-tw/HTTP%E7%8A%B6%E6%80%81%E7%A0%81#3xx.E9.87.8D.E5.AE.9A.E5.90.91





一些傳輸過程的範例


# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK      (server端回應的內容)
Date: Mon, 05 Oct 2009 00:55:23 GMT
Server: Apache
X-Powered-By: PHP/4.4.9
Set-Cookie: dat=123aee; path=/; domain=test.com.tw
Expires: Thu, 15 Oct 2009 00:55:23 GMT
Cache-Control: public, max-age=864000
Last-Modified: Mon, 27 Apr 2009 07:05:43 GMT
Connection: close
Content-Type: text/html

Connection closed by foreign host.

(HEAD 同 GET, 但 Server端只回應 http header,不回應內容)




# telnet localhost 80
OPTIONS * HTTP/1.1
HOST: localhost
bu ekranda birkez daha

HTTP/1.1 200 OK             (server端回應的內容)
Date: Wed, 13 Jun 2007 08:25:21 GMT
Server: Apache/2.2.0 (Unix)
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Length: 0
Content-Type: text/plain


TraceEnable methodunu ekledikten sonra





# telnet localhost 80
OPTIONS * HTTP/1.1
HOST: localhost
bu ekranda birkez daha

HTTP/1.1 200 OK                (server端回應的內容)
Date: Wed, 13 Jun 2007 08:25:21 GMT
Server: Apache/2.2.0 (Unix)
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Content-Type: text/plain





經由 http proxy 來發信

# telnet 192.168.0.85 80   (proxy server)
Trying 192.168.0.85...
Connected to 192.168.0.85.
Escape character is '^]'.
CONNECT xx.xx.xx.xx:25 HTTP/1.0

HTTP/1.0 200 Connection established

220 abc.com.tw ESMTP Postfix  (接下來就是 SMTP protocol)
EHLO test.com
250-abc.com.tw
250-PIPELINING
250-SIZE 51200000
250-VRFY
250-ETRN
250-AUTH LOGIN
250 8BITMIME
MAIL FROM: [email protected]
250 Ok
RCPT TO: [email protected]
250 Ok
DATA
354 End data with .
Subject: proxy smtp test
test
test
.

250 Ok: queued as 68EF1632EF
QUIT
221 Bye
Connection closed by foreign host.