TCP協議是一種基于字節流的面向連接、可靠的傳輸層通信協議。TCP協議是專門為在不可靠的互聯網上提供可靠的端到端字節流而設計的傳輸協議。當應用層向TCP層發送一個用于網間傳輸的8位數據流時,TCP將數據流分成適當長度的段。最大傳輸段大小(MSS)通常受計算機所連接的網絡的數據鏈路層的最大傳輸單位(MTU)限制。之后,TCP將數據包傳輸到IP層,IP層通過網絡將數據包傳輸到接收實體的TCP層。
一、TCP協議在什么情況下會丟包?
1.TCP協議定義是一種面向連接、可靠、基于字節流的傳輸層通信協議。
2.TCP是基于不可靠的網絡來實現可靠傳輸的,肯定會有丟包的問題。
3.如果在通信過程中發現數據丟失或丟包,最大的可能就是程序在發送或接收過程中出現了問題。
例:我有2臺服務器,A和b,當A服務器向b服務器發送數據的頻率過高時,b服務器沒有時間處理,香港服務器,導致數據丟包。(原因可能是程序邏輯、多線程同步、緩沖區溢出)。如果A服務器不控制發送頻率或重傳數據,那么B服務器收到的數據會更少。會造成數據丟失。
二、如何解決TCP協議丟包后的丟包問題。
為了滿足TCP協議而不丟失數據包。TCP協議有以下規定:
1.到達確認:接收端收到分片數據時,根據分片數據的序列號向發送端發送確認。
2.重復處理:作為IP數據報傳輸的TCP片段將被復制,TCP的接收端必須丟棄復制的數據。
3.數據分片:發送端對數據進行分片,接收端對數據進行重組。TCP決定了片段的大小,控制了片段的分裂和重組。
4.超時重傳:發送方在發送分片時設置超時定時器,VPS,定時器到期后如果沒有收到相應的確認,則重傳分片數據。
5.數據校驗:TCP將保留其報頭和數據的校驗和,這是一個端到端的校驗和,用于檢測傳輸過程中數據的任何變化。如果收到的片段檢查有錯誤,TCP會丟棄該片段,并且不確認收到該報文段會導致對端超時重傳。
6.亂序處理:作為IP數據報傳輸的TCP片段在到達時可能會亂序。TCP將對接收到的數據重新排序,并以正確的順序將其移交給應用層。
7.滑動窗口:TCP連接每一側的接收緩沖區空間是固定的,接收端只允許另一端發送接收端緩沖區可以接受的數據。TCP在滑動窗口的基礎上提供流量控制,防止較慢主機的緩沖區溢出。百度云加速買一送一(優惠來源mfisp.com),租用或托管服務器可咨詢夢飛云idc了解。