文章均爲本人技術筆記,轉載請註明出處https://segmentfault.com/u/yzwallphp
http
(Hypertext Transfer Protocol, 超文本傳輸協議),基於TCP鏈接URL
(Uniform Resource Locator,統一資源定位符),用於指明網絡資源的地址
http報文類型分爲請求報文和響應報文;html
http請求報文由客戶端向服務端發送;算法
http請求報文由三部分組成:
Request-Line(請求行),Request Header(請求報文頭,可選),Body(請求報文,只對POST有效)
segmentfault
請求行格式:
[Request + Request-URI + HTTP-Version + CRLF]
瀏覽器
Request
:請求方法安全
Request-URI
:表示訪問連接服務器
HTTP-Version
:表示HTTP協議版本cookie
CRLF
:表示回車換行,不容許出現單獨的CR
或LF
字符網絡
請求方法類型可分爲:session
GET
:根據Request-URI
,從服務端讀取數據
POST
:根據Request-URI
,向服務端發送數據(Body)
HEAD
:根據Request-URI
,從服務端只讀取響應消息報頭
PUT
:根據Request-URI
,請求服務端存儲一個資源
DELETE
:請求服務端刪除Request-URI
所標識的資源
TRACE
:請求服務器回送收到的請求信息,主要用於測試
CONNECT
:待補充
OPTIONS
:待補充
GET
用於向服務端查詢某些信息, POST
用於向服務端發送應該被保存的數據. 即GET
是從服務器上獲取數據,POST
是向服務器傳送數據
GET
將查詢字符串參數追加到URL尾部,大小有限制; POST
請求把提交數據放入請求正文中. 數據格式不限,大小不受限制;
服務端收到和解釋請求報文後,返回一個http響應報文
http響應報文由三部分組成:
Status-Line(狀態行),Response Header(響應報文頭,可選),Body(響應正文)
狀態行格式爲
HTTP Version + Status Code(響應碼) + Reason-Phase(響應碼描述)
響應碼一共3位,第1位定義響應的類別:
1xx:信息響應類,表示接收到請求而且繼續處理;
2xx:成功響應;
3xx:重定向響應類,須要請求方執行更多操做
4xx:客戶端錯誤,請求包含語法錯誤或者不能正確執行
400:客戶端請求有語法錯誤,不能被服務端處理;
401:請求未受權;
403:服務端收到請求,可是拒絕提供服務;
404:請求資源不存在;
5xx:服務端錯誤,服務端不能執行正確的客戶端請求
500:服務端內部錯誤;
501:保留未實現;
502:網關錯誤,服務器沒法響應;
503:服務暫時失效,一段時間後可能恢復正常;
待補充;
ssl
(secure socket layer,安全套接字層),ssl
協議是Netscape公司提出的安全保密協議,運行在應用層,ssl協議採用加密算法生成40位密鑰,爲應用程序提供數據加密;
https
(Secure Hypertext Transfer Protocol,安全超文本傳輸協議),在http
基礎上經過SSl
協議實現信息安全傳輸;https
使用ssl
在發送端將數據加密,而後由接收端進行解密,加密和解密都須要發送端和接收端經過交換一致的密鑰來實現。
【客戶端】客戶端使用https url訪問Web服務端,要求創建ssl鏈接
【服務端】Web服務端收到客戶端請求,將網站的證書傳送一份給客戶端,證書裏面包含了網站地址,加密公鑰,以及證書的頒發機構等信息。
【客戶端】客戶端收到網站證書後,瀏覽器執行以下操做:
2.1 驗證證書是否受信任
2.2 生成隨機密鑰:若是證書受信任,瀏覽器生成一串隨機密鑰
【客戶端】加密隨機密鑰:瀏覽器用證書提供的公鑰對生成的隨機密鑰進行加密
【客戶端】計算握手信息並加密:瀏覽器使用HASH加密算法計算握手信息,並用隨機密鑰加密,而後發送握手信息給服務端
【服務端】服務端收到握手信息後,執行以下操做:
5.1 解密隨機密鑰:服務端使用本身的私鑰解密出隨機密鑰
5.2 解密握手信息:服務端使用隨機密鑰解密收到的握手信息,並驗證HASH是否與瀏覽器發來的一致
5.3 發送加密握手信息:服務端使用隨機密鑰加密一段握手信息,發送給瀏覽器
【客戶端】瀏覽器解密並計算握手信息的HASH,若是與服務端發來的HASH一致,握手結束;
最後,客戶端與服務端的全部通訊數據都經過隨機密鑰加密傳輸
安全性:http用明文發送內容,不提供任何方式的數據加密,安全性較差;https協議在http基礎上加入ssl協議保證數據安全,ssl憑藉證書來驗證服務器的身份,併爲瀏覽器和服務器之間的通訊加密;
端口:http和https使用的是徹底不一樣的鏈接方式,http使用80端口,https使用443端口;
系統開銷:https系統開銷比http開銷大,傳輸效率不如http;
費用:https中ssl證書須要繳納費用;
cookie數據存放在客戶的瀏覽器上,session數據放在服務器上
cookie不是很安全,別人能夠分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session
session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能 考慮到減輕服務器性能方面,應當使用cookine
單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie
[1] http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
[2] http://www.cnblogs.com/wqhwe/p/5407468.html
[3] http://www.php100.com/html/it/biancheng/2015/0209/8582.html