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