C語言中文網 目錄
首頁 > Java教程 > Java網絡編程 閱讀:1,432

Java網絡編程基礎知識

< 上一頁Java網絡編程 Java InetAddress類下一頁 >

網絡編程的目的就是直接或間接地通過網絡協議與其他計算機進行通信。在 Java 語言中包含網絡編程所需要的各種類,編程人員只需要創建這些類的對象,調用相應的方法,就可以進行網絡應用程序的編寫。

要進行網絡程序的編寫,編程人員需要對網絡傳輸協議、端口和套接字等方面的知識有一定的了解。下面就從這幾個方面對網絡編程的基礎進行介紹。

網絡分類

了解網絡編程之前首先帶領讀者對計算機網絡進行一些簡單的了解。計算機網絡是指將有獨立功能的多臺計算機,通過通信設備線路連接起來,在網絡軟件的支持下,實現彼此之間資源共享和數據通信的整個系統。

按照地理范圍主要將網絡分為局域網、城域網、廣域網和因特網。
  • 局域網(LocalArea Network)簡稱 LAN,是一種在小范圍內實現的計算機網絡,一般在一個建筑物內或者一個工廠、一個事業單位內部獨有,范圍較小。
  • 城域網(Metropolitan Area Network)簡稱為 MAN,一般是一個城市內部組建的計算機信息網絡,提供全市的信息服務。
  • 廣域網(Wide Area Network)簡稱為 WAN,它的范圍很廣,可以分布在一個省、一個國家或者幾個國家。
  • 因特網(Internet)則是由無數的 LAN 和 WAN 組成的。

網絡編程模型

在網絡通信中主要有兩種模式的通信方式:一種是客戶機/服務器(Client/Server)模式,簡稱為 C/S 模式;另一種是瀏覽器/服務器(Browser/Server)模式,簡稱 B/S 模式。下面主要針對這兩種模式進行介紹。

Client/Server 模式

圖 1 是客戶機、服務器以及網絡三者之間的關系圖,使用這種模式的程序很多,例如很多讀者喜歡玩的網絡游戲,需要在本機上安裝一個客戶端,服務器運行在游戲開發公司的機房。

C/S模型
圖1 C/S模型

使用 C/S 模式的程序,在開發時需要分別針對客戶端和服務器端進行專門開發。這種開發模式的優勢在于由于客戶端是專門開發的,表現力會更強。缺點就是通用性差,也就是說一種程序的客戶端只能和對應的服務器端進行通信,不能和其他的服務器端進行通信,在實際維護中,也需要維護專門的客戶端和服務器端,維護的壓力較大。

Browser/Server 模式

對于很多程序,運行時不需要專門的客戶端,而是使用通用的客戶端,例如使用瀏覽器。用戶使用瀏覽器作為客戶端的這種模式叫作瀏覽器/服務器模式。使用這種模式開發程序時只需開發服務器端即可,開發的壓力較小,不需要維護客戶端。但是對瀏覽器的限制比較大,表現力不強。

網絡協議

網絡協議是網絡上所有設備(網絡服務器、計算機及交換機、路由器、防火墻等)之間通信規則的集合,它規定了通信時信息必須采用的格式和這些格式的意義。目前的網絡協議有很多種,在這里簡單介紹幾種常用的網絡協議。

IP 協議

IP 是英文 Internet Protocol(網絡之間互聯的協議)的縮寫,中文簡稱為網協,也就是為計算機網絡相互連接進行通信而設計的協議。在 Internet 中它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在 Internet 上進行通信時應當遵守的規則。任何廠家生產的計算機系統只有遵守 IP 協議才可以與 Internet 互聯。

Internet 網絡中采用的協議是 TCP/IP 協議,其全稱是 Transmission Control Protocol/Internet Protocol。Internet 依靠 TCP/IP 協議在全球范圍內實現不同硬件結構、不同操作系統、不同網絡的互聯。

對網絡編程來說,主要是計算機和計算機之間的通信,首要的問題就是如何找到網絡上數以億計的計算機。為了解決這個問題,網絡中的每個設備都會有唯一的數字標識,也就是 IP 地址。

