計算機網絡面試題總結(精簡版)

1. OSI,TCP/IP,五層協議的體系結構

          OSI分層(7層):物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。

          TCP/IP分層(4層):網絡接口層、網際層、運輸層、應用層。

2、IP地址的分類

  IP地址是指互聯網協議地址,是IP協議提供的一種統一的地址格式,它爲互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。IP地址編址方案將IP地址空間劃分爲A、B、C、D、E五類,其中A、B、C是基本類,D、E類作爲多播和保留使用,爲特殊地址。

  每個IP地址包括兩個標識碼(ID),即網絡ID和主機ID。同一個物理網絡上的所有主機都使用同一個網絡ID,網絡上的一個主機(包括網絡上工作站,服務器和路由器等)有一個主機ID與其對應。A~E類地址的特點如下:

  • A類地址:以0開頭,第一個字節範圍:0~127;

  • B類地址:以10開頭,第一個字節範圍:128~191;

  • C類地址:以110開頭,第一個字節範圍:192~223;

  • D類地址:以1110開頭,第一個字節範圍爲224~239;

  • E類地址:以1111開頭,保留地址

3、Http和Https的區別

  Http協議運行在TCP之上,明文傳輸,客戶端與服務器端都無法驗證對方的身份;Https是身披SSL(Secure Socket Layer)外殼的Http,運行於SSL上,SSL運行於TCP之上,是添加了加密和認證機制的HTTP。二者之間存在如下不同:

  • 端口不同:Http與Http使用不同的連接方式,用的端口也不一樣,前者是80,後者是443;

  • 資源消耗:和HTTP通信相比,Https通信會由於加減密處理消耗更多的CPU和內存資源;

  • 開銷:Https通信需要證書,而證書一般需要向認證機構購買; 
      
    Https的加密機制是一種共享密鑰加密和公開密鑰加密並用的混合加密機制。

4、對稱加密與非對稱加密

  對稱密鑰加密是指加密和解密使用同一個密鑰的方式,這種方式存在的最大問題就是密鑰發送問題,即如何安全地將密鑰發給對方;而非對稱加密是指使用一對非對稱密鑰,即公鑰和私鑰,公鑰可以隨意發佈,但私鑰只有自己知道。發送密文的一方使用對方的公鑰進行加密處理,對方接收到加密信息後,使用自己的私鑰進行解密。

  由於非對稱加密的方式不需要發送用來解密的私鑰,所以可以保證安全性;但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。

5、三次握手與四次揮手

 (1). 三次握手(我要和你建立鏈接,你真的要和我建立鏈接麼,我真的要和你建立鏈接,成功):

  • 第一次握手:Client將標誌位SYN置爲1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。

  • 第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求建立連接,Server將標誌位SYN和ACK都置爲1,ack=J+1,隨機產生一個值seq=K,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。

  • 第三次握手:Client收到確認後,檢查ack是否爲J+1,ACK是否爲1,如果正確則將標誌位ACK置爲1,ack=K+1,並將該數據包發送給Server,Server檢查ack是否爲K+1,ACK是否爲1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。                                                             (2). 四次揮手(我要和你斷開鏈接;好的,斷吧。我也要和你斷開鏈接;好的,斷吧):

  • 第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。

  • 第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。此時TCP鏈接處於半關閉狀態,即客戶端已經沒有要發送的數據了,但服務端若發送數據,則客戶端仍要接收。

  • 第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。

  • 第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號爲收到序號+1,Server進入CLOSED狀態,完成四次揮手。 

6、爲什麼TCP鏈接需要三次握手,兩次不可以麼,爲什麼?  

  • 爲了防止 已失效的鏈接請求報文突然又傳送到了服務端,因而產生錯誤。

  • 客戶端發出的連接請求報文並未丟失,而是在某個網絡節點長時間滯留了,以致延誤到鏈接釋放以後的某個時間纔到達Server。這是,Server誤以爲這是Client發出的一個新的鏈接請求,於是就向客戶端發送確認數據包,同意建立鏈接。若不採用“三次握手”,那麼只要Server發出確認數據包,新的鏈接就建立了。由於client此時並未發出建立鏈接的請求,所以其不會理睬Server的確認,也不與Server通信;而這時Server一直在等待Client的請求,這樣Server就白白浪費了一定的資源。若採用“三次握手”,在這種情況下,由於Server端沒有收到來自客戶端的確認,則就會知道Client並沒有要求建立請求,就不會建立鏈接。

