- 第一部分:TCP/IP相關知識點
- 對TCP/IP的整體認
- 鏈路層知識點
- IP層知識點
- 運輸層知識點
- 應用層知識點
- (這些知識點都可以參考:http://www.cnblogs.com/newwy/p/3234536.html)
- 第二部分:常見面試題
- TCP協議和UDP協議的區別是什么
- TCP協議是有連接的,有連接的意思是開始傳輸實際數據之前TCP的客戶端和服務器端必須通過三次握手建立連接,會話結束之后也要結束連接。而UDP是無連接的
- TCP協議保證數據按序發送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發送的序列,也不保證按序送到。
- TCP協議所需資源多,TCP首部需20個字節(不算可選項),UDP首部字段只需8個字節。
- TCP有流量控制和擁塞控制,UDP沒有,網絡擁堵不會影響發送端的發送速率
- TCP是一對一的連接,而UDP則可以支持一對一,多對多,一對多的通信。
- TCP面向的是字節流的服務,UDP面向的是報文的服務。
- TCP介紹和UDP介紹
- 請詳細介紹一下TCP協議建立連接和終止連接的過程?
- 三次握手建立連接時,發送方再次發送確認的必要性?
- 主要是為了防止已失效的連接請求報文段突然又傳到了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為例的一個說明(轉載自知乎)
- 第三部分:相關協議
- http協議:
參考1:常見的TCP/IP問題