在計算機網絡中,現在命名 IP 地址的規定是 IPv4 協議,該協議規定每個 IP 地址由 4 個 0~255 的數字組成。每臺接入網絡的計算機都擁有一個唯一的 IP 地址,這個地址可能是固定的,也可能是動態的。

目前 IETF(Internet Engineering Task Force,互聯網工程任務組)設計的用于替代現行版本 IP 協議(IPv4)的下一代協議 IPv6,釆用 6 字節來表示 IP 地址,但目前還沒有開始使用。

TCP/IP 定義了電子設備如何連入 Internet 以及數據如何在它們之間傳輸的標準。協議采用 4 層的層級結構,分別是應用層、傳輸層、網絡層和網絡接口層。每一層都呼叫它的下一層所提供的網絡來完成自己的需求。

TCP 負責發現傳輸的問題,一有問題就發出信號要求重新傳輸,直到所有數據安全正確地傳輸到目的地,而 IP 是給 Internet 的每一臺電腦規定一個地址。圖 2 是 TCP/IP 層次結構圖。

TCP/IP層次結構
圖2 TCP/IP層次結構

TCP 與 UDP 協議

盡管 TCP/IP 協議從名稱看只包括 TCP 這個協議名,但是在 TCP/IP 協議的傳輸層同時存在 TCP(Transmission Control Protocol,傳輸控制協議)和 UDP(User Datagram Protocol,用戶數據報協議)兩個協議。

在網絡通信中 TCP 協議類似于使用手機打電話,可以保證把信息傳遞給別人;而 UDP 協議類似于發短信,接收人有可能接收不到傳遞的信息。

在網絡通信中使用 TCP 的方式需要建立專門的虛擬連接,然后進行可靠的數據連接,如果數據發送失敗,客戶端會自動重發該數據。而使用 UDP 方式不需要建立專門的虛擬連接,傳輸也不是很可靠,如果發送失敗則客戶端無法獲得。

TCP 協議是一種以固定連線為基礎的協議,它提供兩臺計算機之間可靠的數據傳送。而 UDP 無連接通信協議,它不保證可靠數據的傳輸,但能夠向若干目標發送數據以及接收來自若干源的數據。

對于一些重要的數據,一般使用 TCP 方式來進行數據傳輸,而大量的非核心數據則通過 UDP 方式進行傳遞。使用 TCP 方式傳遞的速度稍微慢一點,而且傳輸時產生的數據量會比 UDP 大一點。

套接字和端口

在網絡上很多應用程序都是采用客戶端/服務器(C/S)的模式,實現網絡通信必須將兩臺計算機連接起來建立一個雙向的通信鏈路,這個雙向通信鏈路的每一端稱之為一個套接字(Socket)。

一臺服務器上可能提供多種服務,使用 IP 地址只能唯一定位到某一臺計算機,卻不能準確地連接到想要連接的服務器。通常使用一個 0~65535 的整數來標識該機器上的某個服務,這個整數就是端口號(Port)。端口號并不是指計算機上實際存在的物理位置,而是一種軟件上的抽象。

端口號主要分為以下兩類:
  1. 由 Internet 名字和號碼指派公司 ICANN 分配紿一些常用的應用層程序固定使用的熟知端口,其值是 0~1023。例如 HTTP 服務一般使用 80 端口,FTP 服務使用 21 端口。
  2. 一般端口用來隨時分配紿請求通信的客戶進程。

運行在一臺特定機器上的某個服務器(如 FTP 服務器)都有一個套接字綁定在該服務器上,服務器只是等待和監聽客戶的連接請求??蛻舳丝蛻粜枰婪掌鞯闹鳈C名和端口號。

為了建立連接請求,客戶機試圖與服務器上指定端口號上的服務進行連接,這個請求過程如圖 3 所示。

客戶向服務器發送請求
圖3 客戶向服務器發送請求

如果服務器接收到客戶端的請求,就會創建一個套接字,客戶端使用該套接字與服務器通信,但此時客戶端的套接字并沒有綁定到與服務器連接的端口號上。
< 上一頁Java網絡編程 Java InetAddress類下一頁 >

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户