1. 程式人生 > >計算機網路的五個常見面試問題

計算機網路的五個常見面試問題

1.TCP 三次握手和四次揮手的全過程

答:

  •  三次握手:

  • 第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

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

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

     

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,TCP 連線都將被一直保持下去。

  •  四次揮手 與建立連線的“三次握手”類似,斷開一個TCP連線則需要“四次握手”。

  • 第一次揮手:主動關閉方傳送一個FIN,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可 以接受資料。

  • 第二次揮手:被動關閉方收到FIN包後,傳送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN佔 用一個序號)。

  • 第三次揮手:被動關閉方傳送一個FIN,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方 ,我的資料也傳送完了,不會再給你發資料了。

  • 第四次揮手:主動關閉方收到FIN後,傳送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

     

2.在瀏覽器中輸入 www.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). 客戶端的鏈路層,包通過鏈路層傳送到路由器,通過鄰居協議查詢給定IP地址的MAC地址,然後傳送ARP請求查詢 目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP資料包現在就可以傳輸了,然後傳送IP資料包到達服 務器的地址。

     

3.TCP 和 UDP 的區別?

答:

TCP提供面向連線的、可靠的資料流傳輸,而UDP提供的是非面向連線的、不可靠的資料流傳輸。 TCP傳輸單位稱為TCP報文段,UDP傳輸單位稱為使用者資料報。TCP注重資料安全性,UDP資料傳輸快,因為不需要連線等待,少了許多操作,但是其安全性卻一般。 TCP對應的協議和UDP對應的協議

  •  TCP對應的協議:

    • (1)FTP:定義了檔案傳輸協議,使用21埠。

    • (2) Telnet:一種用於遠端登陸的埠,使用23埠,使用者可以以自己的身份遠端連線到計算機上, 可提供基於DOS模式下的通訊服務。

    • (3) SMTP:郵件傳送協議,用於傳送郵件。伺服器開放的是25號埠。

    • (4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110埠。

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

  •  UDP對應的協議:

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

    • (2) SNMP:簡單網路管理協議,使用161號埠,是用來管理網路裝置的。由於網路裝置很多,無連線的服務 就體現出其優勢。

    • (3) TFTP(Trival File Transfer Protocal),簡單檔案傳輸協議,該協議在熟知埠69上使用UDP服務。

4.DNS 域名系統,簡單描述其工作原理。

答:

  •  當DNS客戶機需要在程式中使用名稱時,它會查詢DNS伺服器來解析該名稱。客戶機發送的每條查詢資訊包括三條資訊:包括:指定的DNS域名,指定的查詢型別,DNS域名的指定類別。基於UDP服務,埠53. 該應用一般不直接為 使用者使用,而是為其他應用服務,如HTTP,SMTP等在其中需要完成主機名到IP地址的轉換。

5.TCP 的三次握手過程?為什麼會採用三次握手,若採用二次握手可以嗎?

答:

  •  建立連線的過程是利用客戶伺服器模式,假設主機A為客戶端,主機B為伺服器端。

  • (1). TCP的三次握手過程:主機A向B傳送連線請求;主機B對收到的主機A的報文段進行確認;主機A再次對主機B的確 認進行確認。

  • (2). 採用三次握手是為了防止失效的連線請求報文段突然又傳送到主機B,因而產生錯誤。失效的連線請求報文段是指:主機A發出的連線請求沒有收到主機B的確認,於是經過一段時間後,主機A又重新向主機B傳送連線請求,且建立成功,順序完成資料傳輸。考慮這樣一種特殊情況,主機A第一次傳送的連線請求並沒有丟失,而是因為網路節點導致延遲達到主機B,主機B以為是主機A又發起的新連線,於是主機B同意連線,並向主機A發回確認,但是此時主機A根本不會理會,主機B就一直在等待主機A傳送資料,導致 主機B的資源浪費。

  • (3). 採用兩次握手不行,原因就是上面說的失效的連線請求的特殊情況。

 


                                    想了解更多,關注下!