1. 程式人生 > >2017屆畢業生安卓面試題-計算機網路篇

2017屆畢業生安卓面試題-計算機網路篇

計算機網路

即將多臺計算機通過線路在網路管理協議下實現資源共享和資訊傳遞

這裡寫圖片描述
名詞定義
IP:
IP層接收由更低層(網路介面層例如乙太網裝置驅動程式)發來的資料包
並把該資料包傳送到更高層—TCP或UDP層
IP資料包中含有傳送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。

TCP:
TCP是面向連線的通訊協議,通過三次握手建立連線,通訊完成時要拆除連線(四次揮手),由於TCP是面向連線的所以只能用於端到端的通訊。

TCP將它的資訊送到更高層的應用程式,例如Telnet的服務程式和客戶程式。應用程式輪流將資訊送回TCP層,TCP層便將它們向下傳送到IP層,裝置驅動程式和物理介質,最後到接收方。

UDP:
UDP是面向無連線的通訊協議,UDP資料包括目的埠號和源埠號資訊,由於通訊不需要連線,所以可以實現廣播發送。
UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程式設計師程式設計驗證。

ICMP:
ICMP與IP位於同一層,它被用來傳送IP的控制資訊。它主要是用來提供有關通向目的地址的路徑資訊

1. OSI與TCP/IP各層的結構與功能,都有哪些協議。
OSI開放式系統互聯 TCP/IP傳輸控制協議
OSI模型有7層 TCP/IP模型有5層

OSI模型
(對應TCP/IP網介面層)
物理層:規定通訊裝置的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連線。
資料鏈路層:傳輸有MAC地址的幀以及錯誤檢測功能

====================
網路層:(兩個主機之間)為資料包(packets)選擇路由
傳輸層:(兩個主機的應用程序之間)提供端對端的介面=

==================
(對應TCP/IP應用層)
會話層:訪問驗證和會話管理等(如伺服器驗證使用者登入)
表示層:資料格式化,程式碼轉換,資料加密等
應用層:為作業系統或網路應用程式提供訪問網路服務的介面:檔案傳輸,電子郵件,檔案服務,虛擬終端等

TCP/IP模型
網路介面層
網路層:(IP,ICMP)
傳輸層:(TCP,UDP)
應用層:(HTTP,FTP,DNS)

2. TCP與UDP的區別。

TCP:面向連線,從端到端和可靠的資料傳遞,提高IP環境下的可靠傳輸,流量的控制
針對可靠性高的應用
HTTP,DNS,FTP等協議應用到

UDP:不面向連線,不為IP提供可靠性、 流控或差錯恢復功能
適用於可靠性要求低、傳輸經濟的應用
DNS等協議應用到

3. TCP報文結構。
這裡寫圖片描述

4. TCP的三次握手與四次揮手過程,各個狀態名稱與含義,TIMEWAIT的作用。

三次握手:
客戶端傳送SYN訊息包請求給伺服器,伺服器會返回SYN+ACK確認的訊息表明已經連上,
客戶端收到確認訊息會再發送一個SYN+ACK報文,這樣三次握手,成功後就開始分配資源建立連線

為什麼不是兩次握手:
兩次握手是不可靠的連線
如果兩次握手,網路延時造成的超時請求,會再次建立一個新的無效連線,並一直保持,佔用資源

四次揮手:
客戶端傳送中斷連線請求Fin報文(表示客戶端不會發送來資料了),這個時候服務端可能是處於傳送資料過程中,所以服務端傳送ACK報文表示自己還沒準備關閉,服務端收到報文進入FIN_WAIT狀態,當服務端傳送資料完畢,向客戶端傳送一個FIN報文,表示可以斷開連線,客戶端再發送ACK報文,若2MSL後未響應表示服務端關閉了,客戶端再關閉

自己理解:客戶端斷開:客戶端傳送Final請求報文,服務端收到final報文,傳送ACK報文給服務端等待資料傳輸完,服務端進入Final-wait狀態,服務端資料傳輸完成,向客戶端傳送Final報文,自身進入Final-wait狀態
客戶端傳送ACK報文確認,之後連線成功斷開連線

四次的目的:防止資料未載入完就斷開的情況

