Java 網路編程 TCP vs UDP

來源:互聯網
上載者:User

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

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/nyzhl/archive/2007/07/24/1705039.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.