什麼是TCP什麼是UDP它們有什麼區別(什麼是TCP什麼是UDP它們有什麼區別)
2023-08-08 06:19:21 2
學計算機的同學都聽說過TCP和UDP,但是很少有人能解釋清楚他們的特點。到底什麼是TCP、UDP呢?它們到底有什麼區別?
TCP英文叫Transmission Control Protocol,中文叫傳輸控制協議,它其實就是一種網絡傳輸協議。
汽車在公路上行駛,需要遵守交通規則,同樣數據在網絡上傳輸也要遵守一套規則,這個規則就叫協議。
而TCP是一種面向連接的協議,也就是說,在收發數據前,必須和對方確認已經建立了可靠的連接。
建立連接的方式又稱為三次握手:
(1)第一次握手,主機A向主機B發出請求數據包:「我想給你發數據,可以嗎?」這是第一次對話。
(2)第二次握手,主機B向主機A發送同意連接,並要求同步的數據包(同步就是兩臺主機協調工作,一臺在發送,一臺在接收):「可以,你什麼時候發?」這是第二次對話。
(3)第三次握手,主機A再發出一個數據包確認主機B的要求同步:「我現在就發,你接收吧!」這是第三次對話。
這三次對話的目的是使數據包的發送和接收同步,TCP協議是一定要經過這三次對話之後,主機A才可以向主機B正式發送數據。
TCP建立連接需要進行三次握手,但是斷開連接卻要進行四次揮手:
(1)第一次揮手,在主機A完成數據傳輸後,將控制位FIN置1,提出停止TCP連接的請求。
(2)第二次揮手,主機B收到FIN位置上的1信息後對其做出響應,確認這一方向上的TCP連 接將關閉,將ACK置1。
(3)第三次揮手,B主機再提出反方向的關閉請求,並將控制位FIN置1,發送給A主機,並關閉連接。
(4)第四次揮手,主機A對主機B的請求進行確認,將ACK置1,並關閉連接,至此雙方關閉連接。
TCP協議的這種複雜的建立連接和斷開連接的規則,其實是為了使網絡數據的傳輸更加安全可靠,使發送數據端和接收數據端在數據正式傳輸前就有了交互,為數據正式傳輸打下了可靠的基礎。
同時在數據的傳輸過程中TCP還具有流量控制,差錯控制等功能,比如發送端發送的數據速度過快,而接收端的接收速度卻很慢,就很難保證數據不丟失,所以需要進行流量控制。
而TCP是使用滑動窗口的方式來進行流量控制的,可以把這個滑動窗口理解成一個緩衝區,接收端利用滑動窗口的值來告訴發送端對它所發送的數據能提供多大的緩衝區,以此來協調控制兩邊的傳送節奏和速率。
我們再來看看UDP,UDP英文叫User Datagram Protocol,中文叫用戶數據報協議,它也是一種網絡傳輸協議,但是它和TCP有很大的不同。
UDP主要有以下幾個特點:
(1)UDP是一個非連接的協議,傳輸數據之前,源端和終端不建立連接,當它想傳送時,就簡單地去抓取來自應用程式的數據,並儘可能快地把它扔到網絡上。
在發送端,UDP傳送數據的速度僅受應用程式生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程式每次從隊列中讀一個消息段。
(2)由於傳輸數據不建立連接,因此不需要維護連接狀態,包括收發狀態等。一臺服務機可同時向多個客戶機傳輸相同的消息。
(3)UDP信息包的包頭很短,只有8位元組,相對於TCP的20位元組包頭信息,UDP的包頭開銷很小。
(4)吞吐量不受擁擠控制算法的調節,只受應用軟體生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
(5)UDP會盡最大努力去傳輸和接受數據且沒有限制,但並不保證可靠的數據交付,主機也不需要維持複雜的連結狀態表(裡面有許多參數)。
(6)UDP是面向報文的。發送方的UDP對應用程式傳過來的報文,在添加包頭後就向下交付給IP層。既不拆分,也不合併,而只是保留這些報文的邊界,因此,應用程式需要自己限制合適的報文大小,以免報文太大導致丟失率高。
我們經常使用ping命令來測試兩臺主機之間的TCP/IP通信是否正常。
其實ping命令的原理就是向對方主機發送UDP數據包,然後對方主機確認收到數據包,如果數據包到達的消息及時反饋回來,那麼網絡就是通的,並且可以通過返回的數據包計算響應時間。
總結一下就是,TCP安全、可靠、面向連接,但是傳輸速度慢。UDP不安全、不可靠、面向非連接,但是傳輸速度快。
TCP和UDP各有各的優點和缺點,沒有什麼好和壞之分,只有合不合適。
那麼什麼時候該用TCP,什麼時候該用UDP呢?有哪些軟體是使用TCP或者UDP協議的呢?
歡迎關注我,下篇文章為您講解。
,