TCP是如何保证包的顺序传输
生活随笔
收集整理的這篇文章主要介紹了
TCP是如何保证包的顺序传输
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://blog.csdn.net/ggxxkkll/article/details/7894112
?大家都知道,TCP提供了最可靠的數據傳輸,它給發送的每個數據包做順序化(這看起來非常煩瑣),然而,如果TCP沒有這樣煩瑣的操作,那么,可能會造成更多的麻煩。
如造成數據包的重傳、順序的顛倒甚至造成數據包的丟失。
?
那么,TCP具體是通過怎樣的方式來保證數據的順序化傳輸呢?
?
1. 主機每次發送數據時,TCP就給每個數據包分配一個序列號并且在一個特定的時間內等待接收主機對分配的這個序列號進行確認,
2. 如果發送主機在一個特定時間內沒有收到接收主機的確認,則發送主機會重傳此數據包。
3. 接收主機利用序列號對接收的數據進行確認,以便檢測對方發送的數據是否有丟失或者亂序等,
4. 接收主機一旦收到已經順序化的數據,它就將這些數據按正確的順序重組成數據流并傳遞到高層進行處理。
具體步驟如下:
?
(1)為了保證數據包的可靠傳遞,發送方必須把已發送的數據包保留在緩沖區; (2)并為每個已發送的數據包啟動一個超時定時器; (3)如在定時器超時之前收到了對方發來的應答信息(可能是對本包的應答,也可以是對本包后續包的應答),則釋放該數據包占用的緩沖區; (4)否則,重傳該數據包,直到收到應答或重傳次數超過規定的最大次數為止。(5)接收方收到數據包后,先進行CRC校驗,如果正確則把數據交給上層協議,然后給發送方發送一個累計應答包,表明該數據已收到,如果接收方正好也有數據要發給發送方,應答包也可方在數據包中捎帶過去。轉載于:https://www.cnblogs.com/Allen-rg/p/7513344.html
總結
以上是生活随笔為你收集整理的TCP是如何保证包的顺序传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到朋友请吃饭是什么意思
- 下一篇: sha256---利用java自带的实现