網絡基礎知識
網絡編程的目的就是指直接或間接地通過網絡協議與其他計算機進行通訊
網絡編程中有兩個主要的問題
一個是如何准確的定位網絡上一台或多台主機
另一個就是找到主機後如何可靠高效的進行數據傳輸
在TCP/IP協議中IP層主要負責網絡主機的定位
數據傳輸的路由
由IP地址可以唯一地確定Internet上的一台主機
而TCP層則提供面向應用的可靠的或非可靠的數據傳輸機制
這是網絡編程的主要對象
一般不需要關心IP層是如何處理數據的
目前較為流行的網絡編程模型是客戶機/服務器(C/S)結構
即通信雙方一方作為服務器等待客戶提出請求並予以響應
客戶則在需要服務時向服務器提出申請
服務器一般作為守護進程始終運行
監聽網絡端口
一旦有客戶請求
就會啟動一個服務進程來響應該客戶
同時自己繼續監聽服務端口
使後來的客戶也能及時得到服務
兩類傳輸協議
TCP
UDP
盡管TCP/IP協議的名稱中只有TCP這個協議名
但是在TCP/IP的傳輸層同時存在TCP和UDP兩個協議
TCP是Tranfer Control Protocol的簡稱
是一種面向連接的保證可靠傳輸的協議
通過TCP協議傳輸
得到的是一個順序的無差錯的數據流
發送方和接收方的成對的兩個socket之間必須建立連接
以便在TCP協議的基礎上進行通信
當一個socket(通常都是server socket)等待建立連接時
另一個socket可以要求進行連接
一旦這兩個socket連接起來
它們就可以進行雙向數據傳輸
雙方都可以進行發送或接收操作
UDP是User Datagram Protocol的簡稱
是一種無連接的協議
每個數據報都是一個獨立的信息
包括完整的源地址或目的地址
它在網絡上以任何可能的路徑傳往目的地
因此能否到達目的地
到達目的地的時間以及內容的正確性都是不能被保證的
下面我們對這兩種協議做簡單比較
使用UDP時
每個數據報中都給出了完整的地址信息
因此無需要建立發送方和接收方的連接
對於TCP協議
由於它是一個面向連接的協議
在socket之間進行數據傳輸之前必然要建立連接
所以在TCP中多了一個連接建立的時間
使用UDP傳輸數據時是有大小限制的
每個被傳輸的數據報必須限定在
KB之內
而TCP沒有這方面的限制
一旦連接建立起來
雙方的socket就可以按統一的格式傳輸大量的數據
UDP是一個不可靠的協議
發送方所發送的數據報並不一定以相同的次序到達接收方
而TCP是一個可靠的協議
它確保接收方完全正確地獲取發送方所發送的全部數據
總之
TCP在網絡通信上有極強的生命力
例如遠程連接(Telnet)和文件傳輸(FTP)都需要不定長度的數據被可靠地傳輸
相比之下UDP操作簡單
而且僅需要較少的監護
因此通常用於局域網高可靠性的分散系統中client/server應用程序
讀者可能要問
既然有了保證可靠傳輸的TCP協議
為什麼還要非可靠傳輸的UDP協議呢?主要的原因有兩個
一是可靠的傳輸是要付出代價的
對數據內容正確性的檢驗必然占用計算機的處理時間和網絡的帶寬
因此TCP傳輸的效率不如UDP高
二是在許多應用中並不需要保證嚴格的傳輸可靠性
比如視頻會議系統
並不要求音頻視頻數據絕對的正確
只要保證連貫性就可以了
這種情況下顯然使用UDP會更合理一些
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25841.html