TCP实现可靠传输
1. TCP 和 UDP的區別:
- TCP面向連接;UDP無連接
 - TCP保證數據的可靠傳輸,數據傳送無差錯,不丟失,無重復,按序到達;UDP不保證可靠交付
 - TCP連接一對一;UDP支持更廣泛
 - UDP實時性好,效率高,適用場景:短消息傳輸,大量客戶端,對數據安全性要求不高但實時性要求高
 - TCP面向數據流;UDP面向數據報
 
2. TCP如何保證數據傳輸的可靠性?
1. 序列號,ACK信號:發送方按照順序給要發送的數據包的每個字節都標上編號。接收方接收到發送方的數據包之后,回傳一個ACK信號,標識下一個需求的數據包初始字節編號。
2. 超時重發:在等待接收方回傳的ACK信號超時后,發送方重發數據包。一旦開始重傳,下一次等待的時間間隔指數增長,重發一定次數后還是收不到ACK信號,將強制終止連接。
3. TCP的連接管理:建立連接的三次握手和斷開連接的四次揮手。
4. 以段為單位發送數據包:在建立TCP連接的同時,兩端協商發送數據包的單位,稱為“最大消息長度”:MSS。 【TCP數據(MSS字節)】【TCP首部(20字節)】【IP首部(20字節)】
5. 滑動窗口:以段為單位發送數據包,每發送一個數據包需要等待一個ACK信號,當數據包往返時間越長效率越低?;瑒哟翱谥写翱谇岸藶橐寻l送但為收到ACK的數據,后端為待發送數據。發送端一次發送多個數據,接收端回傳收到的連續數據的ACK信號,緩存缺失數據之后的數據包(保持順序)。發送端當收到ACK信號時,窗口向前依次移動,直到遇到有數據未確認時停止。一段時間后啟動超時重傳,接收端若收到缺失數據,則和緩存數據一起發送ACK信號,否則,拋棄緩存數據。
6. 流量控制:TCP首部有一個字段來通知窗口的大小,接收端通過設置來主動控制傳輸流量。
7. 擁塞控制:發送端通過擁塞窗口主動控制傳輸流量。慢啟動:防止雙方通信剛開始就傳送大量數據包,發送端擁塞窗口初始設置為1MSS,每接受一個ACK信號,窗口擴大為兩倍。發送數據時,取擁塞窗口和滑動窗口的較小值。同時設定一個慢啟動閾值,當擁塞窗口大小超過閾值時,改為線性增長,直到網絡擁塞。擁塞時將慢啟動閾值設置為當前窗口的的一半,并將擁塞窗口的值設置為1,然后再次重復操作。
?
轉載于:https://www.cnblogs.com/walker993/p/9570902.html
總結
                            
                        - 上一篇: 安装phantomjs、使用phanto
 - 下一篇: ApiController得到服务器端绝