Java –TCP協議與UDP協議的區別,以及通訊端。

來源:互聯網
上載者:User

  在學習JAVA的時候用到SOCKET,會用,但是一直不理解是怎麼回事。也沒有電腦網路的基礎。就到處找了點資料看看。粗略覺得有用的就匯總了一下,方便以後更深層次的理解,有不足的地方請多指教。

一:TUP協議與UDP協議的區別

  TCP---傳輸控制通訊協定,提供的是連線導向、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP串連,之後才能傳輸資料。TCP提供逾時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。

  UDP---使用者資料包通訊協定,是一個簡單的面向資料報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料報前不用在客戶和伺服器之間建立一個串連,且沒有逾時重發等機制,故而傳輸速度很快

  TCP和UDP都是在傳輸層上的。簡單來說,UDP發送 資料的時候是不管資料有沒有真正達到目的地的,所以傳輸起來速度就比較快了。但是同時也容易造成資料丟失。而TCP我們知道有三向交握建立,四次握手釋放,所以傳輸更準確,但是速度可能會相對慢一些。

為確保正確地接收資料,TCP要求在目標電腦成功收到資料時發回一個確認(即ACK)。如果在某個時限內未收到相應的ACK,將重新傳送資料包。如果網路擁塞,這種重新傳送將導致發送的資料包重複。但是,接收電腦可使用資料包的序號來確定它是否為重複資料包,並在必要時丟棄它(這裡讓我想起了linux IPC裡可靠訊號與不可靠訊號的發送也是與之類似的)。

二:通訊端

  通訊端,是支援TCP/IP的網路通訊的基本操作單元,可以看做是不同主機之間的進程進行雙向通訊的端面點,簡單的說就是通訊的兩方的一種約定,用通訊端中的相關函數來完成通訊過程

  常用的TCP/IP協議的3種通訊端類型如下所示。

 

  流通訊端(SOCK_STREAM):

 

  流通訊端用於提供連線導向、可靠的Data Transmission Service。該服務將保證資料能夠實現無差錯、無重複發送,並按順序接收。流通訊端之所以能夠實現可靠的資料服務,原因在於其使用了傳輸控制通訊協定,即TCP(The Transmission Control Protocol)協議。

 

  資料通訊端(SOCK_DGRAM):資料通訊端提供了一種不需連線的服務。該服務並不能保證資料轉送的可靠性,資料有可能在傳輸過程中丟失或出現資料重複,且無法保證順序地接收到資料。資料通訊端使用UDP(User Datagram Protocol)協議進行資料的傳輸。由於資料包通訊端不能保證資料轉送的可靠性,對於有可能出現的資料丟失情況,需要在程式中做相應的處理。

 

  原始通訊端(SOCK_RAW):原始通訊端與標準通訊端(標準通訊端指的是前面介紹的流通訊端和資料通訊端)的區別在於:原始通訊端可以讀寫核心沒有處理的IP資料包,而流通訊端只能讀取TCP協議的資料,資料包通訊端只能讀取UDP協議的資料。因此,如果要訪問其他協議發送資料必須使用原始通訊端。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.