考研復試面試:計算機網絡面試題整理


計算機網絡常見面試題總結

https://github.com/huihut/interview#computer-network

https://blog.csdn.net/qzcsu/article/details/72861891

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

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

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

五層協議(5層):物理層、數據鏈路層、網絡層、運輸層、應用層。

每一層的作用如下:

  • 物理層:激活、維持、關閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協議提供了一個傳輸數據的物理媒體。

  • 數據鏈路層:數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。

  • 網絡層:網絡層負責對子網間的數據包進行路由選擇。此外,網絡層還可以實現擁塞控制、網際互連等功能。

  • 傳輸層:第一個端到端,即主機到主機的層次。傳輸層負責將上層數據分段 並 提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。

  • 會話層:會話層管理主機之間的會話進程,即負責建立、管理、終止進程之間的會話。會話層還利用在數據中插入校驗點來實現數據的同步。

  • 表示層:表示層對上層數據或信息進行變換以保證一個主機應用層信息可以被另一個主機的應用程序理解。表示層的數據轉換包括數據的加密、壓縮、格式轉換等。

  • 應用層:為操作系統或網絡應用程序提供訪問網絡服務的接口。

2. IP地址的分類

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

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

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

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

3. ARP協議的工作原理

首先,每台主機都會在自己的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查詢失敗。

4. 路由設備與相關層

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

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

  • 網絡層:路由器。

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

5.常見的路由選擇協議,以及它們的區別

  • 常見的路由選擇協議有:RIP協議、OSPF協議。

    • RIP協議:路由信息協議, 底層是貝爾曼福特算法,它選擇路由的度量標准(metric)是跳數,最大跳數是15跳,如果大於15跳,它就會丟棄數據包。

    • OSPF協議:開放最短路徑優先,  底層是迪傑斯特拉算法,是鏈路狀態路由選擇協議,它選擇路由的度量標准是帶寬,延遲。

VPN 和 NAT

  • VPN(Virtual Private Network,虛擬專用網)
  • NAT(Network Address Translation,網絡地址轉換)

6. TCP與UDP的區別

  1. TCP 面向連接,UDP 是無連接的;

  2. TCP 提供可靠的服務,也就是說,通過 TCP 連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP 盡最大努力交付,即不保證可靠交付

  3. TCP 的邏輯通信信道是全雙工的可靠信道;UDP 則是不可靠信道

  4. 每一條 TCP 連接只能是點到點的;UDP 支持一對一,一對多,多對一和多對多的交互通信

  5. TCP 面向字節流(可能出現黏包問題),實際上是 TCP 把數據看成一連串無結構的字節流;UDP 是面向報文的(不會出現黏包問題)

  6. UDP 沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如 IP 電話,實時視頻會議等)

  7. TCP 首部開銷20字節;UDP 的首部開銷小,只有 8 個字節

7.TCP的可靠性如何保證?

  • 確認和超時重傳

  • 數據合理分片和排序

  • 流量控制

  • 擁塞控制

  • 數據校驗

10.  在瀏覽器中輸入www.baidu.com后執行的全部過程

現在假設如果我們在客戶端(客戶端)瀏覽器中輸入http://www.baidu.com,而baidu.com為要訪問的服務器(服務器),下面詳細分析客戶端為了訪問服務器而執行的一系列關於協議的操作:

  1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器,發起一個HTTP會話到220.181.27.48,然后通過TCP進行封裝數據包,輸入到網絡層

  2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然后使用IP層的IP地址查找目的端。

  3、客戶端的網絡層不用關系應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務器。

  4、客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議【ARP協議】查找給定IP地址的MAC地址,然后發送ARP請求查找目的地址,如果得到回應后就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然后發送IP數據包到達服務器的地址。

11.  HTTP協議包括哪些請求?

  • GET:請求讀取由URL所標志的信息。

  • POST:給服務器添加信息(如注釋)。

  • PUT:在給定的URL下存儲一個文檔。

  • DELETE:刪除給定的URL所標志的資源。

12.  HTTP中,POST與GET的區別

(1)Get是從服務器上獲取數據,Post是向服務器傳送數據。

(2)Get是把參數數據隊列加到提交表單的Action屬性所指向的URL中,值和表單內各個字段一一對應,在URL中可以看到。

(3)Get傳送的數據量小,不能大於2KB;post傳送的數據量較大,一般被默認為不受限制。

(4)根據HTTP規范,GET用於信息獲取,而且應該是安全的和冪等的。

  I.所謂安全的意味着該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢一樣,不會修改,增加數據,不會影響資源的狀態。

  II.冪等的意味着對同一URL的多個請求應該返回同樣的結果。

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

