學習HTTP以前,很必要了解一下關於Web網絡基礎。html
一、應用層:應用層決定了向用戶提供應用 服務時的通訊活動,好比FTP(文件傳輸協議)、DNS(域名系統)、HTTP(超文本傳輸協議)web
應用層就像目的地瀏覽器
二、傳輸層:傳輸層對上層應用層提供處理網絡鏈接中的兩臺計算機之間的數據傳輸,有兩個協議TCP(傳輸控制協議)、UDP(用戶數據協議)安全
傳輸層就像是馬路上的規則服務器
在TCP協議中要經過三次握手才能創建可靠鏈接。cookie
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器 進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED狀態,完成三次握手。網絡
UDP和TCP的區別學習
最本質的區別就是TCP是面向鏈接的,而UDP是非面向鏈接的。編碼
什麼叫面向鏈接呢?事先爲所發送的數據開闢出鏈接好的通道,而後再進行數據發送,像打電話,只能兩人打,第三人打就顯示佔線加密
非面向鏈接:是指通訊雙方不須要事先創建一條通訊線路,而是把每一個帶有目的地址的包(報文分組)送到線路上,由系統自主選定路線進行傳輸,就像寫信,無論對方有多忙,把信放到郵筒,就與本身無關係了。
TCP支持的服務有FTP、SMTP等,而UDP支持的服務有DNS、SNMP、QQ等
三、網絡層:網絡層用來處理在網絡上流動的數據包。包括IP協議。
網絡層就像馬路上的車,規定了數據傳輸的路線
IP地址指明瞭節點被分配的地址,MAC地址是指網卡全部的固有地址,通俗的理解IP地址就像快遞的終點地址,而MAC地址就像快遞到終點地址之間的間歇地址。
四、鏈路層:一些硬件部分,包括驅動、網卡和光纖等
鏈路層就像是馬路
各協議的職責
DNS是爲了域名解析。
HTTP是爲了生成針對目標Web服務器的HTTP請求報文(用HTTP交互的信息),並判斷是哪一個報文
TCP是爲了方便通訊,將HTTP請求報文割成報文段,把每一個報文段可靠傳給對方,又按照順序重組接收的報文段。
IP是爲了搜索對方地址,一邊中轉一邊傳送。
GET:獲取資源
POST:傳輸實體主題
PUT:傳輸文件
HEAD:得到報文首部
DELETE:刪除文件
OPTIONS:詢問支持的方法
TRACE:追蹤路徑
CONNECT:要求用隧道協議連接代理
詳細例子可參考http://www.cnblogs.com/six-moon/p/5151562.html
持久鏈接節省通信量,持久鏈接就是隻要任意一方沒有提出斷開鏈接,就一直鏈接。持久鏈接使得多數請求以管線化的方式發送可能,管線化就是從發送請求後須要等待並收到響應,才能發送下一個請求。
HTTP爲無狀態協議,須要Cookie進行狀態管理,好比本身的登錄狀態,能夠利用cookie控制本身的客戶端狀態
有時候咱們用百度雲下載文件時,給的連接有時候是編碼的有時候是未經編碼的,編碼可提高傳輸速率。
代理:接收由客戶端發送的請求並轉發給服務器
網關:保證通訊安全性
隧道:保證客戶端和服務器安全通訊
HTTP缺點:通訊不加密內容會被竊聽
不驗證通訊方的身份,遭遇假裝
沒法證實報名完整性,可能回被篡改
因此引入HTTPS
HTTP+加密+認證+完整性保護=HTTPS
加密:經過SSL(安全套接層)或TLS(安全傳輸協議)組合使用,加密HTTP的通訊內容
HTTPS是採用混合加密機制,共享祕鑰+公開祕鑰的方式實現加密
認證:
什麼是HTTP的瓶頸:更新的內容只能顯示在客戶端
解決方法:AJAX和SPYD
可是SPYD也沒法真正消除瓶頸,由於計算機的一些硬件問題的存在,如網卡和CPU等
完全解決問題的方法是:WebSocket,即web瀏覽器和web服務器之間全雙工通訊標準。
優勢是,直接發送數據,不用等待客戶端請求,一直保持鏈接狀態,且首部信息量少,通訊量減小。
客戶端把用戶IE和密碼等登陸信息放入報文的實體部分,以POST方式發送給服務器。
服務器進行身份認證,產生SessionID,加入到Set-Cookie內,返回給客戶端。
客戶端接收到SessionID後,將其加入Cookie,下次請求時,瀏覽器會自動發送Cookie。
具體內容你們能夠看下《圖解HTTP》這本書,講的真心不錯。