Android面試之計算機網絡基礎

前言 :開始總結一份屬於自己的面試資料。網上雖有,但是收藏和瀏覽真的不如理解和吸納。加油、、

一、各層結構和功能,及都有哪些協議

OSI體系結構爲7層,這裏我們按TCP/IP體系結構講五層來講。

物理層 >>>數據鏈路層>>>網絡層>>>運輸層>>>應用層(表示層,會話層)



1.1、應用層

應用層任務:通過應用進程間的通信交互來完成特定的網絡應用

應用層協議:應用進程間的通信交互規則

報文:應用層交互的數據單元

支持的協議有:

  • 域名系統DNS(Domain Name System)
  • 萬維網HTTP協議 (HyperText Transfer Protocol)
  • 電子郵件的SMTP協議

域名系統DNS:將域名和IP地址相互映射的分佈式數據庫,能夠方便用戶快捷訪問。比如github,如果你再日本訪問,是訪問日本的服務器,在中國訪問的是中國服務器。所以說他是一個分佈式的。
域名協議的作用:將域名轉換爲IP地址,以找到對應的主機

HTTP協議:超文本傳輸協議,WWW(萬維網)都遵守這個協議。最初的目的是爲了發佈和接收HTML頁面。


應用層大白話
這裏可以理解爲計算機之間的翻譯過程,將數據進行二進制編碼



1.2、運輸層

運輸層任務:提供通用的數據傳輸服務供兩臺主機進程間的通信

運輸層協議:運輸層數據傳輸服務規則

傳輸層有複用和分用功能;

複用:一臺主機可以開啓多條線程,多個應用進程可同時使用傳輸服務

分用:傳輸層接收消息,根據消息的頭部信息交給正確的Socket,也就是交給相應的應用進程

支持的協議有:

  • TCP (Transmission Control Protocol)>>> 傳輸控制協議;面向連接,提供可靠的數據傳輸服務
  • UDP (User Datagram Protocol)>>> 用戶數據協議;面向無連接,不保證數據傳輸的可靠性
    (TCP和UDP的將放在後面詳細講)

運輸層大白話
傳輸層將上層數據分割成諸多數據段,方便解決出錯,且爲每段數據封裝,頭部帶有端口號



1.3、網絡層

網絡層任務:選擇合適的網間路由和交換節點,實現終端節點之間的通信。

網絡層協議:網絡層傳輸規則

支持的協議:

  • IP協議 >>> 把運輸層產生的報文和用戶數據封裝成組合數據包進行傳輸
  • ARP協議 >>> 地址解析協議
  • RARP協議 >>> 逆地址解析協議

網絡層大白話
網絡層將上層數據再度封裝爲IP數據報,報頭帶有IP地址,用於標識網絡邏輯地址



1.4、數據鏈路層

數據鏈路層:將數據封裝成數據幀,然後在各個鏈路上傳輸

丟幀:數據鏈路層的控制信息在接收端能夠檢測數據幀中有誤差錯,如果有誤那麼丟棄這幀,以免繼續傳輸浪費資源。如果需要更正數據,那麼就要採用可靠傳輸協議糾錯。(這就說明數據鏈路層不僅可以檢錯還能糾錯)


數據鏈路層大白話
數據鏈路層將上傳數據再度封裝成數據幀,其MAC頭部包含一個重要的MAC地址信息。可以理解爲固化在硬件裏的物理地址



1.5、物理層

物理層:實現相鄰計算機節點之間比特流的透明傳輸


物理層大白話
將上層數據轉成電信號在網絡中傳輸


1.6、補充點

常見硬件設備與五層模型的對應關係
應用層:計算機(其實計算機是融合OSI七層於一身的)
傳輸層:防火牆
網絡層:路由器(嚴格講和我們家裏所用的家用路由器不一致,一般在機房可以見到)
數據鏈路層:交換機(例如家裏的光貓)
物理層:網卡



二、TCP三次握手和四次揮手

TCP三次握手簡單示意圖:

2.1、爲什麼要三次握手?

客戶端發送SYN(TCP/IP建立的握手信號) --> 服務端接收後發給客戶端SYN/ACK 消息響應表示收到了 --> 客戶端收到後向服務端發送ACK表示收到了。

SYN:表示客戶端到服務端消息無誤