7、TCP協議如何來保證傳輸的可靠性

  TCP提供一種面向連接的、可靠的字節流服務。其中,面向連接意味着兩個使用TCP的應用(通常是一個客戶和一個服務器)在彼此交換數據之前必須先建立一個TCP連接。在一個TCP連接中,僅有兩方進行彼此通信;而字節流服務意味着兩個應用程序通過TCP鏈接交換8bit字節構成的字節流,TCP不在字節流中插入記錄標識符。

  對於可靠性,TCP通過以下方式進行保證:

  • 數據包校驗:目的是檢測數據在傳輸過程中的任何變化,若校驗出包有錯,則丟棄報文段並且不給出響應,這時TCP發送數據端超時後會重發數據;

  • 對失序數據包重排序:既然TCP報文段作爲IP數據報來傳輸,而IP數據報的到達可能會失序,因此TCP報文段的到達也可能會失序。TCP將對失序數據進行重新排序,然後才交給應用層;

  • 丟棄重複數據:對於重複數據,能夠丟棄重複數據;

  • 應答機制:當TCP收到發自TCP連接另一端的數據,它將發送一個確認。這個確認不是立即發送,通常將推遲幾分之一秒;

  • 超時重發:當TCP發出一個段後,它啓動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段;

  • 流量控制:TCP連接的每一方都有固定大小的緩衝空間。TCP的接收端只允許另一端發送接收端緩衝區所能接納的數據,這可以防止較快主機致使較慢主機的緩衝區溢出,這就是流量控制。TCP使用的流量控制協議是可變大小的滑動窗口協議。

8、Get與POST的區別

  GET與POST是我們常用的兩種HTTP Method,二者之間的區別主要包括如下五個方面:

(1). 從功能上講,GET一般用來從服務器上獲取資源,POST一般用來更新服務器上的資源;

(2). 從REST服務角度上說,GET是冪等的,即讀取同一個資源,總是得到相同的數據,而POST不是冪等的,因爲每次請求對資源的改變並不是相同的;進一步地,GET不會改變服務器上的資源,而POST會對服務器資源進行改變;

(3). 從請求參數形式上看,GET請求的數據會附在URL之後,即將請求數據放置在HTTP報文的 請求頭 中,以?分割URL和傳輸數據,參數之間以&相連。特別地,如果數據是英文字母/數字,原樣發送;否則,會將其編碼爲 application/x-www-form-urlencoded MIME 字符串(如果是空格,轉換爲+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX爲該符號以16進製表示的ASCII);而POST請求會把提交的數據則放置在是HTTP請求報文的 請求體 中。

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

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

9、TCP與UDP的區別

  TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議,它們之間的區別包括:

  • TCP是面向連接的,UDP是無連接的;

  • TCP是可靠的,UDP是不可靠的;

  • TCP只支持點對點通信,UDP支持一對一、一對多、多對一、多對多的通信模式;

  • TCP是面向字節流的,UDP是面向報文的;

  • TCP有擁塞控制機制;UDP沒有擁塞控制,適合媒體通信;

  • TCP首部開銷(20個字節)比UDP的首部開銷(8個字節)要大;

10、TCP的擁塞處理

  計算機網絡中的帶寬、交換結點中的緩存及處理機等都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就會變壞,這種情況就叫做擁塞。擁塞控制就是 防止過多的數據注入網絡中,這樣可以使網絡中的路由器或鏈路不致過載。注意,擁塞控制和流量控制不同,前者是一個全局性的過程,而後者指點對點通信量的控制。擁塞控制的方法主要有以下四種:慢啓動、擁塞避免、快重傳、快恢復。

