《圖解HTTP》

瞭解web及網絡基礎   

    TCP/IP協議族各層:

    應用層:FTP(文件傳輸協議);DNS(域名系統)                                                   

    傳輸層:TCP(傳輸控制協議);UDP(用戶數據報協議)

    端到端,數據單位:數據段

    網絡層:IP(網際協議)


    主機到主機(可以跨不同鏈路),數據單位:數據包

    尋址:IP地址—>MAC地址(用ARP協議)

    路由:維護一張路由表,決定數據的傳輸路線

    鏈路層:以太網,MAC地址,廣播(需要在同一個子網絡)

    數據單位:幀

    物理層:

    數據單位:比特流


    從頁面輸入url到頁面呈現的過程:

    1.瀏覽器通過DNS解析得到url的ip地址

    2.瀏覽器得到服務器的ip地址後,與服務端建立TCP(三次握手)連接

    3.建立TCP連接後,瀏覽器向服務端發送HTTP請求

    4.服務器響應http請求,將請求的資源發送給瀏覽器

    5.瀏覽器釋放TCP連接

                image.png

    DNS解析:客戶端提出域名解析請求,並將該請求發送給本地域名服務器;

    瀏覽器首先查詢本地緩存,若有該記錄,直接返回查詢結果;

    查詢順序:1.瀏覽器緩存;2.系統緩存;3.路由器緩存


簡單的HTTP協議

1.HTTP規定,肯定是從客戶端開始建立通信的,服務器端在沒有接收到請求之前不會發送相應。

2.HTTP是無狀態協議

(使用session+cookie解決需要記錄狀態的情景:通過在請求和相應報文中寫入cookie信息)

                    image.png

3.HTTP的初始版本中,每進行一次通信就要斷開一次連接,而每一次的連接都對應了tcp的三次握手與四次斷開連接。

(1.0版本使用持久連接解決,好處:減少了tcp的重複建立和斷開造成的額外開銷。)


HTTP狀態碼

1XX:信息性狀態碼,接收的請求正在處理

2XX:成功狀態碼,請求正常處理完畢

3XX:重定向狀態碼,需要進行附加操作以完成請求

4XX:客戶端錯誤狀態碼,服務器無法處理請求

    400:請求報文錯誤

    401:用戶須認證

    403:服務器拒絕資源的請求,如權限

    404:服務器上沒有請求的資源

5XX:服務器錯誤狀態碼,服務器處理請求出錯


與HTTP協作的web服務器

    web服務器,可以搭建獨立域名的web網站,也可以作爲中轉服務器。

    通信數據轉發應用程序:

    1.代理:接收客戶端的請求,轉發給其他服務器,不改變請求url

        客戶端 —GET /HTTP/1.1—>  代理服務器—GET /HTTP/1.1—>源服務器(持有資源實體的服務器)

    作用:

        a. 緩存

        b. 針對特定網站的訪問控制,如,客戶端 —GET /HTTP/1.1—>代理服務器,返回請求無法通過

     分類:

        a. 緩存代理/非緩存代理,代理轉發響應時,預先將資源保存在代理服務器上

        b. 透明代理/非透明代理,對報文進行加工

    2.網關:使通信線路上的服務器提供非HTTP協議服務

        客戶端—HTTP請求—>網關—非HTTP協議通信—>非HTTP服務器

        利用網關可以提高通信安全性,因爲可在客戶端與網關的線路上加密。

        如,網關可以連接數據庫;可以和信用卡結算系統聯動等…

    3.隧道:建立一條與其他服務器的通信線路,使用SSL等加密手段通信,隧道本身不會去解析HTTP請求。


HTTP首部

通用首部(請求報文和響應報文都會使用):

    connection:管理持久連接,close/keep-alive控制http的長連接

請求首部字段

    accept:制定媒體類型

    authorization:告知服務器用戶代理認證信息(收到401後,客戶端發給服務器)

    host:相同ip下有多個域名的情況,host指定主機名和端口號

    cookie:服務器接收到的cookie信息

響應首部字段

    location:重定向(配合302)

    proxy-authentication:代理服務器需要的認證信息(代理服務器發給客戶端需要認證的信息)

    www-authentication:服務器需要的認證信息(服務器發給客戶端需要的認證信息)

    set-cookie:開始狀態管理所使用的cookie信息(字段值:name;expire;path;domain;secure;httponly)

實體首部字段

    allow:指定客戶端支持的方法,如get,post…

    expires:緩存失效日期(源服務器發給緩存服務器,緩存服務器對資源做出相應時間的緩存)


確保web安全的HTTPS

HTTP的不足:

    1.通信使用明文(不加密),內容可能被竊聽

    解決:加密處理防止被監聽

    可以通過SSL(安全套接層)或TLS(安全傳輸層協議)的組合使用,加密HTTP的整個通信線路。

    2.不驗證對方的身份,有可能遭遇僞裝。

    解決:SSL不僅提供加密,還使用了證書。

    3.無法證明報文的完整性,有可能已遭篡改

    解決:使用MD5或SHA-1等散列值校驗的方法

HTTPS=HTTP+加密+認證+完整性保護(與SSL組合使用的HTTP被稱爲HTTPS)

    通常HTTP直接和TCP通信,使用SSL時,先和SSL通信,再由SSL和TCP通信。

    SSL:採用非對稱加密(公開密鑰加密)方式:

    一把叫做私有密鑰(解密使用)

    另一把叫公開密鑰(加密使用)(爲了證明公開密鑰是可信的,服務器可以向數字證書認證機構CA提出申請)

    發送密文的一方,使用對方的公開密鑰進行加密處理,對方收到被加密的信息,使用自己的私有密鑰進行解密

    另外一種對稱加密(共享密鑰加密)方式:

    加密解密使用同一個密鑰,所以需要把密鑰也發給對方,可是發送密鑰也是不安全的

確認訪問用戶身份的認證

    BASIC基本認證

    DIGEST摘要認證

    SSL客戶端認證

    FormBase基於表單認證

HTTP的瓶頸

    一條連接上只能發送一個請求

    請求只能從客戶端開始

  解決:AJAX,websocket


HTTP請求報文格式:

    請求行+請求頭部+請求數據

    image.png


HTTP/1.1特性

  1. keep-alive,建立長連接

  2. pipelining 管道,瀏覽器的多個請求可以同時發到服務器,但是服務器的響應只能夠一個接着一個的返回

HTTP2.0特性

    1.多路複用,在一條連接上,可以同時發起無數個請求,並且響應可以同時返回

    2. 服務器將響應主動推動到客戶端緩存中,如請求html,服務器主動返回js等信息

    3. 對消息頭進行壓縮傳輸,能夠節省消息頭佔用的網絡的流量。( HTTP/1.x 每次請求,都會攜帶大量冗餘頭信息,浪費帶寬資源)

    4.採用二進制格式傳輸數據,而非 HTTP/1.x 的文本格式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章