UDP和TCP的適用範圍是由它們各自的特性決定的。UDP的特性是:資料報,無連線,簡單,不可靠,會丟包,會亂序(實際中遇到的主要是丟包)TCP的特性是:流式,有連線,複雜,可靠,延遲較大、頻寬佔用較大(均是相對於UDP來說)不同的應用場合會選擇不同的協議。以流媒體為例,一類是對實時性要求不高的音影片點播應用(比如各大影片網站),這類應用就多用TCP/HTTP,因為使用者可以忍受延時,可以進行緩衝,但不能忍受丟包導致的馬賽克。另一類是對實時性要求很高的音影片通訊應用,比如影片會議、影片監控,這類應用使用者是無法忍受過高的延時的,相反,偶爾丟一下包卻無關大礙。而且,在這類應用中,基於UDP的組播技術也是經常用到的,因為它可以大大減輕伺服器和交換機的壓力。不太同意陳碩的第一句話,在程式設計上,UDP比TCP簡單得多,因為它沒有建立連線的過程,而且是資料報方式,接收端不用像TCP那樣需要自己重組應用層的協議包。陳碩說UDP比TCP複雜,估計還是考慮到用UDP來實現可靠傳輸,如果是這樣,那就應該使用TCP。如果對可靠性要求不是那麼高,給UDP加上確認重傳也是比較簡單的事情(亂序問題我在實際中還未遇到過,也許是出現了未被觀察到)。另外,SCTP是一個兼顧了UDP和TCP優點的協議,看它的特性是很吸引人的,不過我還沒在實際中還沒接觸過。
UDP和TCP的適用範圍是由它們各自的特性決定的。UDP的特性是:資料報,無連線,簡單,不可靠,會丟包,會亂序(實際中遇到的主要是丟包)TCP的特性是:流式,有連線,複雜,可靠,延遲較大、頻寬佔用較大(均是相對於UDP來說)不同的應用場合會選擇不同的協議。以流媒體為例,一類是對實時性要求不高的音影片點播應用(比如各大影片網站),這類應用就多用TCP/HTTP,因為使用者可以忍受延時,可以進行緩衝,但不能忍受丟包導致的馬賽克。另一類是對實時性要求很高的音影片通訊應用,比如影片會議、影片監控,這類應用使用者是無法忍受過高的延時的,相反,偶爾丟一下包卻無關大礙。而且,在這類應用中,基於UDP的組播技術也是經常用到的,因為它可以大大減輕伺服器和交換機的壓力。不太同意陳碩的第一句話,在程式設計上,UDP比TCP簡單得多,因為它沒有建立連線的過程,而且是資料報方式,接收端不用像TCP那樣需要自己重組應用層的協議包。陳碩說UDP比TCP複雜,估計還是考慮到用UDP來實現可靠傳輸,如果是這樣,那就應該使用TCP。如果對可靠性要求不是那麼高,給UDP加上確認重傳也是比較簡單的事情(亂序問題我在實際中還未遇到過,也許是出現了未被觀察到)。另外,SCTP是一個兼顧了UDP和TCP優點的協議,看它的特性是很吸引人的,不過我還沒在實際中還沒接觸過。