TCP在傳輸前會先將封包分割成小封包,再加上編號後傳出資料。最後接收端會檢查是否全部收到?是否有錯誤的封包?確認無誤後便組合起來。
TCP功能
1.Sequence Number(循序編號):為每一個封包加上編號,因為封包不一定先傳先到所以可靠此編號還重新組合。
2.Acknowledgement(確認):在接收到封包後回傳一個"我已接收"的確認封包。
3.Checksum(錯誤檢查):在每一個封包的表頭中加上檢查欄位,如果接收端發現檢查值不合,就不會發出確認封包。
4.Retransmission(重送):經過一段時間發送端沒有收到確認封包就會重送該封包。
TCP封包格式 |
TCP的特性
1.Connection-Oriented(連結導向):在發送資料前,會先建立一個虛擬電路(Virtual Circuit),建立後資料就可以在這條虛擬電路中開始傳送資料。
2.Reliable(可靠性):確認、檢查、重送是TCP可靠性的依據。
3.Inefficient(效率較低):由於TCP協定是屬於『連線導向』、『可靠的』協定也就多出了很多封包傳輸前的確認動作,在傳輸過程中又多了等待對方Acknowledge的時間,因此在傳輸的整體過程中比較沒有效率,但卻可以保證將TCP封包正確地傳送到接收端。
4.Flow Control(流量控制):由於每一位使用者的電腦軟、硬體設備不一定相同,當接收的雙方設備等級差太多時,傳輸過程中,處理速度較慢的接收端,會因為來不及處理瞬間傳入的資料,而造成資料遺失,並要求重傳,無形中已造成不必要的浪費,TCP具有流量控制功能,可以協調彼此雙方都能接受的傳送速度,避免因為大量的接收封包,而造成主機無法負荷進而丟棄(discard)封包。
3-way handshaking
3-way handshaking(三向式握手程序) |
步驟一:
要建立連線時發送端會將封包內的SYN(Synchronize,同步)設為1,其他設為0傳給接收端以進行同步要求。這代表"我要進行同步連結"
步驟二:
接收端收到這個封包時,如果符合要求,就會傳送一個SYN=1,ACK=1的封包,讓發送端知道已收到同步確認。這代表"你要同步連結,我已收到"
步驟三:
發送端會將SYN設為0、ACK設為1的封包,這代表"了解我要開始傳送資料了"。
TCP封包傳送與接收
TCP封包傳送與接收 |
步驟一:
發送端傳送封包並啟動定時器(Timer),此時接收端收到並檢查完序號後又回傳一個確認封包給發送端因為在逾時前收到所以完成第一個封包的接收。
步驟二:
發送端傳送封包並啟動定時器(Timer),此時接收端並未收到或是來不及處裡,因此發送端逾時。所以重新傳送。Sliding Window(滑動視窗):
滑動視窗的流量控制方法:
發送端在收到確認訊息之前,可以連續傳送多個訊框。
滑動視窗用一個ACK來表示收到多個資料訊框。
所有滑動視窗是指發送端與接收端各有一個窗口,用來控制目前訊框送收狀態。
訊框可以隨時被確認,不用等到窗口填滿。
每個訊框 都有一個編號,從 0~n-1 (modulo n)。
譬如,若n=4,則訊框的編號為0~3之間變化,請注意,視窗的大小是n-1。
換言之,傳送端與接收端都能保存n-1個訊框,所以接收端在送回確認訊框之前,傳送端最多可送出n-1個訊框
沒有留言:
張貼留言