1. 程式人生 > 程式設計 >盤點網路程式設計必須要知道的基礎知識

盤點網路程式設計必須要知道的基礎知識

在Java程式設計開發中,網路通訊的開發是很重要的一部分,它是兩臺或多臺計算機進行網路的基礎,網路程式編寫的目的也就是為了與其他計算機之間進行網路通訊,所以今天大灰狼就來和大家分享一下Java網路通訊中要的知道的一些知識。

其實在Java的發展過程中,為了更加方便的進行網路通訊,開發者逐漸的將網路程式設計中所需要的一些內容封裝成了不同的類,使用者在進行網路程式設計時,只需要建立相應類的物件,並且呼叫相應的方法即可。

首先我們來了解一下網路的通訊結構。

區域網和因特網

在網路通訊中,兩臺計算機的資訊傳輸可以使用如下的網路線路來表示:

盤點網路程式設計必須要知道的基礎知識

  • 其中伺服器是指提供資訊的計算機或程式,
  • 客戶端是指請求資訊的計算機或程式,
  • 兩者之間通過網路進行連線並且實現相互的通訊,

那麼我們所瞭解的區域網和因特網又有哪些區別的呢?

區域網(LAN)從名字上我們大概就可以瞭解,它是在一定區域內由一定數量的計算機互相連線而成的網路,它可以是兩臺,也可以是同一個區域內的上千臺計算機構成,當一個區域網的範圍繼續進行擴大,它也就形成了廣域網(WAN)。

而我們所熟知的因特網(Internet)就是由無數個區域網和廣域網連線而成的,它是網路與網路之間所串連成的龐大網路,這些網路以一組通用的協定相連,形成邏輯上的單一巨大國際網路。這種將計算機網路互相聯接在一起的方法可稱作“網路互聯”,在這基礎上發展出覆蓋全世界的全球性網際網路絡稱“網際網路”,即是“互相連線一起的網路”。

那麼我們接下來就來聊一聊這些網路之間到底具備哪些協議?

網路協議

網路協議規定了計算機之間連線的物理、機械、電器等特徵,計算機之間的相互定址規則,資料傳送衝突的解決方式,長資料如何分段傳送和接收等內容。這就像在世界上不同的國家之間,有不同的法律是一樣的,目前在網際網路中的網路協議也有很多種,其中最常見的就是IP協議和TCP以及UDP協議。

大灰狼來簡單的和大家介紹一下以上這三種協議的基本內容

IP協議

IP是internetprotocol的簡稱,是網路協議中的一種,internet網路採用的協議是TCP/IP協議,但是這個協議是絕對不可以小視的,因特網依靠TCP/IP協議在全球範圍內實現了不同硬體結構、不同作業系統、不同網路系統之間的互聯。在intertet網路中,存在著數以億計的主機,每一臺主機都用網路為其分配的intertete地址來代表自己主機本身,這個地址就是IP地址,所以我們也可以說IP地址就是某一臺計算機的身份證號碼。

到目前為止呢,IP地址用四個位元組來表示,也就是32位的二進位制數來表示,這也是我們通常最常見的IPV4地址,為了方便使用呢,我們通常取每個位元組的十進位制數,並且在每個位元組之間用圓點隔開來表示IP地址,如最常見的192.168.1.1,當然肯定還有小夥伴在電腦上也發現有用16個位元組來表示的IP地址,這種IP地址是屬於IPV6地址

並且TCP/IP模式是一種層次結構,一共有四層,分別為應用層,傳輸層網際網路層和網路層,他們每一層都有自己所特定的功能,提供特定的服務和對應的訪問介面,並且拒一定的獨立性,這四層的關係如下圖所示

盤點網路程式設計必須要知道的基礎知識

TCP與UDP協議

在TCP/UDP協議棧中,有兩個高階協議是我們在進行網路應用程式的編寫中應該要了解的,即傳輸控制協議TCP和使用者資料報協議UDP。

TCP協議是一種以固接連線為基礎的協議,它提供兩臺計算機間可靠的資料傳輸,TCP可以保證從一端資料送至連線的另一端時,資料能夠準確送達,而且抵達的資料的排列順序和送出時的順序相同,

因此TCP協議適合可靠性要求非常高的場合,打個比方來說:這就像我們雙方在打電話,我必須先撥號給對方,等兩端確定連線之後,雙方才能互相聽到對方講話,也能夠知道對方用的是什麼內容。

而UDP協議是無連線通訊協議,不保證資料的可靠傳輸,但能夠向若干個目標傳送資料,或者接收來自若干個園的資料,UDP以獨立傳送資料包的方式進行,這種方式就像快遞員送快遞給客戶,可以寄出很多個包裹給同一個人,每一個包裹都是相互獨立的個包裹,送達的順序並不重要,快遞員小哥接收包裹的順序也不能保證與愁包裹的順序相同。

因此,UDP協議適用於一些對資料準確性要求不高,但對資料傳輸速度和時效性要求非常高的網路,例如我們常見的網路聊天室,線上影片等。

這其中的原因就是因為TCP協議在認證上存在額外耗費,可能是傳輸速度減慢,而UDP協議即使有一小部分資料包損失,或者傳輸順序有所不同,也不會造成嚴重的危害該通訊。

這也就是為什麼常說TCP可靠而非安全,UDP安全而非可靠了。

在這裡我們需要注意一點,就是一些防火牆和路由器會設定成不允許就地被資料包傳輸,因此,若遇到UDP連線方面的問題,應該先確定所在的網路是否允許UDP協議

埠和套接字

剛聽到這兩個名詞的時候,小夥伴可能不是特別瞭解,在這裡打個通俗一點的比方,套接字就好比電源插座,將原本複雜的客戶端伺服器端通過這個插座連線在一起。

一般而言,對於一臺計算機來說,只有單一的連線到網路的物理連線,所有的資料都通過此連線對內、對外送達特定的計算機。這就是埠的定義,網路程式設計中的埠(Port)並非真實存在的,他只不過是一個假想的連線裝置,埠被規定為在一個0~65535之間的整數。例如HTTP服務一般使用80埠,FTP服務使用21埠,所以當一臺計算機提供了多種不同的服務時,客戶機就會通過不同的埠來確定連線到伺服器上的哪項服務上面。

其實在埠上也有一定的講究,如0~1023之間的埠,一般用於一些知名的網路服務和應用,而使用者的普通網路應用程式應該使用1024以上的埠數,這樣做的目的也是避免埠號與另一個應用或系統服務所用的埠所造成衝突。

埠的使用如下圖所示

盤點網路程式設計必須要知道的基礎知識

在網路程式中的套接字(Socket)表示用於將應用程式與埠連線起來,同樣套接字也是一個假想的連線裝置,在JAVA程式設計中將套接字可以抽象為類,我們在進行程式開發的時候,只需要建立Socket類物件,就可以使用套接字了。

可以用下面這個圖來簡單的表示套接字:

盤點網路程式設計必須要知道的基礎知識

好啦,關於網路通訊基礎的講解就是這些了,之後大灰狼也會和大家分享如何使用TCP和UDP以及MQTT協議進行網路程式的編寫。

到此這篇關於盤點網路程式設計必須要知道的基礎知識的文章就介紹到這了,更多相關網路程式設計基礎知識內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!