為了通過數據包實現(xiàn)可靠性傳輸,需要考慮很多事情,例如數據的破壞、丟包、重復記憶分片順序混亂等問題。如不能解決這些問題,也就無從談起可靠傳輸。
TCP通過檢驗和、序列號、確認應答、重發(fā)控制、連接管理以及窗口控制等機制實現(xiàn)可靠性傳輸。

通過序列號與確認應答提高可靠性

在TCP中,當發(fā)送端的數據到達接收主機時,接收端主機會番號一個已收到消息的通知。這個消息叫做確認應答--ACK(Positive Acknowled-gement 意指已經接收。)

TCP通過肯定的確認應答(ACK)實現(xiàn)可靠的數據傳輸。當發(fā)送端將數據發(fā)生之后會等待對端的確認應答。如果有確認應答,說明數據已經成功到達對端。反之,則數據丟失的可能性很大。

當然,在一定時間內沒有等到確認應答,發(fā)送端就可以認為數據已經丟失,并進行重發(fā)。由此,即使產生了丟包,仍然能夠保證數據能夠到達對端,實現(xiàn)可靠傳輸。

未收到確認應答并不意味著數據一定丟失。也有可能是數據對方已經收到,知識返回的確認應答在途中丟失。這種情況也會導致發(fā)送端因沒有收到確認應答,而認為數據沒有到達目的地,從而進行重新發(fā)送,如下圖: