小满网络模型http1-http2 浏览器缓存
應用層
是最靠近應用程序的OSI層。由用戶使用相應的接口實現自己的服務。
協議有:HTTP FTP SMTP等
表示層
數據的表示、安全、壓縮。可確保一個系統的應用層所發送的信息被另一個系統的應用層讀取。格式有: JPEG、ASCII、加密格式等。
在表示層,數據按照網絡能理解的方案進行格式化。管理數據的加密與解密。
會話層
建立、管理、終止會話,對應主機進程,指本地主機與遠程主機正在進行的會話。負責在網絡的兩節點之間建立、維持和終止通信。
會話層的功能包括:建立通信鏈接,保持會話過程通信連接的暢通,同步兩個節點之間的對話,決定通信是否被終端以及通信中斷時從何處重新發送。
有人會把會話層稱為網絡通信得到“交通警察"。當通過撥號向你的ISP(因特網服務提供商)請求連接到因特網時,ISP服務器上的會話層向你與你的PC客戶機上的會話層進行協商連接。若你的電話線偶然脫落時,會話層將會檢測到連接中斷并重新發起連接。會話層通過決定節點通信的優先級和通信時間的長短來設置通信期限。
傳輸層
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP等,數據包一旦離開網卡即進入網絡傳輸層。定義了一些傳輸數據的協議和端口號,如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,用于傳輸可靠性要求不高,數據量小的數據)。主要是講從下層接收的數據進行分段和傳輸,到達目的地后再進行重組。常常把這一層數據叫做段。
OSI模型中最終要的一層。傳輸協議同時進行瀏覽控制或是基于接收方可接收數據的快慢程度規定適當的發送速率。除此之外,傳輸層按照網絡能處理的最大尺寸將較長的數據包進行強制分割。例如,以太網無法接收大于1500字節的數據包。發送方節點的傳輸層將數據分割成較小的數據片,同時對每一數據片安排一個序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程稱作排序。
網絡層
進行邏輯地址尋址,實現不同網絡之間的路徑選擇等。協議有:ICMP IGMP IP ARP RARP等。
在位于不同地理位置的網絡中的兩個主機系統之間提供連接和路徑選擇。Internet的發展使得從世界各站點訪問信息的用戶量大大增加,網絡層正式管理這種連接的層。
OSI模型的第三層,其主要功能是將網絡地址翻譯成對應的物理地址,并決定如何將數據從發送方路由到接收方。
網絡層通過綜合考慮發送優先權、網絡擁塞程度、服務質量以及可選路由的花費來決定從一個網絡中節點A到另一個網絡節點B的最佳路徑。由于網絡層處理,并智能指導數據傳送,路由器連接網絡各段,所以路由器屬于網絡層。在網絡中,”路由“是基于編址方案、使用模式以及可達性來指導數據的發送。
網絡層用于本地LAN網段之上的計算機系統建立通信,它之所以可以這樣做,是因為它有自已的路由地址結構,這種結構與第二層機器地址是分開的、獨立的。這種協議稱為路由或可路由協議。路由協議包括IP、Novell公司的IPX以及AppleTalk協議。
數據鏈路層
建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網絡層接收的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的物理地址以及檢錯和控制信息。其中的地址確定了幀將發往何處,而糾錯和控制信息則確保幀無差錯到達。如果在傳送數據時,接收點檢測到所傳數據中有差錯,就要通知發送方重發這一幀。
數據鏈路層在物理層提供比特流服務的基礎上,建立相鄰節點之間的數據鏈路,通過差錯控制提供數據幀在信道上無差錯的傳輸,并進行各電路上的動作系列。作用主要是物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。
物理層
建立、維護、斷開物理連接。
主要定義物理設備標準,如網線的接口類型,光纖的接口類型,各種傳輸介質的傳輸速率等。主要作用是傳輸比特流(就是有1、0轉化為電力強弱來進行傳輸,到達目的地后在轉化為1、0)。
?
第二小節http1.1? http2
1.二進制分幀層
在二進制分幀層上,HTTP 2.0 會將所有傳輸的信息分割為更小的消息和幀,并對它們采用二進制格式的編碼 ,其中HTTP1.x的首部信息會被封裝到Headers幀,而我們的request body則封裝到Data幀里面。
2.多路復用
?從上圖可以看出,HTTP的持久連接可以有效減少TCP建立連接和斷開連接的次數,這樣的好處是減少了服務器額外的負擔,并提升整體HTTP的請求時間
3.頭部壓縮
- 維護一份相同的靜態字典,包含常見的頭部名稱,以及常見的頭部名稱和值的組合
- 維護一份相同的動態字典,可以動態的添加內容
- 通過靜態Huffman編碼對傳輸的首部字段進行編碼
演示demoHTTP/2: the Future of the Internet | Akamai
4.客戶端緩存
協商緩存
協商緩存就是通過服務器來判斷緩存是否可用
Last-Modify搭配If-Modify-Since:瀏覽器第一次請求一個資源的時候,服務器返回的header中會加上Last-Modify,Last-modify是該資源的最后修改時間;當瀏覽器再次請求該資源時,request的請求頭中會包含If-Modify-Since,該值服務端header中返回的Last-Modify。服務器收到If-Modify-Since后,根據資源的最后修改時間判斷是否命中緩存
Etag搭配If-None-Match:web服務器響應請求時,會在header中加一個Etag用來告訴瀏覽器當前資源在服務器的唯一標識(生成規則由服務器決定)。則再次向web服務器請求時帶上頭If-None-Match (Etag的值)。web服務器收到請求后將If-None-Match與Etag進行比對,決定是否命中協商緩存;
ETag和Last-Modified的作用和用法,他們的區別:
1.Etag要優于Last-Modified。Last-Modified的時間單位是秒,如果某個文件在1秒內改變了多次,那么他們的Last-Modified其實并沒有體現出來修改,但是Etag每次都會改變確保了精度;
2.在性能上,Etag要遜于Last-Modified,畢竟Last-Modified只需要記錄時間,而Etag需要服務器通過算法來計算出一個hash值;
3.在優先級上,服務器校驗優先考慮Etag。
如果服務器收到的請求沒有Etag值,則將If-Modified-Since和被請求文件的最后修改時間做比對,一致則命中協商緩存,返回304;不一致則返回新的last-modified和文件并返回200
強緩存
Expires:值為絕對時間,不過Expires 是HTTP 1.0的東西,現在默認瀏覽器均默認使用HTTP 1.1
Cache-Control:值為相對時間,如果與Expires同時設置的話,其優先級高于Expires。
cache-control有下面幾個比較常用的設置值:
-max-age:設置失效時間,客戶端在這個有效期內,如果又請求該資源,就直接讀取緩存
-no-cache:不使用本地緩存。需要使用緩存協商,先與服務器確認返回的響應是否被更改,如果之前的響應中存在ETag,那么請求的時候會與服務端驗證,如果資源未被更改,則從緩存中取數據
-no-store:直接禁止瀏覽器緩存數據,每次用戶請求該資源,都會向服務器發送一個請求。
-public:可以被所有的用戶緩存,包括終端用戶和CDN等中間代理服務器。
-private:只能被終端用戶的瀏覽器緩存,不允許CDN等中繼緩存服務器對其緩存。
服務器通過設置http中hdader的Expires和cache-control字段告訴瀏覽器換存的有效期。這種方法會有一個固定時間,所帶來的問題是如果服務器數據進行了更新,但是還沒有到強緩存的過期時間,則數據無法更新
總結
以上是生活随笔為你收集整理的小满网络模型http1-http2 浏览器缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js数组、数组嵌套根据某个字段排序(ea
- 下一篇: 2017年html5行业报告,云适配发布