標籤:位元組 必須 udp協議 沒有 鎖定 連線導向 視頻 簡單 資料報
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