對於Web開發者而言,掌握HTTP協議是技術成長的必經之路。只有夯實HTTP基礎,纔可能在Web這條路上走的更遠。緩存
網絡協議分層
經典五層模型
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
爲應用軟件提供了不少服務
構建於TCP協議之上
屏蔽網絡傳輸相關細節服務器
向用戶提供可靠的端到端(End-to-End)服務
傳輸層向高層屏蔽了下層數據通訊的細節網絡
網絡層爲數據在結點之間傳輸建立邏輯鏈路spa
數據鏈路層在通訊的實體間創建數據鏈路鏈接code
物理層主要做用是定義物理設備如何傳輸數據orm
Http協議發展歷史
http/0.9
- 只有一個命令GET
- 沒有HEADER等描述數據的信息
- 服務器發送完畢,就關閉TCP鏈接
http/1.0
- 增長了不少命令
- 增長status code和header
- 多字符集支持、多部分發送、權限、緩存等
http/1.1圖片
- 持久鏈接
- pipeline
- 增長host和其餘一些命令
http2
- 全部數據以二進制傳輸
- 同一個鏈接裏面發送多個請求再也不須要按照順序來
- 頭信息壓縮以及推送等提升效率的功能
HTTP的三次握手
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
URI、URL、URN
URI
- Uniform Resource Identifier/統一資源標誌符
URL
- Uniform Resource Locator/統一資源定位器
- http://user:pass@host.com:80/path?query=string#hash(此類格式的都叫作URL,好比ftp協議)
URN
- 永久統一資源定位符
- 在資源移動以後還能被找到
- 目前尚未很是成熟的使用方案