物理層、數據鏈路層、網絡層、運輸層、會話層、表示層、應用層

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

  • IP(Internet Protocol,網際協議)是為計算機網絡相互連接進行通信而設計的協議。

  • ARP(Address Resolution Protocol,地址解析協議)

  • ICMP(Internet Control Message Protocol,網際控制報文協議)

  • IGMP(Internet Group Management Protocol,網際組管理協議)

(2)傳輸層:UDP協議、TCP協議。

  • TCP(Transmission Control Protocol,傳輸控制協議)

  • UDP(User Datagram Protocol,用戶數據報協議)

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

端口:

應用程序

FTP

TELNET

SMTP

DNS

TFTP

HTTP

HTTPS

SNMP

端口號

21

23

25

53

69

80

443

161

 

 

 

 

 

 

 

14.  TCP對應的協議和UDP對應的協議

14.1 TCP對應的協議

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

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

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

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

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

14.2 UDP對應的協議

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

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

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

14.3 TCP 三次握手建立連接

【TCP 建立連接全過程解釋】

  1. 客戶端發送 SYN 給服務器,說明客戶端請求建立連接;
  2. 服務端收到客戶端發的 SYN,並回復 SYN+ACK 給客戶端(同意建立連接);
  3. 客戶端收到服務端的 SYN+ACK 后,回復 ACK 給服務端(表示客戶端收到了服務端發的同意報文);
  4. 服務端收到客戶端的 ACK,連接已建立,可以數據傳輸。

14.4 TCP 為什么要進行三次握手?

【答案一】因為信道不可靠,而 TCP 想在不可靠信道上建立可靠地傳輸,那么三次通信是理論上的最小值。(而 UDP 則不需建立可靠傳輸,因此 UDP 不需要三次握手。)

Google Groups . TCP 建立連接為什么是三次握手?{技術}{網絡通信}

【答案二】因為雙方都需要確認對方收到了自己發送的序列號,確認過程最少要進行三次通信。

知乎 . TCP 為什么是三次握手,而不是兩次或四次?

【答案三】為了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤。

《計算機網絡(第 7 版)-謝希仁》

14.5 TCP 四次揮手釋放連接

【TCP 釋放連接全過程解釋】

  1. 客戶端發送 FIN 給服務器,說明客戶端不必發送數據給服務器了(請求釋放從客戶端到服務器的連接);
  2. 服務器接收到客戶端發的 FIN,並回復 ACK 給客戶端(同意釋放從客戶端到服務器的連接);
  3. 客戶端收到服務端回復的 ACK,此時從客戶端到服務器的連接已釋放(但服務端到客戶端的連接還未釋放,並且客戶端還可以接收數據);
  4. 服務端繼續發送之前沒發完的數據給客戶端;
  5. 服務端發送 FIN+ACK 給客戶端,說明服務端發送完了數據(請求釋放從服務端到客戶端的連接,就算沒收到客戶端的回復,過段時間也會自動釋放);
  6. 客戶端收到服務端的 FIN+ACK,並回復 ACK 給客戶端(同意釋放從服務端到客戶端的連接);
  7. 服務端收到客戶端的 ACK 后,釋放從服務端到客戶端的連接。

14.6 TCP 為什么要進行四次揮手?

【問題一】TCP 為什么要進行四次揮手? / 為什么 TCP 建立連接需要三次,而釋放連接則需要四次?

【答案一】因為 TCP 是全雙工模式,客戶端請求關閉連接后,客戶端向服務端的連接關閉(一二次揮手),服務端繼續傳輸之前沒傳完的數據給客戶端(數據傳輸),服務端向客戶端的連接關閉(三四次揮手)。所以 TCP 釋放連接時服務器的 ACK 和 FIN 是分開發送的(中間隔着數據傳輸),而 TCP 建立連接時服務器的 ACK 和 SYN 是一起發送的(第二次握手),所以 TCP 建立連接需要三次,而釋放連接則需要四次。

【問題二】為什么 TCP 連接時可以 ACK 和 SYN 一起發送,而釋放時則 ACK 和 FIN 分開發送呢?(ACK 和 FIN 分開是指第二次和第三次揮手)

【答案二】因為客戶端請求釋放時,服務器可能還有數據需要傳輸給客戶端,因此服務端要先響應客戶端 FIN 請求(服務端發送 ACK),然后數據傳輸,傳輸完成后,服務端再提出 FIN 請求(服務端發送 FIN);而連接時則沒有中間的數據傳輸,因此連接時可以 ACK 和 SYN 一起發送。

