Java計算機網絡相關筆試面試題

1.GET 和 POST 的區別?

GET 請求可被緩存

GET 請求保留在瀏覽器歷史記錄中

GET 請求可被收藏爲書籤

GET 請求不應在處理敏感數據時使用

GET 請求有長度限制

POST 請求不會被緩存

POST 請求不會保留在瀏覽器歷史記錄中

POST 不能被收藏爲書籤

POST 請求對數據長度沒有要求

2.DNS使用的協議

既使用TCP又使用UDP,首先了解一下TCP與UDP傳送字節的長度限制:

UDP報文的最大長度爲512字節,而TCP則允許報文長度超過512字節。當DNS查詢超過512字節時,協議的TC標誌出現刪除標誌,這時則使用TCP發送。通常傳統的UDP報文一般不會大於512字節。

區域傳送時使用TCP,主要有一下兩點考慮:

輔域名服務器會定時(一般時3小時)向主域名服務器進行查詢以便了解數據是否有變動。如有變動,則會執行一次區域傳送,進行數據同步。區域傳送將使用TCP而不是UDP,因爲數據同步傳送的數據量比一個請求和應答的數據量要多得多。

TCP是一種可靠的連接,保證了數據的準確性。

域名解析時使用UDP協議:

客戶端向DNS服務器查詢域名,一般返回的內容都不超過512字節,用UDP傳輸即可。不用經過TCP三次握手,這樣DNS服務器負載更低,響應更快。雖然從理論上說,客戶端也可以指定向DNS服務器查詢的時候使用TCP,但事實上,很多DNS服務器進行配置的時候,僅支持UDP查詢包。

3.COOKIES和SESSION區別

Cookies是一種能夠讓網站服務器把少量數據儲存到客戶端的硬盤或內存,或是從客戶端的硬盤讀取數據的一種技術。

Cookies是當你瀏覽某網站時,由Web服務器置於你硬盤上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。

session: 當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄後,服務器將終止該會話。

cookie機制:採用的是在客戶端保持狀態的方案,而session機制採用的是在服務端保持狀態的方案。同時我們看到由於服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助cookie機制來達到保存標識的目的。

Session是服務器用來跟蹤用戶的一種手段,每個Session都有一個唯一標識:session ID。當服務器創建了Session時,給客戶端發送的響應報文包含了Set-cookie字段,其中有一個名爲sid的鍵值對,這個鍵值Session ID。

客戶端收到後就把Cookie保存瀏覽器,並且之後發送的請求報表都包含SessionID。HTTP就是通過Session和Cookie這兩個發送一起合作來實現跟蹤用戶狀態,Session用於服務端,Cookie用於客戶端

4.三次握手

第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

完成三次握手,客戶端與服務器開始傳送數據

5.一次完整的HTTP請求過程

域名解析 --> 發起TCP的3次握手 --> 建立TCP連接後發起http請求 --> 服務器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶

6.TCP如何保證可靠傳輸?

三次握手。

將數據截斷爲合理的長度。應用數據被分割成 TCP 認爲最適合發送的數據塊(按字節編號,合理分片)

超時重發。當 TCP 發出一個段後,它啓動一個定時器,如果不能及時收到一個確認就重發

對於收到的請求,給出確認響應

校驗出包有錯,丟棄報文段,不給出響應

對失序數據進行重新排序,然後才交給應用層

對於重複數據 , 能夠丟棄重複數據

流量控制。TCP 連接的每一方都有固定大小的緩衝空間。TCP 的接收端只允許另一端發送接收端緩衝區所能接納的數據。這將防止較快主機致使較慢主機的緩衝區溢出。

擁塞控制。當網絡擁塞時,減少數據的發送。

7.詳細介紹HTTP

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。

特點

簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

支持B/S及C/S模式。

8.URI和URL的區別

URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。Web上可用的每種資源如HTML文檔、圖像、視頻片段、程序等都是一個來URI來定位的

URI一般由三部組成:

訪問資源的命名機制

存放資源的主機名

資源自身的名稱,由路徑表示,着重強調於資源。

URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的Mosaic。採用URL可以用一種統一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。

URL一般由三部組成:

協議(或稱爲服務方式)

存有該資源的主機IP地址(有時也包括端口號)

主機資源的具體地址。如目錄和文件名等

9.HTTPS和HTTP的區別

https協議需要到CA申請證書,一般免費證書很少,需要交費。

http是超文本傳輸協議,信息是明文傳輸;https 則是具有安全性的ssl加密傳輸協 議。

http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

http默認使用80端口,https默認使用443端口

相关文章