我和大家一起討論下tcp在保證可靠傳輸資料的前提下,是怎樣對傳輸的資料進行順序化操作的。
大家都知道,tcp提供了最可靠的資料傳輸,它給傳送的每個資料報做順序化(這看起來非常煩瑣),然而,如果tcp沒有這樣煩瑣的操作,那麼,可能會造成更多的麻煩。如造成資料報的重傳、順序的顛倒甚至造成資料報的丟失。
那麼,tcp具體是通過怎樣的方式來保證資料的順序化傳輸呢?
主機每次傳送資料時,tcp就給每個資料報分配乙個序列號並且在乙個特定的時間內等待接收主機對分配的這個序列號進行確認,如果傳送主機在乙個特定時間內沒有收到接收主機的確認,則傳送主機會重傳此資料報。接收主機利用序列號對接收的資料進行確認,以便檢測對方傳送的資料是否有丟失或者亂序等,接收主機一旦收到已經順序化的資料,它就將這些資料按正確的順序重組成資料流並傳遞到高層進行處理。
具體步驟如下:
(1)為了保證資料報的可靠傳遞,傳送方必須把已傳送的資料報保留在緩衝區;
(2)並為每個已傳送的資料報啟動乙個超時定時器;
(3)如在定時器超時之前收到了對方發來的應答資訊(可能是對本包的應答,也可以是對本包後續包的應答),則釋放該資料報占用的緩衝區;
(4)否則,重傳該資料報,直到收到應答或重傳次數超過規定的最大次數為止。
(5)接收方收到資料報後,先進行crc校驗,如果正確則把資料交給上層協議,然後給傳送方傳送乙個累計應答包,表明該資料已收到,如果接收方正好也有資料要發給傳送方,應答包也可方在資料報中捎帶過去。
TCP是如何保證包的順序傳輸
大家都知道,tcp提供了最可靠的資料傳輸,它給傳送的每個資料報做順序化 這看起來非常煩瑣 然而,如果tcp沒有這樣煩瑣的操作,那麼,可能會造成更多的麻煩。如造成資料報的重傳 順序的顛倒甚至造成資料報的丟失。那麼,tcp具體是通過怎樣的方式來保證資料的順序化傳輸呢?1.主機每次傳送資料時,tcp就給每...
TCP是如何保證包的順序傳輸
大家都知道,tcp提供了最可靠的資料傳輸,它給傳送的每個資料報做順序化 這看起來非常煩瑣 然而,如果tcp沒有這樣煩瑣的操作,那麼,可能會造成更多的麻煩。如造成資料報的重傳 順序的顛倒甚至造成資料報的丟失。那麼,tcp具體是通過怎樣的方式來保證資料的順序化傳輸呢?1.主機每次傳送資料時,tcp就給每...
TCP是如何保證可靠傳輸的
1 確認和重傳 接受方在收到報文就會確認,傳送方傳送一段時間後沒收到確認就重傳。2 資料校驗,3 資料的合理分片和排序 4 流量控制 接收方來不及處理時,提示傳送方降低傳送速率,防止包丟失。5 擁塞控制 網路擁塞時,減少資料的傳送。滑動視窗機制 傳送視窗 swnd 和接受視窗 rwnd 通過視窗機制...