ACK:表示服務端到客戶端消息無誤


舉例:正常的男女朋友關係。客戶端(女朋友)發送消息“我要睡了” --> 服務端(男朋友)收到消息 發送“晚安”。如果此時客戶端(女朋友)就次不回了, 說明這是非正常的男女關係。如果此時客戶端(女朋友)發送“安”,說明是雙方關係正常,這是你值得娶回家。這就是爲什麼要三次握手!!!

TCP四次揮手簡單示意圖:

2.2、爲什麼要四次揮手

任何一方在沒有要發送消息時,都可以發送連接釋放通知。注意此時不是完全關閉TCP連接,待對方確認後進入半關閉狀態,當另一方也沒有消息要發送時,也發送連接釋放通知,此時才完全關閉TCP連接。


舉例:A 和 B 打電話,通話即將結束後,A 說“我沒啥要說的了”,B回答“我知道了”,但是 B 可能還會有要說的話,A 不能要求 B 跟着自己的節奏結束通話,於是 B 可能又巴拉巴拉說了一通,最後 B 說“我說完了”,A 回答“知道了”,這樣通話纔算結束。



三、TCP,UDP協議的區別

UDP:面向無連接,速率快。不可靠

TCP:在傳遞數據之前先建立連接,數據傳輸結束後還要釋放資源。可靠但傳輸速率相對慢。

TCP的可靠性體現在:在傳遞數據之前建立連接,在數據傳遞時,通過確認、窗口、重傳、擁塞機制來保證數據傳輸的可靠性。



四、在流浪器中輸入url地址 >> 顯示主頁的過程

1、DNS解析,找到對應的ip地址

2、建立TCP連接

3、發送HTTP請求

4、服務器處理並返回HTTP報文

5、流浪器解析並渲染頁面

6、連接結束



五、狀態碼概括



六、HTTP短連接和長連接

短連接:每次進行網絡請求都要建立連接,和中斷連接

長連接:網絡請求結束後,不會立即中斷連接,也不會永久保持連接,而是在設定的時間內,沒有傳輸時會斷開。

//使用長連接,會在響應頭加入這行代碼
Connection:keep-alive


七、Cookie的作用是什麼?和Session有什麼區別

cookie和Session都是用來跟蹤流浪器用戶身份的會話方式,但兩者用戶場景不同。

  • Cookie:數據保存在客戶端。一些敏感數據不要寫入,且最好是加密後,拿到服務端解密
  • Session:數據保存在服務端


八、URI和URL有什麼區別

URI(Uniform Resource Identifier) :是同一資源標誌符,可以唯一標識一個資源

URL(Uniform Resource Location) :是同一資源定位符,可以提供該資源的路徑。它是一種具體的 URI,他是URI的子類。



九、HTTP和HTTPS的區別

HTTP:超文本傳輸協議。URL以“http起始”,端口號默認80。傳輸完全明文,不做加加密,安全性較低

HTTPS:運行在SSL/TLS上的HTTP,安全性高。URL以“https起始”,端口號默認443


對稱加密:密鑰只有一個,加密解密爲同一個密碼,加密速度快。不安全: 如果中間人從通信開始就截取這個密鑰,那麼信息就泄漏了。

非對稱加密:密鑰公鑰有2個,加密解密使用不同密鑰。比如小明有密鑰A,公鑰B。把公鑰B發給小紅,小紅用公鑰B給自己的公鑰C加密,發給小明。小明用自己的密鑰A解密自己的公鑰B得到小紅的公鑰C。以後小明給小紅髮消息用小紅的公鑰c加密,小紅給小明發消息用小明的公鑰B加密。這樣就相對安全了。其實也不絕對安全: 如果中間人把公鑰B一開是就截取,替換成自己的公鑰,發給小紅,同樣能截取信息。

SSL/TLS:和非對稱加密還不同,是通過流浪器或操作系統上的證書機構完成的。大致意思就是利用流浪器和證書機構的約定的公鑰加密,並生成簽名。等接收端接收後,用約定的公鑰生成簽名和接收信息簽名比對,無誤後,確認沒有被中間人劫持過,然後解密獲得信息,加密傳輸信息



參考文獻(感謝)

計算機網絡基礎知識

計算機網絡之數據傳輸過程

計算機網絡篇

什麼是 HTTPS 協議

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