11、從輸入網址到獲得頁面的過程

  (1). 瀏覽器查詢 DNS,獲取域名對應的IP地址:具體過程包括瀏覽器搜索自身的DNS緩存、搜索操作系統的DNS緩存、讀取本地的Host文件和向本地DNS服務器進行查詢等。對於向本地DNS服務器進行查詢,如果要查詢的域名包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析(此解析具有權威性);如果要查詢的域名不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關係,則調用這個IP地址映射,完成域名解析(此解析不具有權威性)。如果本地域名服務器並未緩存該網址映射關係,那麼將根據其設置發起遞歸查詢或者迭代查詢;

  (2). 瀏覽器獲得域名對應的IP地址以後,瀏覽器向服務器請求建立鏈接,發起三次握手;

  (3). TCP/IP鏈接建立起來後,瀏覽器向服務器發送HTTP請求;

  (4). 服務器接收到這個請求,並根據路徑參數映射到特定的請求處理器進行處理,並將處理結果及相應的視圖返回給瀏覽器;

  (5). 瀏覽器解析並渲染視圖,若遇到對js文件、css文件及圖片等靜態資源的引用,則重複上述步驟並向服務器請求這些資源;

  (6). 瀏覽器根據其請求到的資源、數據渲染頁面,最終向用戶呈現一個完整的頁面。

12、SQL 注入

  SQL注入就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。

13、 XSS 攻擊

  XSS是一種經常出現在web應用中的計算機安全漏洞,與SQL注入一起成爲web中最主流的攻擊方式。XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些腳本代碼嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。

14、TCP和UDP分別對應的常見應用層協議

1). TCP對應的應用層協議

  • FTP:定義了文件傳輸協議,使用21端口。常說某某計算機開了FTP服務便是啓動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。

  • Telnet:它是一種用於遠程登陸的端口,用戶可以以自己的身份遠程連接到計算機上,通過這種端口可以提供一種基於DOS模式下的通信服務。如以前的BBS是-純字符界面的,支持BBS的服務器將23端口打開,對外提供服務。

  • SMTP:定義了簡單郵件傳送協議,現在很多郵件服務器都用的是這個協議,用於發送郵件。如常見的免費郵件服務中用的就是這個郵件服務端口,所以在電子郵件設置-中常看到有這麼SMTP端口設置這個欄,服務器開放的是25號端口。

  • POP3:它是和SMTP對應,POP3用於接收郵件。通常情況下,POP3協議所用的是110端口。也是說,只要你有相應的使用POP3協議的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陸進郵箱界面,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進入網易網站,再進入自己的郵-箱來收信)。

  • HTTP:從Web服務器傳輸超文本到本地瀏覽器的傳送協議。


2). UDP對應的應用層協議

  • DNS:用於域名解析服務,將域名地址轉換爲IP地址。DNS用的是53號端口。

  • SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。由於網絡設備很多,無連接的服務就體現出其優勢。

  • TFTP(Trival File Transfer Protocal):簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。

15.  TCP/IP中,每一層對應的協議

網絡層:IP協議、ICMP協議、ARP協議、RARP協議。

傳輸層:UDP協議、TCP協議。

應用層:FTP(文件傳送協議)、Telenet(遠程登錄協議)、DNS(域名解析協議)、SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議。
 

16、網絡層的ARP協議工作原理

  網絡層的ARP協議完成了IP地址與物理地址的映射。首先,每臺主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址的對應關係。當源主機需要將一個數據包要發送到目的主機時,會首先檢查自己ARP列表中是否存在該IP地址對應的MAC地址:如果有,就直接將數據包發送到這個MAC地址;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。此ARP請求數據包裏包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網絡中所有的主機收到這個ARP請求後,會檢查數據包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數據包;如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經存在該IP的信息,則將其覆蓋,然後給源主機發送一個ARP響應數據包,告訴對方自己是它需要查找的MAC地址;源主機收到這個ARP響應數據包後,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,並利用此信息開始數據的傳輸。如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。

17.      路由設備與相關層

        物理層:中繼器(Repeater,也叫放大器),集線器。

        數據鏈路層:網橋,交換機。

        網絡層:路由器。

        網關:網絡層以上的設備。

18.數據交換的幾種方式和特點:

​ 1.電路交換,需要進行建立連接、通話、釋放連接三個過程。資源獨佔,線路傳輸的效率較低。

​ 2.分組交換,需要將數據報文切分成較小的等長數據塊,加入必要的控制信息,構成每一個分組,每一個分組獨立傳輸。分組交換高效,靈活,迅速,可靠,但是也帶來了時延和一些不必要的開銷。

​ 3.報文交換,整個報文傳遞到臨近節點,全部存儲下來後在查找轉發表,然後轉發到下一個節點。

參考:

【1】https://blog.csdn.net/justloveyou_/article/details/78303617

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