計算機網絡面試題(一)


 

網絡分層

1、說說OSI 七層、TCP/IP 四層的關系和區別?

OSI 七層從下往上依次是:物理層數據鏈路層網絡層傳輸層會話層表示層應用層

一張圖給你整明白:

 

 

 TCP/IP 四層從下往上依次是:網絡接口層網絡層傳輸層應用層

與 OSI 七層的映射關系如下:

特點:

  • 層與層之間相互獨立又相互依靠
  • 上層依賴於下層,下層為上層提供服務

敲黑板:TCP/IP 四層是 OSI 七層的簡化版,已經成為實事國際標准。

TCP/IP

2、說說TCP 與 UDP 的區別?

總結

  • TCP 向上層提供面向連接的可靠服務 ,UDP 向上層提供無連接不可靠服務
  • UDP 沒有 TCP 傳輸可靠,但是可以在實時性要求高的地方有所作為。
  • 對數據准確性要求高,速度可以相對較慢的,可以選用TCP。

3、TCP 是如何實現數據的可靠性?

一句話:通過校驗和序列號確認應答超時重傳連接管理流量控制擁塞控制等機制來保證可靠性

(1)校驗和

在數據傳輸過程中,將發送的數據段都當做一個16位的整數,將這些整數加起來,並且前面的進位不能丟棄,補在最后,然后取反,得到校驗和。

發送方:在發送數據之前計算校驗和,並進行校驗和的填充。

接收方:收到數據后,對數據以同樣的方式進行計算,求出校驗和,與發送方進行比較。

(2)序列號

TCP 傳輸時將每個字節的數據都進行了編號,這就是序列號

序列號的作用不僅僅是應答作用,有了序列號能夠將接收到的數據根據序列號進行排序,並且去掉重復的數據。

(3)確認應答

TCP 傳輸過程中,每次接收方接收到數據后,都會對傳輸方進行確認應答,也就是發送 ACK 報文,這個 ACK 報文中帶有對應的確認序列號,告訴發送方,接收了哪些數據,下一次數據從哪里傳

(4)超時重傳

在進行 TCP 傳輸時,由於存在確認應答與序列號機制,也就是說發送方發送一部分數據后,都會等待接收方發送的 ACK 報文,並解析 ACK 報文,判斷數據是否傳輸成功。

如果發送方發送完數據后,遲遲都沒有接收到接收方傳來的 ACK 報文,那么就對剛剛發送的數據進行重發

(5)連接管理

就是指三次握手、四次揮手的過程。

(6)流量控制

如果發送方的發送速度太快,會導致接收方的接收緩沖區填充滿了,這時候繼續傳輸數據,就會造成大量丟包,進而引起丟包重傳等等一系列問題。

TCP 支持根據接收端的處理能力來決定發送端的發送速度,這就是流量控制機制

具體實現方式:接收端將自己的接收緩沖區大小放入 TCP 首部的『窗口大小』字段中,通過 ACK 通知發送端。

(7)擁塞控制

TCP 傳輸過程中一開始就發送大量數據,如果當時網絡非常擁堵,可能會造成擁堵加劇

所以 TCP 引入了慢啟動機制,在開始發送數據的時候,先發少量的數據探探路。

4、說說 TCP 協議如何提高傳輸效率?

一句話:TCP 協議提高效率的方式有滑動窗口快重傳延遲應答捎帶應答等。

(1)滑動窗口

如果每一個發送的數據段,都要收到 ACK 應答之后再發送下一個數據段,這樣的話我們效率很低,大部分時間都用在了等待 ACK 應答上了。

為了提高效率我們可以一次發送多條數據,這樣就能使等待時間大大減少,從而提高性能

窗口大小指的是無需等待確認應答而可以繼續發送數據的最大值。

(2)快重傳

快重傳也叫高速重發控制

那么如果出現了丟包,需要進行重傳。

一般分為兩種情況:

情況一:數據包已經抵達,ACK被丟了。這種情況下,部分ACK丟了並不影響,因為可以通過后續的ACK進行確認

情況二:數據包直接丟了。發送端會連續收到多個相同的 ACK 確認,發送端立即將對應丟失的數據重傳。

(3)延遲應答

如果接收數據的主機立刻返回ACK應答,這時候返回的窗口大小可能比較小。

  • 假設接收端緩沖區為1M,一次收到了512K的數據;如果立刻應答,返回的窗口就是512K;
  • 但實際上可能處理端處理速度很快,10ms之內就把512K的數據從緩存區消費掉了;
  • 在這種情況下,接收端處理還遠沒有達到自己的極限,即使窗口再放大一些,也能處理過來;
  • 如果接收端稍微等一會在應答,比如等待200ms再應答,那么這個時候返回的窗口大小就是1M;

窗口越大,網絡吞吐量就越大,傳輸效率就越高

我們的目標是在保證網絡不擁塞的情況下盡量提高傳輸效率。

(4)捎帶應答

在延遲應答的基礎上,很多情況下,客戶端服務器在應用層也是一發一收的。

這時候常常采用捎帶應答的方式來提高效率,而ACK響應常常伴隨着數據報文共同傳輸。如:三次握手。

5、你知道 TCP 如何處理擁塞嗎?

網絡擁塞現象是指到達通信網絡中某一部分的分組數量過多,使得該部分網絡來不及處理,

以致引起這部分乃至整個網絡性能下降的現象,嚴重時甚至會導致網絡通信業務陷入停頓,即出現死鎖現象

擁塞控制是處理網絡擁塞現象的一種機制

擁塞控制的四個階段:

  • 慢啟動
  • 擁塞避免
  • 快速重傳
  • 快速恢復

6、講一下三次握手和四次揮手全過程

7、為什么 TCP 鏈接需要三次握手,兩次不可以么,為什么?

8、IP地址是怎樣分類的,你知道嗎?

先說一下 IP 的基本特點:

  • IP地址由四段組成,每個字段是一個字節,8位,最大值是255
  • IP地址由兩部分組成,即網絡地址和主機地址網絡地址表示其屬於互聯網的哪一個網絡,主機地址表示其屬於該網絡中的哪一台主機。

IP 地址主要分為A、B、C三類及特殊地址D、E這五類,甩一張圖:

A類:(1.0.0.0-126.0.0.0)一般用於大型網絡。

B類:(128.0.0.0-191.255.0.0)一般用於中等規模網絡。

C類:(192.0.0.0-223.255.255.0)一般用於小型網絡。

D類:是多播地址,地址的網絡號取值於224~239之間一般用於多路廣播用戶。

E類:是保留地址。地址的網絡號取值於240~255之間。

HTTP協議

9、講一下 http1.1 和 http2 有什么區別?

HTTP1.1

  • 持久連接
  • 請求管道化
  • 增加緩存處理新的字段如cache-control)
  • 增加 Host 字段、支持斷點傳輸等

HTTP2.0

  • 二進制分幀
  • 多路復用或連接共享)
  • 頭部壓縮
  • 服務器推送

10、說說 HTTP 和HTTPS 的區別?

(1)HTTPS 協議需要到 CA 申請證書,一般免費證書較少,因而需要一定費用。

(2)HTTP 是超文本傳輸協議,信息是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協議。

(3)HTTP 和 HTTPS 使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

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

11、你知道對稱加密和非對稱加密的區別和原理嗎?

對稱密鑰加密是指加密和解密使用同一個密鑰的方式,這種方式存在的最大問題就是密鑰發送問題,即如何安全地將密鑰發給對方;

非對稱加密是指使用一對非對稱密鑰,即公鑰私鑰公鑰可以隨意發布,但私鑰只有自己知道發送密文的一方使用對方的公鑰進行加密處理,對方接收到加密信息后,使用自己的私鑰進行解密。

由於非對稱加密的方式不需要發送用來解密的私鑰,所以可以保證安全性

但是和對稱加密比起來,它比較,所以我們還是要用對稱加密來傳送消息對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去

12、常見的狀態碼有哪些?

1×× : 請求處理中,請求已被接受,正在處理

2×× : 請求成功,請求被成功處理 200 OK

3×× : 重定向,要完成請求必須進行進一步處理, 301 : 永久性轉移  302 :暫時性轉移  304 :已緩存

4×× : 客戶端錯誤,請求不合法, 400:Bad Request,請求有語法問題 403:拒絕請求 404:客戶端所訪問的頁面不存在

5×× : 服務器端錯誤,服務器不能處理合法請求 500 :服務器內部錯誤 503 :服務不可用,稍等

13、http中常見的header字段有哪些?

cookie,請求時傳遞給服務端的cookie信息

set-cookie,響應報文首部設置要傳遞給客戶端的cookie信息

allow,支持什么HTTP方法

last-modified,資源的最后修改時間

expires,設置資源緩存的失敗日期

content-language,實體的資源語言

content-encoding,實體的編碼格式

content-length,實體主體部分的大小單位是字節

content-range,返回的實體的哪些范圍

content-type,哪些類型

accept-ranges,處理的范圍請求

age,告訴客戶端服務器在多久前創建了響應

vary,代理服務器的緩存信息

location,用於指定重定向后的URI

If-Match,值是資源的唯一標識

User-Agent,將創建請求的瀏覽器和用戶代理名稱等信息傳遞給服務器

Transfer-Encoding,傳輸報文的主體編碼方式

connection,管理持久連接,

keep-alive ,

close Cache-Control,控制瀏覽器的強緩存

14、Get與POST的區別

(1)GET 一般用來從服務器上獲取資源,POST 一般用來創建資源;

(2)GET 是冪等的,即讀取同一個資源,總是得到相同的數據,而 POST 不是冪等的。GET 不會改變服務器上的資源,而 POST 會對服務器資源進行改變;

(3)從請求參數形式上看,GET 請求的數據會附在URL之后;而 POST 請求會把提交的數據則放置在是HTTP請求報文的請求體中。

(4)POST 的安全性要比 GET 的安全性高,因為 GET 請求提交的數據將明文出現在 URL 上,而 POST 請求參數則被包裝到請求體中,相對更安全。

(5)GET 請求的長度受限於瀏覽器或服務器對URL長度的限制,允許發送的數據量比較小,而POST請求則是沒有大小限制的。

15、DNS 的尋址過程你知道嗎?

(1)在瀏覽器中輸入www.baidu.com域名,操作系統會先檢查自己本地的 hosts 文件是否有這個網址映射關系,如果有就先調用這個IP地址映射,完成域名解析

(2)如果 hosts 里沒有這個域名的映射,則查找本地 DNS 解析器緩存,是否有這個網址映射關系,如果有直接返回,完成域名解析。

(3)如果 hosts 與本地 DNS 解析器緩存都沒有相應的網址映射關系,首先會找 TCP/IP 參數中設置的首選 DNS 服務器,在此我們叫它本地 DNS 服務器,

·  此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。

(4)如果要查詢的域名,不由本地 DNS 服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個 IP 地址映射,完成域名解析,此解析不具有權威性。

(5)如果本地 DNS 服務器本地區域文件與緩存解析都失效,則根據本地 DNS 服務器的設置(是否設置轉發器)進行查詢,

  如果未用轉發模式,本地 DNS 就把請求發至13台根 DNS ,根 DNS 服務器收到請求后會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。

  本地 DNS 服務器收到IP信息后,將會聯系負責 .com 域的這台服務器。這台負責 .com 域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(baidu.com)給本地 DNS 服務器

  當本地 DNS 服務器收到這個地址后,就會找 baidu.com 域服務器,重復上面的動作,進行查詢,直至找到 www.baidu.com 主機。

(6)如果用的是轉發模式此 DNS 服務器就會把請求轉發至上一級 DNS 服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根 DNS 或把轉請求轉至上上級,以此循環。不管是本地 DNS 服務器用是是轉發,還是根提示,最后都是把結果返回給本地 DNS 服務器,由此 DNS 服務器再返回給客戶機。

16、在瀏覽器中輸入一個www.baidu.com后執行的全部過程?

總體流程

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

17、Session、Cookie 的區別

  • session 在服務器端,cookie 在客戶端(瀏覽器)
  • session 默認被存儲在服務器的一個文件里(不是內存)
  • session 的運行依賴 session id,而 session id 是存在 cookie 中的,也就是說,如果瀏覽器禁用了 cookie ,同時 session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 session_id)
  • session 可以放在 文件、數據庫、或內存中都可以。
  • 用戶驗證這種場合一般會用 session

18、有哪些 web 性能優化技術?

  • DNS查詢優化
  • 客戶端緩存
  • 優化TCP連接
  • 避免重定向
  • 網絡邊緣的緩存
  • 條件緩存
  • 壓縮和代碼極簡化
  • 圖片優化

網絡安全

19、什么是 XSS 攻擊?

XSS 即(Cross Site Scripting)中文名稱為:跨站腳本攻擊

XSS的重點不在於跨站點,而在於腳本的執行。

XSS的原理是:

惡意攻擊者在web頁面中會插入一些惡意的script代碼。當用戶瀏覽該頁面的時候,那么嵌入到web頁面中script代碼會執行,因此會達到惡意攻擊用戶的目的。

XSS攻擊最主要有如下分類反射型存儲型、及 DOM-based型

反射性和DOM-baseed型可以歸類為非持久性XSS攻擊。存儲型可以歸類為持久性XSS攻擊

20、什么是跨站攻擊CSRF?

CSRF(Cross Site Request Forgery,跨站域請求偽造)是一種網絡的攻擊方式,它在 2007 年曾被列為互聯網 20 大安全隱患之一,也被稱為『One Click Attack』或者 『Session Riding』,通常縮寫為CSRF或者XSRF是一種對網站的惡意利用。

聽起來像跨站腳本(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。

XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站

與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當稀少)和難以防范,所以被認為比XSS更具危險性

 

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM