一圖學完!計算機網絡(http相關)含面試題


圖在最後)

1.HTTP(超文本傳輸協議)

1.1.HTTP的特徵

HTTP的特徵: 支持客戶/服務器模式,簡單快速,靈活,無連接,無狀態。
相應解釋:
1.簡單快速: 客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

2.靈活: HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type(Content-Type是HTTP包中用來表示內容類型的標識)加以標記。

3.無連接: 應答後,即斷開連接。採用這種方式可以節省傳輸時間。(相應技術:Keep-Alive)

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

1.2.HTTP方法(8種)

1.GET方法(獲取資源): 請求制定的頁面信息,並返回實體主體。

2.POST方法(傳輸實體主體): 向指定資源提交數據進行處理請求。數據包含在請求體中。後一個請求不會把第一個請求覆蓋掉。(所以Post用來增資源)

3.PUT方法(傳輸文件): 從客戶端向服務器傳送的數據取代指定的文檔的內容。如果兩個請求相同,後一個請求會把第一個請求覆蓋掉。(所以PUT用來改資源)

4.HEAD方法(獲取報文首部): 類似於GET請求,只不過返回的響應中沒有具體的內容,用於獲取報頭。

5.DELETE方法(刪除文件): 請求服務器刪除指定的頁面。

6.OPTIONS方法(詢問支持的方法): 允許客戶端查看服務器的性能。

7.CONNECT方法(要求用隧道協議連接代理): HPPT/1.1協議中預留給將連接改爲管道方式的代理服務器。

8.TRACE方法(追蹤路徑): 回顯服務器收到的請求,主要用於測試或判斷。

1.3.HTTP狀態碼(常見)

1XX 信息提示:
100 Continue:告訴客戶端,應該繼續發送請求。

2XX 成功:
200 OK:請求成功。(其後是對GET和POST請求的應答文檔)
202 Accepted:供處理的請求已被接受,但是處理未完成。
204 No Content:服務器成功處理了請求,但沒有返回任何實體內容,可能返回新的頭部信息。

3XX重定向:
301 Moved Permanently:客戶端請求的網頁已經永久的移動到新的位置。

4XX客戶端錯誤:
404 Not Found:服務器無法找到被請求的頁面。

5XX服務器錯誤:
500 Internal Server Error:請求未完成。服務器遇到不可預知的情況。
503 Service Unavailable:請求未完成。服務器臨時過載或維護。

1.4.HTTP報文格式

請求報文: 由請求行,請求頭,空行和請求內容組成

請求行:請求行中包含,請求方法字段、URL字段、協議版本字段三部分組成,之間由空格分隔開。

請求頭:由不定數量的鍵值對組成,每行爲一個鍵值對,key和value之間通過冒號分隔。作用:用於通知服務器有關客戶端的請求信息。

空行:用來告訴服務器,接下來就是請求的內容了。

請求內容:涵蓋請求。

響應報文: 狀態行,消息報頭,空行和響應正文。

2.重要知識點(面試題)

2.1.HTTP1.0和HTTP1.1的區別

1.長連接: HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲,在HTTP1.1中默認開啓Connection: keep-alive。在HTTP1.0中默認是使用短連接的,也就是說每一次請求都要建立起一次連接。

2.緩存處理: 在HTTP1.0中主要使用了If-Modified-Since 和 Expires,而在http1.1中出現了跟多的緩存控制策略,例如Entity-tag、If-Unmodified-Since、If-Match、If-None-Match。

3.帶寬優化以及網絡連接的使用: 在1.0中,存在着一些帶寬浪費,譬如,一些用戶只想請求某個對象的一部分內容,而服務器卻將整個內容都發送了過來,並且不支持斷點續傳功能,而1.1在請求頭部引入了range頭,它允許請求資源的某個部分,返回碼爲206(Partial Content),此種做法方便了開發者調試以及合理的利用帶寬資源。

4.錯誤狀態響應碼: 在HTTP1.1中新增了24個錯誤狀態響應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生衝突;410(Gone)表示服務器上的某個資源被永久性的刪除。

2.2.Cookie和Session的的區別

Cookie 一般用來保存用戶信息 比如:
①我們在 Cookie 中保存已經登錄過得用戶信息,下次訪問網站的時候頁面可以自動幫你登錄的一些基本信息給填了;
②一般的網站都會有保持登錄也就是說下次你再訪問網站的時候就不需要重新登錄了,這是因爲用戶登錄的時候我們可以存放了一個 Token 在 Cookie 中,下次登錄的時候只需要根據 Token 值來查找用戶即可(爲了安全考慮,重新登錄一般要將 Token 重寫);
③登錄一次網站後訪問網站其他頁面不需要重新登錄。

Session 的主要作用就是通過服務端記錄用戶的狀態:
典型的場景是購物車,當你要添加商品到購物車的時候,系統不知道是哪個用戶操作的,因爲 HTTP 協議是無狀態的。服務端給特定的用戶創建特定的 Session 之後就可以標識這個用戶並且跟蹤這個用戶了。

區別: Cookie 數據保存在客戶端(瀏覽器端),Session 數據保存在服務器端,相對來說 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要寫入 Cookie 中,最好能將 Cookie 信息加密然後使用到的時候再去服務器端解密。

2.3.在瀏覽器輸入url地址到顯示的全過程(打開一個網頁使用的協議)

1.瀏覽器查找域名的ip地址,並建立連接。
查找過程: 瀏覽器首先會看自己緩存中有沒有對應的ip地址,如果有的話就直接去訪問;如果沒有,瀏覽器會去查看本地的hosts文件,看看有沒有和這個URL對應的ip地址,如果有的話就直接用, 如果本地的hosts 文件沒有能夠找到對應的 ip 地址,瀏覽器會發出一個 DNS請求到本地DNS服務器 ,本地DNS服務器會首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結果。如果沒有,本地DNS服務器還要向DNS根服務器進行查詢。根DNS服務器沒有記錄具體的域名和IP地址的對應關係,而是告訴本地DNS服務器,你可以到域服務器上去繼續查詢,並給出域服務器的地址 域服務器最終會返回給本地的DNS服務器一個具體的ip地址;然後本地的DNS服務器把這個具體的ip地址返回給瀏覽器,並且他自己也會把這個url請求對應的ip保存在自己本地

2.瀏覽器向web服務器發送一個HTTP請求(含cookies)。

3.服務器處理請求(生成一個HTML響應)。

4.釋放TCP連接(四次揮手)(短連接下)。

5.瀏覽器開始顯示HTML。

相關協議(部分):
TCP: 與服務器建立TCP連接。
IP: 建立TCP協議時,需要發送數據,使用IP協議。
OPSF: 路由器使用。
ARP: 路由器在與服務器通信時,需要將ip轉換爲MAC地址。使用ARP協議。
HTTP: 在TCP建立完成後,使用HTTP協議訪問網頁。

2.4.DNS域名系統工作原理

1.查詢瀏覽器,操作系統,緩存。
2.請求本地域名服務器(遞歸查詢)。
3.本地域名服務器未命中緩存,請求根域名服務器(迭代查詢)。
4.根域名服務器返回所查詢與的主域名服務器。
5.本地域名服務器請求主域名服務器,獲取該域名的名稱服務器。
6.本地域名服務器向名稱服務器請求域名IP映射。
7.緩存解析結果。

2.5.HTTP 和 HTTPS 的區別

1.端口 : HTTP的URL由“http://”起始且默認使用端口80,而HTTPS的URL由“https://”起始且默認使用端口443。

2.安全性和資源消耗: HTTP協議運行在TCP之上,所有傳輸的內容都是明文,客戶端和服務器端都無法驗證對方的身份。HTTPS是運行在SSL/TLS之上的HTTP協議,SSL/TLS 運行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。所以說,HTTP 安全性沒有 HTTPS高,但是 HTTPS 比HTTP耗費更多服務器資源。

2.6.SSL提供服務

1.認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2.加密數據以防止數據中途被竊取;
3.維護數據的完整性,確保數據在傳輸過程中不被改變。

加密過程: 信息+密鑰+算法=密文

對稱加密: 實質是加密和解密都使用同一個密鑰,對稱加密只有一個密鑰,加密解密爲同一個密碼。這就好比現實生活中的鑰匙和鎖,我將想要傳達的信息通過對稱加密算法用私鑰進行加密,形成密文,然後將這密文傳送給同樣擁有這把鎖的“鑰匙”的人,對方就用同樣的算法和私鑰將密文解密出來。加解密速度快, 典型的對稱加密算法有DES、AES等;

非對稱加密: 是指加密和解密用的是不同密鑰,並且是成對存在的(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰)。一把稱爲公鑰,能夠放心的交給別人,一把是私鑰,只能自己保存。其中用公鑰加密的信息只能用私鑰解密,用私鑰加密的信息只能用公鑰解密。相對對稱加密速度較慢, 典型的非對稱加密算法有RSA、DSA等。

歡迎指錯
**計算機網絡(http相關)**

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