保證TCP數(shù)據(jù)傳輸可靠性的方法,TCP協(xié)議是面向連接的協(xié)議,也就是說,TCP協(xié)議是可靠的數(shù)據(jù)傳輸協(xié)議。
TCP協(xié)議提供UDP協(xié)議所無法提供的數(shù)據(jù)傳輸可靠性操作。當(dāng)使用TCP協(xié)議傳輸數(shù)據(jù)時,數(shù)據(jù)的發(fā)送方按數(shù)據(jù)的順序號發(fā)送數(shù)據(jù)包,并且在得到數(shù)據(jù)接收方對數(shù)據(jù)的接收確認(rèn)之前,發(fā)送方不會發(fā)送下一個順序的數(shù)據(jù)包。如果在規(guī)定時間內(nèi)發(fā)送方?jīng)]有得到接收方關(guān)于收到某個數(shù)據(jù)包的確認(rèn),發(fā)送方會重新傳送該數(shù)據(jù)包。數(shù)據(jù)包的發(fā)送和確認(rèn)過程如圖1所示。
圖1 TCP協(xié)議的數(shù)據(jù)傳輸
如圖1所示,當(dāng)主機A和主機B通過TCP連接進行數(shù)據(jù)傳輸時,假設(shè)主機A向主機B發(fā)出的數(shù)據(jù)包的順序號是10;主機B收到10號包之后,會向主機A發(fā)出確認(rèn)號為11的確認(rèn)包,表示主機B希望得到第11號數(shù)據(jù)包,也就是說它已經(jīng)收到了第10號數(shù)據(jù)包;主機A收到該確認(rèn)之后,會向主機B發(fā)送第11號數(shù)據(jù)包。
如果主機B沒有收到10號數(shù)據(jù)包,或者主機B的確認(rèn)包由于某種原因沒有到達主機A,主機A認(rèn)為主機B沒有收到該數(shù)據(jù)包,主機A會向主機B重新傳送10號數(shù)據(jù)包。