HyperText Transfer Protocol
客戶端與服務器直接通信的一個協議
1. 什麼是協議(Protocol)
協議這個詞主要應用在計算機領域,就是連入網絡的計算機都有遵循一定的技術規範,關於硬件、軟件和端口等的技術規範。計算機通信網是由許多具有信息交換和處理能力的節點互連而成。要使整個網絡有條不紊地工作,就要求每個節點必須遵守一些事先約定好的有關數據格式及時序等的規則。這些爲實現網絡數據交換而建立的規則、約定或標準就稱爲網絡協議。
通信雙方預先定義好的一個通信規範或是通信規則。
比如說:紅外遙控協議(照相機)
遙控器上的燈按照32768Hz閃爍16次,停止7.33ms,再閃爍16次,這樣就是立即拍照。
遙控器上的燈按照32768Hz閃爍16次,停止5.36ms,再閃爍16次,就是延時5s拍照。
當照相機讀取,收到遙控器上發射的這種規律、閃爍的紅外的規則後,照相機就能知道是什麼意思。因爲它們之前已經約定好了,按照這種規則來閃爍,所以它們就可以通信了。而且可以實現相應的功能。
再比如說:飛鴿傳書協議
飛鴿傳書類似QQ,不過它是在局域網使用的一個即時通訊的工具。飛鴿傳書協議是一個相對簡單的局域網內信息傳輸協議。
發送消息也是需要協議的,要發一條消息,不僅要發出這條消息內容本身,還有一些附加的其它內容比如 消息來自哪裏,發送消息者姓名,etc.
版本號:包編號:發送者姓名:發送者主機名:命令字:附加信息(消息內容)
1:23149:riverlet:127.0.0.1:\x20:balabalala
接收者收到這條消息後就可以解析消息內容,拿到相關信息。
HTTP協議(超文本傳輸協議)
歷史版本
1. 最早是HTTP/0.9版本,這個協議比飛鴿傳書協議還要簡單。
GET /index.html
Telnet工具演示,(用來在服務器和客戶端直接建立通信(TCP連接),建立連接後客戶端輸入的信息會被即時發送到服務器端)
>telnet example.com 80
告訴telnet連接到example.com這臺服務器上80端口。
輸入:GET /
HTTP/1.0 505 HTTP Version Not Supported
Content-Type: text/html
Content-Length: 379
Connection: close
Date:
Server:
<?xml version="1.0" encoding="iso-8859-1"?>
......
</html>
遺失對主機連接。
因爲剛輸入的是HTTP/0.9的協議,所以不支持
2. HTTP/1.0 (1996年誕生)
POST /index.html HTTP/1.0
在HTTP/0.9的基礎上加了POST支持,提供了對CGI的支持,可以看到動態生成的內容,並且html也添加了圖像支持
添加了緩存相關header
If-Modified-Since: Wed, 18 Mar 2020 09:21:55 GMT
添加了身份認證
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
默認值: close
Connection: close
>telnet example.com 80
GET HTTP/1.0
HTTP/1.0 404 Not Found
Content-Type: text/html
Date:
Server:
Content-Length: 345
Connection: close
<?xml version="1.0"
......
</html>
遺失對主機的連接
3. HTTP/1.1 (2000年誕生)
GET /index.html HTTP/1.1
2. HTTP通信交互流程
3. 常見HTTP header的含義及作用
4. 常見HTTP響應狀態碼的含義
5. Cookie、Session的原理
6. HTTP緩衝策略
7. HTTP安全、常見攻擊方式及防範策略