TCP/IP 相關知識點與面試題集


  • 第一部分:TCP/IP相關知識點
  • 第二部分:常見面試題
    • TCP協議和UDP協議的區別是什么
      • TCP協議是有連接的,有連接的意思是開始傳輸實際數據之前TCP的客戶端和服務器端必須通過三次握手建立連接,會話結束之后也要結束連接。而UDP是無連接的
      • TCP協議保證數據按序發送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發送的序列,也不保證按序送到。
      • TCP協議所需資源多,TCP首部需20個字節(不算可選項),UDP首部字段只需8個字節。
      • TCP有流量控制和擁塞控制,UDP沒有,網絡擁堵不會影響發送端的發送速率
      • TCP是一對一的連接,而UDP則可以支持一對一,多對多,一對多的通信。
      • TCP面向的是字節流的服務,UDP面向的是報文的服務。
      • TCP介紹和UDP介紹
    • 請詳細介紹一下TCP協議建立連接和終止連接的過程?
      • 助於理解的一段話
      • 兩幅圖(來源):
        • 建立連接:三次握手
        • image
        • 關閉連接:四次揮手
        • image
    • 三次握手建立連接時,發送方再次發送確認的必要性?
        • 主要是為了防止已失效的連接請求報文段突然又傳到了B,因而產生錯誤。假定出現一種異常情況,即A發出的第一個連接請求報文段並沒有丟失,而是在某些網絡結點長時間滯留了,一直延遲到連接釋放以后的某個時間才到達B,本來這是一個早已失效的報文段。但B收到此失效的連接請求報文段后,就誤認為是A又發出一次新的連接請求,於是就向A發出確認報文段,同意建立連接。假定不采用三次握手,那么只要B發出確認,新的連接就建立了,這樣一直等待A發來數據,B的許多資源就這樣白白浪費了。
    • 四次揮手釋放連接時,等待2MSL的意義?
        • 第一,為了保證A發送的最有一個ACK報文段能夠到達B。這個ACK報文段有可能丟失,因而使處在LAST-ACK狀態的B收不到對已發送的FIN和ACK報文段的確認。B會超時重傳這個FIN和ACK報文段,而A就能在2MSL時間內收到這個重傳的ACK+FIN報文段。接着A重傳一次確認。
        • 第二,就是防止上面提到的已失效的連接請求報文段出現在本連接中,A在發送完最有一個ACK報文段后,再經過2MSL,就可以使本連接持續的時間內所產生的所有報文段都從網絡中消失。

 

    • 常見的應用中有哪些是應用TCP協議的,哪些又是應用UDP協議的,為什么它們被如此設計?
      • 以下應用一般或必須用udp實現?
        • 多播的信息一定要用udp實現,因為tcp只支持一對一通信。
        • 如果一個應用場景中大多是簡短的信息,適合用udp實現,因為udp是基於報文段的,它直接對上層應用的數據封裝成報文段,然后丟在網絡中,如果信息量太大,會在鏈路層中被分片,影響傳輸效率。
        • 如果一個應用場景重性能甚於重完整性和安全性,那么適合於udp,比如多媒體應用,缺一兩幀不影響用戶體驗,但是需要流媒體到達的速度快,因此比較適合用udp
        • 如果要求快速響應,那么udp聽起來比較合適
        • 如果又要利用udp的快速響應優點,又想可靠傳輸,那么只能考上層應用自己制定規則了。
        • 常見的使用udp的例子:ICQ,QQ的聊天模塊。
      • 以qq為例的一個說明(轉載自知乎
        • 登陸采用TCP協議和HTTP協議,你和好友之間發送消息,主要采用UDP協議,內網傳文件采用了P2P技術。總來的說:
          1.登陸過程,客戶端client 采用TCP協議向服務器server發送信息,HTTP協議下載信息。登陸之后,會有一個TCP連接來保持在線狀態。
          2.和好友發消息,客戶端client采用UDP協議,但是需要通過服務器轉發。騰訊為了確保傳輸消息的可靠,采用上層協議來保證可靠傳輸。如果消息發送失敗,客戶端會提示消息發送失敗,並可重新發送。
          3.如果是在內網里面的兩個客戶端傳文件,QQ采用的是P2P技術,不需要服務器中轉。

          image

  • 第三部分:相關協議

 

參考1:常見的TCP/IP問題


免責聲明!

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



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