1.了解web和網絡基礎
-
有客戶端和服務端雙方參與交互
-
客戶端發送請求:request
-
服務端根據請求給出響應:response
-
請求通過URL來指定要獲取都得資源
-
響應內容可以是HTML網頁,或者用json表示的數據或者其他二進制文件內容
-
Web使用一種名為HTTP的協議作為規范,完成從客戶端到服務端的一系列運作流程,而協議是指定規則的約定。Web是建立在HTTP協議上的通信。
1.1 web萬維網和HTTP協議
1.1.1 www萬維網誕生
誕生于:1989年3月,蒂姆·伯納斯-李 博士的一篇論文,提出了讓遠隔兩地的研究者們共享知識的設想。
最初的理念:借助多文檔之間的相關聯形成超文本(HyperText),連成可互相參閱的WWW(World Wide Web,萬維網)。
HTTP:HyperText Transfer Protocol,超文本傳輸協議。 HTML:HyperText Markup Language,超文本標記語言。 URL:Uniform Resource Locator,統一資源定位符。
1.2 HTTP的歷史和版本
1.3 當下http協議的使用現狀
-
場景:除了網頁,承載更多的互聯網應用場景
-
前端:不再依賴瀏覽器,可以是手機app,客戶端或者一另個服務器
-
傳輸方式:Ajax的興起改變了原本的同步請求模式
-
傳輸內容:HTML網頁,二進制文件以外也可以依靠Json表示更廣泛的內容
-
數據安全:HTTP+SSL組成HTTPS協議,同時擴展更多的密碼學能力
2.與http相關的的協議
2.1 TCP/IP協議族
2.1.1 IP網際協議
-
IP(Internet Protocol)協議位于網絡層,負責將數據包遞給對方。
-
任何一個參與到網絡上的設備都會用到IP協議,為系統分配對應的IP地址。
-
IP協議和IP地址不是一回事,IP地址是表明網絡中每個設備的標簽。
-
IP地址需要轉換成網卡的物理地址(MAC地址)才能真正完成數據通信。實際上網絡中數據傳輸是異常復雜的,沒有人能夠完全跟蹤整個傳輸過程,網絡中大小網絡、廣域網、城域網、局域網等嵌套,需要路由才能真正傳輸到目的地。
-
IP地址目前分為 IPV4 和 IPV6兩個版本。
2.1.2 TCP協議
-
TCP位于傳輸層,提供可靠的字節流服務。
-
將大的數據分割成報文段,并將數據可靠的傳輸給對方。
-
保證可靠----三次握手策略
2.2DNS協議
讓IP地址更容易被記住的DNS協議
-
DNS(Domain Name System)域名服務,與HTTP一樣,位于TCP/IP分層的應用層的協議,它負責提供域名到IP地址的解析服務。
-
域名:www.baidu.com, pic.baidu.com, sports.sina.com.cn
-
根域名: com cn com.cn org tech info me
-
級域名:baidu.com sina.com.cn qq.com 163.com 12306.cn
-
子域名:pic.baidu.com sports.sina.com.cn news.qq.com
-
如果要使用域名完成網絡通訊,必須先從域名服務器獲取域名對應的IP地址。
相關網絡協議---各協議之間的關系圖
2.3SSL,HTTPS協議
HHTP協議安全性不足
-
公開。HTTP是一個公開的協議,任何人都可以隨時了解協議的細節,并可以模仿、模擬、偽造HTTP請求獲取服務端資源。
-
網絡。HTTP是為網絡數據傳輸而生的,根本職責就是傳輸數據,那么網絡上任何一個 傳輸節點,包括代理、網管、路由器等都可以隨時知道HTTP傳輸的內容。
-
明文。HTTP/1.1協議本身沒有加密規則,所以整個報文體都是明文在網絡上流轉。
HTTP協議安全性的解決辦法
SSL/TSL安全傳輸
-
SSL(Secure Socket Layer) 安全 套接層
-
TSL(Transport Layer Security)安全傳輸層協議
-
HTTP與SSL或TSL組合使用,建立安全通路
-
SSL+HTTP = HTTPS
-
HTTPS(HTTP Secure)超文本傳輸安全協議
-
-
SSL通路與TCP一樣,為了安全和完整性都犧牲了一些效率
加密報文體
-
HTTP協議的報文分為:報文頭、報文體
-
針對報文體的明文內容,結合密碼學相關技術
-
只將報文體的內容進行加密,保證數據安全
-
這種方式需要客戶端、服務端單獨支持,提高了系統實現的復雜度
-
而密鑰和加密算法可以完全私有化,安全性相對較高
實際應用中,已經更多采用兩種方式結合,即加密通訊又加密報文體
3.HTTP協議
HTTP是什么?
HyperText Transfer Protocol ,超文本傳輸協議
-
協議
-
有兩個或者多個參與者
-
定義了交互的約定和規范
-
-
傳輸
-
http是一個專門用來在兩點之間傳輸內容的協議
-
包括請求方和響應方
-
-
超文本
-
http不僅可以傳輸文本
-
還可以傳輸音頻、視頻、文件
-
HTPP不是什么?
-
不是瀏覽器、不是操作系統
-
http只是瀏覽器等客戶端傳輸數據時使用的規范
-
-
不是HTML
-
http和html經常一起出現但是他們不一樣
-
html是超文本的載體,傳輸的內容
-
-
不是編程語言
-
http不是java、python這種編程語言
-
但是可以用語言來模擬http請求
-
3.1 URI與URL
URI(Uniform Resource Identifier),統一資源標識符
URL(Uniform Resource Locator),統一資源定位符,也就是網址
3.2 http報文結構
一個例子
3.3 請求方法
3.4 響應狀態碼
3.5 http請求頭
Http首部
重要的HTTP首部參數
3.6 無狀態與身份認證
4.HTTP協議總結
HTTP協議特點
-
靈活可擴展、首部、內容、狀態碼都可自定義
-
可靠的傳輸協議、基于TCP協議
-
是一個應用層協議,與ftp、smtp相比應用更廣泛
-
采用請求應答通訊模式,客戶端和服務端(C/S)
-
無狀態的協議
-
實體數據可分段、可壓縮、支持多語言、靈活編碼
HTTP/1.1的優點
-
簡單、靈活、容易擴展
-
應用廣泛、不受編程語言、軟件、硬件的約束
-
無狀態減輕服務器的壓力、更容易組成服務器集群
-
明文傳輸讓協議更容易理解、更直觀、調試更容易
HTTP/1.1的缺點
-
無狀態需要Cookie技術支持
-
明文傳輸讓數據毫無隱私可言、不安全
-
沒有客戶身份驗證、容易偽裝、篡改
-
請求應答模式、對高并發網絡傳輸有挑戰