【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )
文章目錄
- I TCP 傳輸過程
- II TCP 傳輸示例
- III TCP 傳輸特殊情況處理
I TCP 傳輸過程
1. TCP 傳輸過程 : 排序 , 順序發送 , 順序組裝 ;
- ① 排序 : TCP 發送數據時 , 會將數據拆分成不同的片段 , 并對這些片段進行排序 ;
- ② 順序發送 : 將排序好的數據片段順序發送 ;
- ③ 順序組裝 : 在接收端按照順序將數據片段組裝成原數據 ;
2. 超時重發機制 : 如果某個數據片沒有到達 , 或者送達時間超時 , 接收方會將相關信息反饋給發送方 , 發送方需要將該數據片重新發送 ;
3. 拆分數據作用 ( 節省流量 ) : 當數據沒有送達或者超時 , 是需要重新發送數據的 , 如果不拆分數據 , 將一整包數據整體發送 , 如果發送失敗 , 需要重新發送整個數據 , 這樣就非常浪費流量 ;
4. 數據重發機制 : 服務器端收到客戶端發送的數據時 , 其會定時向客戶端發送服務器端已經收到的數據 , 如果客戶端沒有收到服務器端反饋的某條數據已經送達 , 客戶端就會認為該數據沒有送達 , 客戶端重新將該數據重新發送一遍 ;
II TCP 傳輸示例
1. A 向 B 發送 5 個數據包 :
- ① 發送第一幀數據 ( 完成 ) : 首先將第一幀數據發送給 B , B 收到 1 數據 , 將收到 1 數據反饋給 A , 表明已經收到了第一幀數據 ;
- ② 發送第二幀數據 ( 反饋信息未送達 ) : 發送第二幀數據 , 接收方收到了 2 數據 , 但是反饋信息沒能發送給 A ;
- ③ 發送第三幀數據 ( 沒有送達 B ) : 發送的第三幀數據沒有發送到 B , 中途丟包了 ;
- ④ 發送第四幀數據 ( 反饋信息未送達 ) : 第四幀數據送達 B , 但是 B 的反饋信息沒有送達 A ;
- ⑤ 發送第五幀數據 ( 完成 ) : 第五幀數據發送到 B , B 的反饋信息也送到了 A ;
2. 重發數據 : 其中第三幀數據沒有送達 , 時鐘超時 , B 將相關信息發送到 A , A 重發第三幀數據 ;
III TCP 傳輸特殊情況處理
1. 發送過程中沒有按順序到達 : 被拆分的數據包是按照排好的順序發送到接收端的 , 但是由于網絡原因 , 可能到達接收方不是原來的順序 , 接收方會重新進行排序 ;
2. 丟包情況處理 : 如果發送端在超時時間內沒有收到接收端的某個包的反饋信息 , 就會認為該包沒有送達 , 在超時后 , 會重新發送該包數據 ;
3. 連接斷開情況處理 : 如果連接傳輸中途斷開 , 需要進行重連 , 重連后再次發送數據 ;
總結
以上是生活随笔為你收集整理的【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java 网络编程】TCP 连接 断开
- 下一篇: 【Java 网络编程】客户端 Socke