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