TCP (Transmission Control Protocol 傳輸控制協議)面向連接的不可靠的數據流服務
UDP (User Datagram Protocl 用戶數據報協議)面向無連接的不可靠的數據報服務
TCP傳輸和UDP不一樣TCP傳輸是流式的必須先建立連接然後數據流沿已連接的線路(虛電路)傳輸因此TCP的數據流不會像UDP數據報一樣每個數據報都要包含目標地址和端口因為每個數據報要單獨路由TCP傳輸則只需要在建立連接時指定目標地址和端口就可以了
如果我不是剛學過磚頭似的《計算機網絡》(第四版 Andrew STanenbaum著 潘愛民譯 清華大學出版社)以上說的我自己都看不懂上面只是簡要提一下如果要學習網絡這本書還是值得推薦的英文版名字是Computer Networks
形象的講TCP就像打電話UDP就像發電報
就像發電報宏觀上來看UDP是不分客戶端和服務端的通信雙方是平等的
微觀上來講只相對一個報文發送端是客戶端監聽端是服務端發送端把數據報發給路由器就像把電報發給了郵局後面的事情就是發送者無法控制也無從知曉的了所以說是不可靠的可能會出現報文丟失而無從知曉就像每張電報都要有收件人一樣每個數據報都要有目的地址和端口
就像打電話TCP每次連接都是分客戶端和服務端的連接的發起者(相當與撥號打電話的人)是客戶端監聽者(相當於在電話邊等著接電話的人)是服務端發起者指定要連接的服務器地址和端口(相當於撥號)監聽者通過和發起者三次握手建立連接(相當於聽到電話響去接電話)建立連接後雙方可以互相發送和接受數據(打電話)
Java中TCP編程主要通過ServerSocket/Socket 類 實現的其中SocketgetInputStream()/getOutputStream() 是獲得輸入/輸出 數據流的ServerSocketaccept()是用來監聽建立連接的
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25769.html