先簡單的說一下TCP與UDP的區別:
1。基于連接與無連接;
2。對系統資源的要求(TCP較多,UDP少);
3。UDP程序結構較簡單;
4。流模式與數據報模式 ;
5。TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。
另外結合GPRS網絡的情況具體的談一下他們的區別:
1。TCP傳輸存在一定的延時,大概是1600ms(移動提供),UDP響應速度稍微快一些。
2。TCP包頭結構:
源端口16位
目標端口 16位
序列號 32位
回應序號 32位
TCP頭長度 4位
reserved 6位
控制代碼6位
窗口大小16位
偏移量16位
校驗和16位
選項 32位(可選)
這樣我們得出了TCP包頭的小長度,為20字節。
UDP包頭結構:
源端口16位
目的端口16位
長度 16位
校驗和 16位
可見,UDP的包小很多。確實如此,因為UDP是非可靠連接。設計初衷就是盡可能快的將數據包發送出去,所以UDP協議顯得非常精簡。
3。GPRS網絡端口資源,UDP十分緊缺,變化很快;而TCP采用可靠鏈路傳輸,不存在端口變化的問題。
在工業場合的應用,一般都需具備以下特點:
1。要求時時傳輸,但也有一些場合是定時傳輸,總的來說在整個傳輸過程中要求服務器中心端和GPRS終端設備能相互的、時時的傳輸數據。
TCP本身就是可靠鏈路傳輸,提供一個時時的雙向的傳輸通道,能很好的滿足工業現場傳輸的要求。但是GPRS網絡對TCP鏈路也存在一個限制:此條鏈路在長時間(大概20分鐘左右,視具體情況而定)沒有數據流量,會自動降低此鏈路的優先級直至強制斷開此鏈路。所以在實際使用中也會采用心跳包(一般是一個字節的數據)來維持此鏈路。
UDP由于自身特點,以及GPRS網絡UDP端口資源的有限性,在一段時間沒有數據流量后,端口容易改變,產生的影響就是從服務器中心端向GPRS終端發送數據,GPRS終端接收不到。具體的原因就是移動網關從中作了中轉,需要隔一定時間給主機發UDP包來維持這個IP和端口號,這樣主機就能主動給GPRS發UDP包了并且我在測試中發現,這個間隔時間很短,我在1多分鐘發一次UDP包才能夠維持,但是再長可能移動網關那邊就要丟失這個端口了,此時如果主機想主動發數據給GPRS,那肯定是不行的了,只有GPRS終端設備再發一個UDP包過去,移動重新給你分配一個中轉IP和端口,才能夠進行雙向通訊。
2。要求數據的丟包率較小。有些工業場合,例如電力、水務抄表,環保監測等等,不容許傳輸過程中的數據丟失或者限度的要求數據的可靠性。
從這一點來看,很顯然在無線數據傳輸過程中,TCP比UDP更能保證數據的完整性、可靠性,存在更小的丟包率。在實際測試中也是如此。以廈門桑榮科技有限公司提供的GPRS終端設備為例:TCP的在千分之9,UDP的在千分之17左右。
3。要求降低費用。目前有很大部分GPRS設備的應用都是取代前期無線數傳電臺,除了使用范圍外,其考慮的主要問題就是費用。能降低費用當然都是大家愿意接受的。和費用直接相關的就是流量了,流量低,費用就低了。
雖然TCP本身的包頭要比UDP多,但是UDP在實際應用中往往需要維護雙向通道,就必須要通過大量的心跳包數據來維護端口資源。總的比較起來,UDP的實際流量要比TCP還要大。很多使用者在初期的時候并不了解UDP需要大量心跳包來維持端口資源這個問題,往往都認為UDP要比TCP更節省流量,實際上這里存在著一個誤區。
4。在某些特定的應用場合,例如一些銀行的時時交互系統,對響應速度要求很高,此時數據傳輸頻率較快,不需要大量心跳包維持UDP端口資源,采用UDP就比較有利了。
5。在目前的1:N的傳輸模式中,既有多個GPRS終端設備往一個服務器中心傳輸數據,此時采用UDP會比TCP要好的多,因為UDP耗用更少的系統資源。但是在實際應用中卻發現,很多用戶還是采用TCP的傳輸方式,建立二級中心1:A(1:N),即每一個分中心對應N/A臺設備,獨立處理數據,再統一將數據傳送到主中心。這樣既能保證了傳輸過程中采用了TCP的傳輸協議,又能很好處理了中心服務器的多鏈路的系統耗用的問題。
總的來說,TCP/IP協議更能滿足目前各行業對遠程數據傳輸的要求,它提供更穩定更便利的傳輸通道,很好的滿足了遠程數據傳輸的要求。
TCP/IP協議 VS UDP協議
更新時間: 2006-02-22 14:21:26來源: 粵嵌教育瀏覽量:2622