網絡模型分兩種,一種是OSI模型,一種是TCP/IP模型,後者應用更加普遍。這裏也主要介紹TCP/IP模型。編程
首先分爲4層,從上到下依次是應用層、傳輸層、網絡層、數據鏈路層。 OSI模型中將網絡分爲:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。 TCP/IP的應用層是OSI模型中應用層、表示層、會話層的集合,而物理層因爲不是咱們常常考慮的問題,因此TCP/IP模型沒有把物理層算上。緩存
數據鏈路層的核心是以太網協議。以太網協議規定一組電信號是一個數據包,叫一個振,每一個幀(frame)分爲標頭(head)和數據(data),標頭包含一些說明性東西,好比發送者,接收者,和數據類型之類的。例如一個電腦發個數據包出去,會廣播給局域網(子網)內全部電腦設備的網卡,而後每臺設備都從數據包獲取接收者的mac地址與本身網卡的mac地址比對,若是同樣就說明這是發給本身的數據包。服務器
定義了一套IP協議,有IPV4和IPV6,以IPV4爲例,由32個二進制數字組成,用4個10進制數字表示。網絡
IP地址分爲三類:函數
這三類IP地址構成了三級網絡,將網絡劃分爲了三層,不一樣子網經過上層網關進行轉發。網站
ip之間的通訊加密
ip之間是如何通訊的勒,這裏有一個子網以及子網掩碼的概念。好比192.168.56.1和192.168.56.2判斷是不是一個子網,子網掩碼是255.255.255.0,子網掩碼用來與ip地址進行與運算,獲得的一個值是否徹底同樣來判斷是不是屬於一個子網。192.168.56.1與255.255.255.0進行位與與192.168.56.2與255.255.255.0進行位與是同樣的,都爲192.168.56.0,即他們是同一個子網。同一個子網之間的Ip能夠直接進行網絡通訊,由於子網內的全部設備會上傳本身的ip地址和mac地址映射,設備會緩存同一子網其餘設備的Ip地址以及mac地址映射,當拆開IP協議層數據包時能夠迅速以目標IP查詢ARP緩存,以這個mac地址構建數據鏈路層的數據包。3d
那麼不一樣子網又是如何聯通的勒?這裏就是網關發揮做用的時候了,網關有多張網卡。以本身家裏的路由器爲例,也是一個網關,路由器有一張網卡與部的網關相連,也有一張網卡與內部設備進行相連。固然路由器與網關相連使用的是一個公網ip,這裏有一個NAT轉換的概念,路由器上裝有NAT軟件,能夠將私有網絡(也就是咱們本身家連上這臺路由器全部的網絡設備)的私有ip轉換爲同一個公網ip,這樣作主要是爲了解決ip不足的問題,由於ipv4協議就那麼幾位,ip確定是不夠的。路由器在內網與公網之間中起着轉發者的做用,固然路由器上面也有網關,當咱們要訪問某個Ip也不在路由器全部網卡位與的子網中時還須要進行多個網關的轉發,這種轉發路徑由路由表決定。路由表的的生成方式能夠是動態(協議共享)或者靜態(手動配置)的,當匹配路由表都失敗時使用缺省路由,路由到相連的其餘網關。blog
傳輸層的協議有TCP協議或UDP協議,TCP協議是一套基於端口的點對點通訊協議,規定包括如何鏈接,如何發送,讀取消息。是有鏈接的,不容許丟數據。 UDP則不須要創建鏈接,傳完數據也不須要確認,容許丟數據。 針對此層協議的操做,可以使用SocketAPI進行編程,其函數create,listen,accept,connect,read和write等等抽象了TCP/IP協議的一些操做。dns
合併了OSI中的應用層會話層表示層,協議有好比常見的HTTP協議,郵件協議等等,定義的是經過TCP拿到數據以後怎麼處理的協議。
首先解釋下涉及到的TCP數據包關鍵頭信息。
標誌位含義
序號含義
注:一般狀況下數據傳輸階段返回的ack爲上一個接收包的seq+len,但三次握手階段和四次揮手則直接爲seq+1。即三次握手四次揮手的序號計算方式忽略了報文長度。
注意:ACK、SYN和FIN這些大寫的單詞表示標誌位,其值要麼是1,要麼是0;ack、seq小寫的單詞表示序號。
爲何是三次?爲了讓雙方都知道彼此已準備好。設想一個場景,客戶端好久以前的第一次握手到達服務器了,可是在這以前,後面重試的握手請求已經創建了鏈接發送了數據,那麼在這個時候客戶端是不認識服務器的響應的,因此當服務器返回響應的時候,客戶端不會認識這個響應,沒法創建鏈接。
爲何鏈接的時候是三次握手,關閉的時候倒是四次握手?由於當Server端收到Client端的SYN鏈接請求報文後,能夠直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。可是關閉鏈接時,當Server端收到FIN報文時,極可能並不會當即關閉SOCKET,因此只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端全部的報文都發送完了,我才能發送FIN報文,所以不能一塊兒發送。故須要四步握手。另外,第四次揮手後,客戶端會等待一段時間在釋放鏈接,確保不會再次收到服務器的第三次揮手(服務器若是沒收到客戶端的第四次揮手則會嘗試重發第三次揮手)。
也就是HTTP+SSL協議,具體流程如圖:
問題:
經過本地權威證書的公鑰解開發過來的證書,獲得證書的信息摘要,對比證書內容。
由於單鑰加解密比非對稱加密效率高。非對稱加密的核心效果只是用做簽名(保證接收者接收的信息來自受信任的私鑰密碼擁有者或發送的消息只能被擁有私鑰方解開)。