【問題三】為什么客戶端釋放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

  1. 為了保證客戶端發送的最后一個 ACK 報文能夠到達服務端。若未成功到達,則服務端超時重傳 FIN+ACK 報文段,客戶端再重傳 ACK,並重新計時。
  2. 防止已失效的連接請求報文段出現在本連接中。TIME-WAIT 持續 2MSL 可使本連接持續的時間內所產生的所有報文段都從網絡中消失,這樣可使下次連接中不會出現舊的連接報文段。

15.特殊的IP地址

(1)網絡地址

   IP地址由網絡號(包括子網號)和主機號組成,網絡地址的主機號為全0,網絡地址代表着整個網絡。

(2)廣播地址

     廣播地址通常稱為直接廣播地址,是為了區分受限廣播地址。

     廣播地址與網絡地址的主機號正好相反,廣播地址中,主機號為全1。當向某個網絡的廣播地址發送消息時,該網絡內的所有主機都能收到該廣播消息。

(3)組播地址 

    D類地址就是組播地址。

     先回憶下A,B,C,D類地址吧

    A類地址以00開頭,第一個字節作為網絡號,地址范圍為:0.0.0.0~127.255.255.255;

    B類地址以10開頭,前兩個字節作為網絡號,地址范圍是:128.0.0.0~191.255.255.255;

    C類地址以110開頭,前三個字節作為網絡號,地址范圍是:192.0.0.0~223.255.255.255。

    D類地址以1110開頭,地址范圍是224.0.0.0~239.255.255.255,D類地址作為組播地址(一對多的通信);

    E類地址以1111開頭,地址范圍是240.0.0.0~255.255.255.255,E類地址為保留地址,供以后使用。

    Notice:只有A,B,C有網絡號和主機號之分,D類地址和E類地址沒有划分網絡號和主機號。

(4)255.255.255.255

     該IP地址指的是受限的廣播地址。受限廣播地址與一般廣播地址(直接廣播地址)的區別在於,受限廣播地址之只能用於本地網絡,路由器不會轉發以受限廣播地址為目的地址的分組;一般廣播地址既可在本地廣播,也可跨網段廣播。例如:主機192.168.1.1/30上的直接廣播數據包后,另外一個網段192.168.1.5/30也能收到該數據報;若發送受限廣播數據報,則不能收到。

    Notice:一般的廣播地址(直接廣播地址)能夠通過某些路由器(當然不是所有的路由器),而受限的廣播地址不能通過路由器。

(5)0.0.0.0

       常用於尋找自己的IP地址,例如在我們的RARP,BOOTP和DHCP協議中,若某個未知IP地址的無盤機想要知道自己的IP地址,它就以255.255.255.255為目的地址,向本地范圍(具體而言是被各個路由器屏蔽的范圍內)的服務器發送IP請求分組。

(6)回環地址

   127.0.0.0/8被用作回環地址,回環地址表示本機的地址,常用於對本機的測試,用的最多的是127.0.0.1。

(7)A、B、C類私有地址

   私有地址(private address)也叫專用地址,它們不會在全球使用,只具有本地意義。

   A類私有地址:10.0.0.0/8,范圍是:10.0.0.0~10.255.255.255

   B類私有地址:172.16.0.0/12,范圍是:172.16.0.0~172.31.255.255 

   C類私有地址:192.168.0.0/16,范圍是:192.168.0.0~192.168.255.255 

16.  NAT協議、DHCP協議、DNS協議的作用

NAT協議:網絡地址轉換(NAT,Network AddressTranslation) 屬接入廣域網(WAN)技術,

  • 是一種將私有(保留)地址轉化為合法IP地址的轉換技術,它被廣泛應用於各種類型Internet接入方式和各種類型的網絡中。原因很簡單,NAT不僅完美地解決了lP地址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。

DHCP協議:動態主機設置協議(Dynamic Host ConfigurationProtocol, DHCP)是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:

  1. 給內部網絡或網絡服務供應商自動分配IP地址給用戶

  2. 用於內部網絡管理員作為對所有計算機作中央管理的手段。

DNS協議:DNS 是域名系統 (Domain Name System) 的縮寫,是因特網的一項核心服務,

  1.  它作為可以將域名和IP地址相互映射的一個分布式數據庫
  2.  能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。

 

 

 

 

 

 

 

https://github.com/huihut/interview#computer-network


免責聲明!

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



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