tcp和udp差別
tcp
udp
是否連接配接
面向連接配接
面向非連接配接
傳輸可靠性
可靠的
不可靠的
應用場合
傳輸大量的資料
少量資料
速度
慢
快
osi 和 tcp/ip 模型在傳輸層定義兩種傳輸協定:tcp(或傳輸控制協定)和 udp(或使用者資料報協定)。
udp
udp 與 tcp 的主要差別在于 udp 不一定提供可靠的資料傳輸。事實上,該協定不能保證資料準确無誤地到達目的地。udp 在許多方面非常有效。當某個程式的目标是盡快地傳輸盡可能多的資訊時(其中任意給定資料的重要性相對較低),可使用 udp。icq 短消息使用 udp 協定發送消息。
許多程式将使用單獨的tcp連接配接和單獨的udp連接配接。重要的狀态資訊随可靠的tcp連接配接發送,而主資料流通過udp發送。
tcp的目的是提供可靠的資料傳輸,并在互相進行通信的裝置或服務之間保持一個虛拟連接配接。tcp在資料包接收無序、丢失或在傳遞期間被破壞時,負責資料恢複。它通過為其發送的每個資料包提供一個序号來完成此恢複。記住,較低的網絡層會将每個資料包視為一個獨立的單元,是以,資料包可以沿完全不同的路徑發送,即使它們都是同一消息的組成部分。這種路由與網絡層處理分段和重新組裝資料包的方式非常相似,隻是級别更高而已。
為確定正确地接收資料,tcp要求在目标計算機成功收到資料時發回一個确認(即 ack)。如果在某個時限内未收到相應的 ack,将重新傳送資料包。如果網絡擁塞,這種重新傳送将導緻發送的資料包重複。但是,接收計算機可使用資料包的序号來确定它是否為重複資料包,并在必要時丢棄它。
tcp與udp的選擇
如果比較udp包和tcp包的結構,很明顯udp包不具備tcp包複雜的可靠性與控制機制。與tcp協定相同,udp的源端口數和目的端口數也都支援一台主機上的多個應用。一個16位的udp包包含了一個位元組長的頭部和資料的長度,校驗碼域使其可以進行整體校驗。(許多應用隻支援udp,如:多媒體資料流,不産生任何額外的資料,即使知道有破壞的包也不進行重發。)
很明顯,當資料傳輸的性能必須讓位于資料傳輸的完整性、可控制性和可靠性時,tcp協定是當然的選擇。當強調傳輸性能而不是傳輸的完整性時,如:音頻和多媒體應用,udp是最好的選擇。在資料傳輸時間很短,以至于此前的連接配接過程成為整個流量主體的情況下,udp也是一個好的選擇,如:dns交換。把snmp建立在udp上的部分原因是設計者認為當發生網絡阻塞時,udp較低的開銷使其有更好的機會去傳送管理資料。tcp豐富的功能有時會導緻不可預料的性能低下,但是我們相信在不遠的将來,tcp可靠的點對點連接配接将會用于絕大多數的網絡應用。
tcp協定和udp協定特性差別總結:
1. tcp協定在傳送資料段的時候要給段标号;udp協定不
2. tcp協定可靠;udp協定不可靠
3. tcp協定是面向連接配接;udp協定采用無連接配接
4. tcp協定負載較高,采用虛電路;udp采用無連接配接
5. tcp協定的發送方要确認接收方是否收到資料段(3次握手協定)
6. tcp協定采用視窗技術和流控制