計算機網絡

計算機網絡

五層架構

中和Osi和TCP/IP的優勢,採用一種只有五層協議體系結構,自上而下分別是:瀏覽器

  1. 應用層:提供應用接口,爲用戶直接提供各類網絡服務。緩存

    ​ 常見協議有:域名系統DNS,支持萬維網的http協議,支持電子郵件的SMTP協議安全

    http協議

    底層協議爲tcp服務器

    TCP協議能夠對上層網絡提供接口,使上層網絡數據的傳輸創建在「無差異」的網絡之上。cookie

    TCP是底層通信協議,定義的是數據傳輸和鏈接方式的規範
    HTTP是應用層協議,定義的是傳輸數據的內容的規範網絡

    http協議與tcp協議相互關係session

    http是應用層,而tcp是傳輸層,http是基於tcp鏈接基礎之上的。簡而言之,tcp是單純創建鏈接,不涉及請求的數據以及簡單傳輸,而http是用來收發數據的。架構

    1.客戶端發送http請求給服務端,請求包括請求頭,請求內容tcp

    ​ 請求頭包含:1.請求方法get/post,請求url,http版本post

    2.請求的數據

    ​ 3.是否有cookies以及緩存

    ​ 請求體:即請求的內容

    2.服務端收到http請求,返回http響應

    ​ 響應頭包含:cookies或sessions,狀態碼,內容大小等

    3.客戶端收到之後,由瀏覽器完成對數據的渲染,包括執行js腳本

  2. 傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗。四層交換機
    協議有 :TCP UDP,數據包一旦離開網卡即進入網絡傳輸層

  3. 網絡層:爲數據包選擇路由,進行邏輯地址尋址,路由器

    協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

  4. 數據鏈路層:傳輸有地址的幀以及錯誤檢測功能,交換機,網卡

    協議有:SLIP,CSLIP,PPP,ARP,RARP,MTU

  5. 物理層:以二進制數據形式在物理媒體上傳輸數據,中繼器

    TCP三次握手與四次揮手

    三次握手目的是雙方確認各自數據發送與接收正常,創建可靠的通信

    第一次握手,服務端可以確認C發送正常,本身接受正常

    第二次握手,客戶端確認本身發送,接收正常,S發送,接受正常;服務端可以確認C發送正常,本身接受正常

    第三次握手,雙方各自確認本身發送,接受正常,缺一不可

    四次揮手

    客戶端:向服務端發送斷開鏈接信息

    服務端:收到客戶端發出的斷開鏈接信息,並響應,此時處於半關閉狀態

    服務端:向客戶端發送斷開鏈接信息

    客戶端:對服務端斷開鏈接信息進行響應

    TCP與UDP區別

    ​ TCP是面向鏈接的,經過校驗和,序號標識,重發控制等進行可靠的傳輸,保證數據的完整性,而UDP不須要創建鏈接,不可以保證可靠交付。可是UDP具備實時性,工做過效率高,佔用系統資源少,適應於對高速傳輸以及實時性有較高要求的廣播通訊。

    ​ 此外TCP鏈接是點到點的,而UDP支持一對多,多對多。

打開網頁過程

  1. 首先進行DNS解析

    輸入www.baidu.com,首先找本地hosts文件,查找是否有百度對應的ip地址,有即返回ip,而後經過80端口訪問百度的服務器,若沒有,則經過DNS服務器找對應的域名與ip的對應關係,即DNS解析過程

  2. 而後創建TCP鏈接

  3. 發送http請求

  4. 服務器處理請求並返回http報文

  5. 瀏覽器解析渲染頁面

  6. 鏈接結束

各類協議與http協議的關係

​ 理解概述:

​ 首先發給DNS服務器,進行域名解析,獲得IP地址後生成針對目標Web服務器的HTTP請求報文,而後報文由TCP協議負責傳輸,爲了方便通訊,HTTP請求報文被分爲報文段,而後每一個報文段可靠的傳輸給對方,而後報文段由IP層負責一邊中轉一遍傳送,服務器收到報文段後重組報文段,而後由應用層的HTTP協議處理請求的內容,請求的結果以 一樣的方式進行回傳。

http長鏈接,短鏈接

  1. http/1.0:默認使用短鏈接

    客戶端與服務器每進行一次http操做,就創建一次鏈接,任務結束就中斷鏈接

  2. http/1.1起:默認使用長鏈接,保持鏈接特性

    當打開網頁以後,客戶端與服務端創建的tcp鏈接不會中斷,當再次向服務器發送請求,會繼續使用這條鏈接,固然也不會無限保持鏈接,有一個保持時間,能夠設定在服務器軟件中。

http爲無狀態協議,如何保存用戶狀態

​ session機制能夠保存用戶狀態,好比向購物車加入商品,系統並不知道是哪一個用戶操做的,由於http是無狀態的,服務端給特定的用戶建立特定的session就能夠標識這個用戶並跟蹤這個用戶。(如何實現跟蹤,在cookie中附加一個session ID)

​ Cookie被禁用怎麼辦?利用URL重寫把session ID直接附加在url後面。

cookie與session

​ cookie保存用戶信息,將數據保存在客戶端,單個cookie不大於4k,cookie數量有限制,會話cookie與持久cookie,若是使用 Cookie 的一些敏感信息不要寫入 Cookie 中,最好能將 Cookie 信息加密而後使用到的時候再去服務器端解密。

​ session記錄用戶狀態,數據保存在服務器端,安全性更高,與服務器內存有關,session過多會增長服務器壓力。

URI與URL的區別

uri:統一資源標識符,能夠惟一標識一個資源,身份證

url:統一資源定位符,能夠提供該資源的路徑,家庭住址

http與https區別

  1. 默認端口號不一樣,http爲80端口,https爲443端口

  2. http基於tcp,傳輸內容爲明文,不安全

  3. https是創建在ssl之上的http協議,所傳輸的內容都通過加密,但比http耗費更多的服務器資源,HTTPS鏈接緩存不如HTTP高效。同時ssl證書比較燒錢。握手階段比較耗時,如非必要,沒有理由犧牲用戶體驗。

    https工做原理:

    1. 客戶端經過https的url向服務端發起請求
    2. 服務端收到請求後將網站證書信息(包含公鑰)返回給客戶端
    3. 客戶端與服務端協商ssl鏈接的安全等級
    4. 在此基礎上,客戶端創建會話密鑰,利用網站公鑰將會話密鑰加密,並傳給網站
    5. 服務器利用本身的私鑰對會話密鑰進行解密
    6. 服務器利用會話密鑰加密與客戶端之間的通訊

get與post區別

  1. 使用get請求時,參數在url中顯示,而post不會

  2. post數據傳輸量較大,可達到2M,而get因爲url長度限制,只能傳遞1024字節

  3. get方式請求的數據會被瀏覽器存入緩存,某種狀況下會帶來安全問題,而post相對會避免這種問題

相關文章
相關標籤/搜索