Java編程那些事兒9——網路編程基礎

來源:互聯網
上載者:User

Java編程那些事兒9——網路編程基礎

作者:陳躍峰

出自:http://blog.csdn.net/mailbomb

1.4 網路編程基礎

         對於初學者,或者沒有接觸過網路編程的程式員,會覺得網路編程涉及的知識很高深,很難,其實這是一種誤解,當你的文法熟悉以後,其實基本的網路編程現在已經被實現的異常簡單了。

1.4.1 網路編程是什嗎?

         網路編程的本質是兩個裝置之間的資料交換,當然,在電腦網路中,裝置主要指電腦。資料傳遞本身沒有多大的難度,不就是把一個裝置中的資料發送給兩外一個裝置,然後接受另外一個裝置反饋的資料。

         現在的網路編程基本上都是基於請求/回應程式式的,也就是一個裝置發送請求資料給另外一個,然後接收另一個裝置的反饋。

         在網路編程中,發起串連程式,也就是發送第一次請求的程式,被稱作用戶端(Client),等待其他程式串連的程式被稱作伺服器(Server)。用戶端程式可以在需要的時候啟動,而伺服器為了能夠時刻相應串連,則需要一直啟動。例如以打電話為例,首先撥號的人類似於用戶端,電話中的人必須保持電話暢通類似於伺服器。

         串連一旦建立以後,就用戶端和伺服器端就可以進行資料傳遞了,而且兩者的身份是等價的。

         在一些程式中,程式既有用戶端功能也有伺服器端功能,最常見的軟體就是BT、emule這類軟體了。

         下面來談一下如何建立串連以及如何發送資料。

1.4.2 IP地址和網域名稱

         在現實生活中,如果要打電話則需要知道對應人的電話號碼,如果要寄信則需要知道收信人的地址。在網路中也是這樣,需要知道一個裝置的位置,則需要使用該裝置的IP地址,具體的串連過程由硬體實現,程式員不需要過多的關心。

         IP地址是一個規定,現在使用的是IPv4,既由4個0-255之間的數字組成,在電腦內部儲存時只需要4個位元組即可。在電腦中,IP地址是分配給網卡的,每個網卡有一個唯一的IP地址,如果一個電腦有多個網卡,則該台電腦則擁有多個不同的IP地址,在同一個網路內部,IP地址不能相同。IP地址的概念類似於電話號碼、身份證這樣的概念。

         由於IP地址不方便記憶,所以有專門創造了網域名稱(Domain Name)的概念,其實就是給IP取一個字元的名字,例如163.com、sina.com等。IP和網域名稱之間存在一定的對應關係。如果把IP地址類比成社會安全號碼的話,那麼網域名稱就是你的姓名。

         其實在網路中只能使用IP地址進行資料轉送,所以在傳輸以前,需要把網域名稱轉換為IP,這個由稱作DNS的伺服器專門來完成。

         所以在網路編程中,可以使用IP或網域名稱來標識網路上的一台裝置。

1.4.3 連接埠的概念

         為了在一台裝置上可以運行多個程式,人為的設計了連接埠(Port)的概念,類似的例子是公司內部的分機號碼。

         規定一個裝置有216個,也就是65536個連接埠,每個連接埠對應一個唯一的程式。每個網路程式,無論是用戶端還是伺服器端,都對應一個或多個特定的連接埠號碼。由於0-1024之間多被作業系統佔用,所以實際編程時一般採用1024以後的連接埠號碼。

         使用連接埠號碼,可以找到一台裝置上唯一的一個程式。

         所以如果需要和某台電腦建立串連的話,只需要知道IP地址或網域名稱即可,但是如果想和該台電腦上的某個程式交換資料的話,還必須知道該程式使用的連接埠號碼。

1.4.4 資料轉送方式

         知道了如何建立串連,下面就是如何傳輸資料了,先來看一下資料轉送的方式。

         在網路上,不管是有線傳輸還是無線傳輸,資料轉送的方式有兩種:

l  TCP(Transfer Control Protocol)

傳輸控制通訊協定方式,該傳輸方式是一種穩定可靠的傳送方式,類似於顯示中的打電話。只需要建立一次串連,就可以多次傳輸資料。就像電話只需要撥一次號,就可以實現一直通話一樣,如果你說的話不清楚,對方會要求你重複,保證傳輸的資料可靠。

使用該種方式的優點是穩定可靠,缺點是建立串連和維持串連的代價高,傳輸速度不快。

l  UDP(User Datagram Protocol)

使用者資料包通訊協定方式,該傳輸方式不建立穩定的串連,類似於發簡訊息。每次發送資料都直接發送。發送多條簡訊,就需要多次輸入對方的號碼。該傳輸方式不可靠,資料有可能收不到,系統只保證儘力發送。

使用該種方式的優點是開銷小,傳輸速度快,缺點是資料有可能會丟失。

         在實際的網路編程中,大家可以根據需要選擇任何一種傳輸方式,或組合使用這兩種方式實現資料的傳遞。

1.4.5 協議的概念

         協議(Protocol)是網路編程中一個非常重要的概念,指的是傳輸資料的格式。因為大家在網路中需要傳輸各種各樣的資訊,在程式中獲得到的都是一組數值,如何閱讀這些數值呢,就需要提前規定好這組資料的格式,在用戶端按照該格式產生發送資料,伺服器端按照該格式閱讀該資料,然後在按照一定的格式產生資料反饋給用戶端,用戶端再按照該格式閱讀資料。現實中類似的例子就是電報編碼,每個數字都是用特定的資料表達。

         一般程式的協議都分成用戶端發送的資料格式,以及伺服器端反饋的資料格式,用戶端和伺服器端都遵循該格式產生或處理資料,實現兩者之間的複雜資料交換。

1.4.6 小結

         網路編程就是使用IP地址,或網域名稱,和連接埠串連到另一台電腦上對應的程式,按照規定的協議(資料格式)來交換資料,實際編程中建立串連和發送、接收資料在語言級已經實現,做的更多的工作是設計協議,以及編寫產生和解析資料的代碼罷了,然後把資料轉換成邏輯的結構顯示或控制邏輯即可。

         需要瞭解更多的網路編程的知識,建議閱讀《JAVA2網路通訊協定內幕》一書。

 

聯繫我們

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