有需求或技術問題可以隨時跟我連絡 (MSN上線時)

2010年4月6日 星期二

TCP 與 UDP的比較

熟悉網路的人,應該都聽過TCP與UDP,這裡我們簡單來看看到底這兩個協定差別在那?
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)
TCP這個協定最主要的特色在於傳輸資料時,需要驗證資料,確保正確性。所以花的時間稍多一點。
而UDP這個協定最主要的特色在於傳輸資料時,不需要驗證資料,不保證正確性,所以比較省時間。而一般來說,像是多媒體串流(streaming)就是使用這種協定。

TCP跟UDP都是網路封包傳送的方式,而網路在傳輸過程中,為了有效使用網路資源,避免過大封包沒傳完,而導致後方所有封包都不能傳送,故所有封包在傳送時都會被分割成小封包,然後在接收端重新組合,而採用TCP傳送封包,在接收端會檢查是否所有封包都完整接收到,如果有幾個封包在傳送過程中掉了,接收端會要求傳送端重送,故TCP方式傳送可確保封包完整,但唯一缺點是,相對於UCP,它傳送時間可能會比較久;反之,UDP在接收端沒有檢查機制,故用UDP傳送的小封包,有可能會不見而不被發現,一般TCP會被用在比較需要完整性的protocol如email,而UDP則用在只求速度,對完整性要求不高,如syslog上.

TCP 提供的是一個連線導向(Connection Oriented)的可靠傳輸, 而UDP 則是一個非連線型(Connectionless)的非可靠傳輸協定,它並不會運用確認機制來保證資料是否正確的被接收、不需要重傳遺失的資料、資料的接收可不必按順序進行、也不提供回傳機制來控制資料流的速度。因此, UDP 信息可能會在網路傳送過程中遺失、重複,不過速度也可能比接收端的處理速度還快。對於某些訊息量較大、時效性大於可靠性的傳輸來說(像是影音類的).