1. 程式人生 > >兩類傳輸協議:TCP,UDP

兩類傳輸協議:TCP,UDP

不知道 ans 生命力 簡單比較 運行 可靠 可靠傳輸 情況下 一是

1) TCP是Transfer Control Protocol的簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方的成對的兩個socket之間必須建立連接,以便在TCP協議的基礎上進行通信,當一個socket(通常都是server socket)等待建立連接時,另一個socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數據傳輸,雙方都可以進行發送或接收操作.[這是一種典型的服務端與客戶端進行交互的模型]

TCP是一個基於連接的協議,它能夠提供兩臺計算機之間的可靠的數據流。HTTP、FTP、Telnet等應用都需要這種可靠的通信通道。

端口號是什麽東西呢?一個機器有固定的IP地址,我們可以通過IP地址來找到對應的機器,但是機器上運行著多個程序,我們不知道要對機器上的哪一個程序進行通信?(比如說同時運行msn和QQ,我們不能把qq的信息發送到msn上去),所以就有端口號來唯一的確定一臺機器上的某一個程序。端口是一個數字,在0~65535之間,其中0~1024的端口號一般被系統的應用程序占用了,所以建議使用靠後面的端口號數字,比如5000。

確定好IP地址和對應的端口號之後我們就可以鎖定用戶的程序了,而不會對不相關的程序有任何關聯了。如下圖106-3所示:服務器總是有一個線程在監聽者某一個端口號,一旦服務端與客戶端連接好之後,服務器就會另起一個線程,來保證這條線路數據的傳遞正常。這種就是通過I/O進行數據的連接,而且也是字節流,因為我們必須通過網絡來發送文件,音頻,視頻數據等,而這些數據都是二進制形式,而不是字符信息。當然如果可以確定是字符串的話,可以進行字符流的傳輸。

2) UDP是User Datagram Protocol的簡稱,是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網絡上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。

UDP是從一臺計算機向另一臺計算機發送稱為數據報的獨立數據包的協議,該協議並不保證數據報是否能正確地到達目的地。它是一個非面向連接的協議。

  • 下面我們對這兩種協議做簡單比較:

使用UDP時,每個數據報中都給出了完整的地址信息,因此無需要建立發送方和接收方的連接。對於TCP協議,由於它是一個面向連接的協議,在socket之間進行數據傳輸之前必然要建立連接,所以在TCP中多了一個連接建立的時間。

使用UDP傳輸數據時是有大小限制的,每個被傳輸的數據報必須限定在64KB之內。而TCP沒有這方面的限制,一旦連接建立起來,雙方的socket就可以按統一的格式傳輸大量的數據。UDP是一個不可靠的協議,發送方所發送的數據報並不一定以相同的次序到達接收方。而TCP是一個可靠的協議,它確保接收方完全正確地獲取發送方所發送的全部數據。

總之,TCP在網絡通信上有極強的生命力,例如遠程連接(Telnet)和文件傳輸(FTP)都需要不定長度的數據被可靠地傳輸。相比之下UDP操作簡單,而且僅需要較少的監護,因此通常用於局域網高可靠性的分散系統中client/server應用程序。

既然有了保證可靠傳輸的TCP協議,為什麽還要非可靠傳輸的UDP協議呢?主要的原因有兩個。一是可靠的傳輸是要付出代價的,對數據內容正確性的檢驗必然占用計算機的處理時間和網絡的帶寬,因此TCP傳輸的效率不如UDP高。二是在許多應用中並不需要保證嚴格的傳輸可靠性,比如視頻會議系統,並不要求音頻視頻數據絕對的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會更合理一些。

兩類傳輸協議:TCP,UDP