Android面試之計算機網絡基礎

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

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

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

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



1.一、應用層

應用層任務:經過應用進程間的通訊交互來完成特定的網絡應用
應用層協議:應用進程間的通訊交互規則
報文:應用層交互的數據單元
支持的協議有:面試

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

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

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


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



1.二、運輸層

運輸層任務:提供通用的數據傳輸服務供兩臺主機進程間的通訊
運輸層協議:運輸層數據傳輸服務規則
傳輸層有複用和分用功能;
複用:一臺主機能夠開啓多條線程,多個應用進程可同時使用傳輸服務
分用:傳輸層接收消息,根據消息的頭部信息交給正確的Socket,也就是交給相應的應用進程服務器

支持的協議有:markdown

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

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



1.三、網絡層

網絡層任務:選擇合適的網間路由和交換節點,實現終端節點之間的通訊。
網絡層協議:網絡層傳輸規則
支持的協議:

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

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



1.四、數據鏈路層

數據鏈路層:將數據封裝成數據幀,而後在各個鏈路上傳輸
丟幀:數據鏈路層的控制信息在接收端可以檢測數據幀中有偏差錯,若是有誤那麼丟棄這幀,以避免繼續傳輸浪費資源。若是須要更正數據,那麼就要採用可靠傳輸協議糾錯。(這就說明數據鏈路層不只能夠檢錯還能糾錯)


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



1.五、物理層

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


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


1.六、補充點

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



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

TCP三次握手簡單示意圖:

2.一、爲何要三次握手?

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


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

TCP四次揮手簡單示意圖:

2.二、爲何要四次揮手

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


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



3、TCP,UDP協議的區別

UDP:面向無鏈接,速率快。不可靠
TCP:在傳遞數據以前先創建鏈接,數據傳輸結束後還要釋放資源。可靠但傳輸速率相對慢。
TCP的可靠性體如今:在傳遞數據以前創建鏈接,在數據傳遞時,經過確認、窗口、重傳、擁塞機制來保證數據傳輸的可靠性。



4、在瀏覽器中輸入url地址 >> 顯示主頁的過程

一、DNS解析,找到對應的ip地址
二、創建TCP鏈接
三、發送HTTP請求
四、服務器處理並返回HTTP報文
五、瀏覽器解析並渲染頁面
六、鏈接結束



5、狀態碼歸納



6、HTTP短鏈接和長鏈接

短鏈接:每次進行網絡請求都要創建鏈接,和中斷鏈接
長鏈接:網絡請求結束後,不會當即中斷鏈接,也不會永久保持鏈接,而是在設定的時間內,沒有傳輸時會斷開。

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


7、Cookie的做用是什麼?和Session有什麼區別

cookie和Session都是用來跟蹤瀏覽器用戶身份的會話方式,但二者用戶場景不一樣。

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


8、URI和URL有什麼區別

URI(Uniform Resource Identifier) :是同一資源標誌符,能夠惟一標識一個資源
URL(Uniform Resource Location) :是同一資源定位符,能夠提供該資源的路徑。它是一種具體的 URI,他是URI的子類。



9、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 協議

相關文章
相關標籤/搜索