日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试题:谈谈你对TCP的认识

發布時間:2025/3/11 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题:谈谈你对TCP的认识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 TCP

1. 簡介
首先,TCP是一個傳輸層協議,提供進程到進程之間的可靠性數據傳輸服務,還提供流量控制差錯控制等機制。
其次,TCP是面向連接的,其通信模式是全雙工的;面向連接是指:

  • 在發送數據之前必須建立連接;
  • 連接狀態只在兩端維護,沿途節點不維護;

連接建立需要進行三次握手,關閉連接需要進行四次揮手
接下來面試官會問可靠性數據傳輸的原理、流量控制、差錯控制、三次握手和四次揮手等;

二 TCP的可靠性傳輸

1. TCP的可靠性傳輸原理

  • 流水線機制;
  • 累計確認;
  • TCP使用單一重傳定時器,當超時或收到重復的ACK會觸發重傳事件;
  • 其它的還有使用序列號對TCP報文段進行排序和丟掉重復的報文段;使用校驗和檢查錯誤的報文段;

2. 流水線機制
流水線機制,允許發送方在收到ACK之前,可以連續的發送多個分組,發送方和接收方需要更大的存儲空間以緩存分組。
3. 累計確認
接收方收到序列號1、2、3、4和5的包,不必每個都確認,只需確認第5個就行,當發送方收到接收方對5的確認ACK后,就明白接收方前5個都已經正確接收。
4. 超時重傳和快速重傳
超時重傳:發送端發送報文后,由于長時間沒有收到ACK(該分組還在路上或者丟失),所以會重傳當前分組;同時定時器RTO(Retransmission Timeout)會加倍。如果再次超時,定時器會再次加倍。
快速重傳:如果發生超時,TCP的定時器的時間會設置到很大,重發丟失分組之前要等很長時間。因此需要通過重復的ACK檢測分組丟失,如果發送方收到同一個數據的3個ACK,則會假定該分組已經丟失,會立即重傳。

三 流量控制和擁塞控制

流量控制是接收方和發送方的問題,而擁塞控制是整個網絡的問題。
1. 流量控制
在TCP的報頭中,有一個receive window的字段,接收方會通過設置該字段存儲自己緩沖區的可用空間。這樣發送方將會限制自己已發送但還未收到ACK的數據不超過接收方的可用空間。當RecvWindow為0時,為了避免死鎖,發送方還是會發送很小的數據段。
2. 擁塞控制
通過限制發送發的發送速率來進行擁塞控制:

LastByteSent-LastByteAcked <= CongWin

CongWin(congest window)被稱作擁塞窗口,最后一個發送的字節減去最后一個被確認過的字節序列號,要小于等于CongWin。發送速率:

rate≈CongWin/RTT (Bytes/sec)

動態調整CongWin以改變發送速率。

注:在早期版本,當發生擁塞后直接將CongWin置為1,現在是將其置為原來的一半;
如何動態調整發送速率,可以總結為:
**加性增-乘性減;
慢啟動;**
慢啟動并不是指增長速度慢,而是指初始速率低,初始速率為1,然后每收到一個ACK,就將CongWin翻倍,直到達到閾值的一半;
加性增是指到達閾值的一半后,每次讓CongWin增加1,而乘性減是當發生loss事件后,將CongWin減為原來的一半(也可能置為1);
lose事件:收到3個重復的ACK或者超時;
總結:
當CongWin低于閾值的時候,發送者處于慢啟動階段,CongWin指數增長;
當CongWin高于閾值,發送者處于擁塞避免階段,CongWin線性增長;
當收到3個重復的ACK,閾值設置為CongWin的一半,CongWin設置為閾值,然后進行線性增長;
當超時發生,閾值設置為CongWin的一半,CongWin設置為1,然后進行指數增長;

最后三次握手和四次揮手請參考:https://blog.csdn.net/qq_38038480/article/details/80569651

總結

以上是生活随笔為你收集整理的面试题:谈谈你对TCP的认识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。