TIMEWAIT的作用:報文請求的有效等待時間,超過就會從網路中消失

5. 請說出HTTP協議位於TCP/IP模型中的第幾層?為什麼說HTTP是可靠的資料傳輸協議?。
http位於TCP/IP中的應用層,因為http在傳輸層基於TCP協議而TCP協議是面向連線的可靠協議所以http可靠

6. HTTP和HTTPS的區別?

https是用SSL加密的。電腦與伺服器之間收發的資訊傳輸將更加安全。
Web伺服器啟用SSL需要獲得一個伺服器證書並將該證書與要使用SSL的伺服器繫結。 http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議

要比http協議安全

7. HTTP協議的結構?

請求報文:請求行 - 通用資訊頭 - 請求頭 - 實體頭 - 報文主體

響應報文:狀態行 - 通用資訊頭 - 響應頭 - 實體頭 - 報文主體

7. HTTP請求的完整過程?
Http請求的過程,與電腦上訪問一個網頁大概相同

  1. 建立TCP連線
    在HTTP工作開始之前,Web瀏覽器首先要通過網路與Web伺服器建立連線,該連線是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網路。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能進行更高層協議的連線,因此,首先要建立TCP連線,一般TCP連線的埠號是80。

  2. Web瀏覽器向Web伺服器傳送請求命令
    一旦建立了TCP連線,Web瀏覽器就會向Web伺服器傳送請求命令。例如:GET/sample/hello.jsp HTTP/1.1。

  3. Web瀏覽器傳送請求頭資訊
    瀏覽器傳送其請求命令之後,還要以頭資訊的形式向Web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。

  4. Web伺服器應答
    客戶機向伺服器發出請求後,伺服器會客戶機回送應答, HTTP/1.1 200 OK ,應答的第一部分是協議的版本號和應答狀態碼。

  5. Web伺服器傳送應答頭資訊
    正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同應答向用戶傳送關於它自己的資料及被請求的文件。

  6. Web伺服器向瀏覽器傳送資料
    Web伺服器向瀏覽器傳送頭資訊後,它會發送一個空白行來表示頭資訊的傳送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式傳送使用者所請求的實際資料。

  7. Web伺服器關閉TCP連線
    一般情況下,一旦Web伺服器向瀏覽器傳送了請求資料,它就要關閉TCP連線,然後如果瀏覽器或者伺服器在其頭資訊加入了這行程式碼:Connection:keep-alive
    TCP連線在傳送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。

7. HTTP怎麼處理長連線?
在HTTP/1.0中,預設使用的是短連線。也就是說,瀏覽器和伺服器每進行一次HTTP操作,就建立一次連線,但任務結束就中斷連線。
HTTP/1.1起,預設使用長連線,用以保持連線特性。使用長連線的HTTP協議,會在響應頭有: Connection:keep-alive。Keep-Alive不會永久保持連線,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實現長連線要客戶端和服務端都支援長連線。

8. 電腦上訪問一個網頁,整個過程是怎麼樣的?
1)瀏覽器向DNS伺服器請求解析該URL中的域名所對應的IP地址;
2)解析出IP地址後,根據該IP地址和預設埠80,和伺服器建立TCP連線;
3)瀏覽器發出讀取檔案(URL中域名後面部分對應的檔案)的HTTP請求,該請求報文作為TCP三次握手的第三個報文的資料傳送給伺服器;
4)伺服器給出相應,把對應的html文字傳送給瀏覽器;
5)釋放TCP連線;
6)瀏覽器將該文字顯示出來。

9. Cookie與Session的作用於原理?
cookie機制:客戶端保持狀態。“Set-Cookie”域;cookie的內容主要包括:名字,值,過期時間,路徑和域。瀏覽器檢查所有儲存的cookie,如果某個cookie所宣告的作用範圍大於等於將要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上傳送給伺服器。

session機制:伺服器端保持狀態。 當程式需要為某個客戶端的請求建立一個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了一個session標識(稱為session id),如果已包含則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來使用(檢索不到,會新建一個);如果客戶端請求不包含session id,則為此客戶端建立一個session並且生成一個與此session相關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次響應中返回給客戶端儲存。