
TCP在不可靠的網絡上實現可靠的傳輸,必然會有丟包。TCP是一個“流”協議,一個詳細的包將會被TCP拆分為好幾個包上傳,也是將會把小的封裝成大的上傳,這就是說TCP粘包和拆包難題。
但是許多人有不同的理解。TCP協議本身確保傳輸的數據不會丟失完整性。如果在傳輸過程中發現數據丟失或數據包丟失,最大的可能性是在發送或接收程序的過程中出現問題。
例如,服務器向客戶端發送大量數據,并且發送頻率非常高,因此發送鏈接中很可能會出現錯誤(1、程序處理邏輯錯誤;2、多線程同步問題;3、緩沖區溢出等)如果發送失敗得不到處理,那么客戶端收到得數據將少于理論數據,這將導致數據丟失與數據包丟失。這種現象,其實本質上來說不是丟包,也不是丟數據,只是因為程序處理有錯誤,導致有些數據沒有成功地被socket發送出去。
關于send函數的問題:
首先必須明確send函數做了什么。 他是將數據傳遞給本地TCP層,還是將數據傳遞給應用層,確認接收方TCP層后再返回。在后者的情況下,你說的沒錯,其實不然。 那是由于nagle算法不能使用了,即該算法將send函數接收的小數據匯總成大數據包發送。
即使send函數能進行數據發送,對方也不一定被接受。 TCP協議只是在傳輸層履行義務,send函數只是應用層起到向TCP層傳遞數據的作用,除此之外與TCP層沒有任何關系。
常見的解決方案包括拆包、添加包頭和發送組合包。如果服務器或客戶端斷開連接,一般會使用心跳測試。
心跳測試:每隔一段時間向服務器發送數據包。為了節省資源,通常會發送空數據包。如果發送失敗表明套接字已斷開,此時需要根據特定條件釋放資源并重新連接。
TCP傳輸可以保證數據交換的可靠性,這意味著一臺主機將數據正確地傳輸到目標計算機,目標計算機的協議棧有一定的限制,如果不及時處理在目標計算機上接收到的數據,堆棧就會溢出。
這種溢出不是由TCP協議本身引起的,而是由系統的IP協議棧的緩沖區溢出引起的!
2019-07-16
熱搜關鍵詞
文件分享軟件|文件協作軟件|安全數據協作|海量文件傳輸|點對點傳輸|傳輸系統|網盤|傳輸數據|數據遷移|跨境文件傳輸|文件傳輸解決方案|鐳速云|大文件傳輸解決方案|鐳速|鐳速軟件|大數據傳輸|文件管理平臺|大文件傳輸|文件傳輸|鐳速云傳|鐳速傳輸|數據傳輸|LDAP|AD域|傳輸協議|tcp傳輸|高速傳輸|遠程大文件傳輸|跨國文件傳輸|加速傳輸|文件共享傳輸|文件數據|傳輸大文件|跨境傳輸|數據傳輸軟件|大文件傳輸軟件|企業級文件傳輸軟件|高速數據傳輸|文件同步傳輸|FTP傳輸|跨國傳輸|高可用|傳輸加密|高速傳輸協議|aspera|斷點續傳|SOCKS5|高速緩存|網絡|安全傳輸|云存儲|Saas服務|企業網盤|運營工具|云計算|文件管理|外貿行業|數據交換|遠程辦公|極速傳輸|SD-WAN|傳輸軟件|高速傳輸軟件|高速文件傳輸|安全文件同步|文件傳輸協議|文件傳輸協議|文件傳輸工具|大數據傳輸|文件同步軟件|文件同步|文件傳輸軟件|超大文件傳輸|傳輸解決方案|電子郵件文件傳輸|文件傳輸服務器|文件傳輸服務|拖管文件傳輸|快速文件傳輸|文件直傳|數據管理|aes|文件分享|ftps|sftp|mft|共享文件|發送大文件|安全文件傳輸|小文件傳輸|同步傳輸|數據同步|文件傳輸系統|影視傳輸|遠距離傳輸|文件傳輸|跨境數據傳輸|傳輸文件|媒體行業|TLS|遠程傳輸|文件共享