網路程式設計簡介 

簡介

最常被使用的網路函式庫稱為 Socket,這個名詞起源於柏克萊大學於 1983 年所釋放出來的 Berkeley Sockets 函式庫,該函式庫將網路視為串流。因而使存取網路的動作,與存取檔案一樣,都可以透過串流機制運行。

雖然 Socket 函式庫將網路抽像化為串流,但是理解網路的架構對程式的學習仍有很大的幫助,目前我們所使用的 Internet 網路是基於 TCP/IP 的網路架構,要能理解目前的網路程式架構,首先要從 TCP/IP 的架構下手。

TCP/IP 網路架構

網路的 OSI 參考模型將網路的層次分為七層,但是 TCP/IP 架構所依據的 ARPANET DoD 模型則只有四層,兩者之間存在某種對應關係,這個對應關係顯示於下圖當中,能正確的理解該圖,將有助於程式設計師理解網路程式的原理。

OSI_TCPIP.gif

圖一、OSI 與 TCP/IP 的層次對應圖

舉例而言,當我們使用 TCP 的方式傳輸訊息時,由於 TCP 傳輸層會自動維持封包排列的順序,因此先傳送的封包一定會先到達,這讓程式設計師不需要擔心封包的先後順序問題。但在使用 UDP 傳輸的時候,先傳送的封包可能反而會後到達,因此訊息的順序將無法確保,這種 UDP 傳送方式雖然較快,但是卻較不方便,通常只被使用在強調速度的領域,像是立即影音傳輸的應用上。

基於 HTTP 的 Web

HTTP 是 Web 全球資訊網 (萬維網) 的基礎協定,該協定架構在 TCP/IP 架構之上,屬於應用層的協定。構成 HTTP 的主要兩個應用程式是瀏覽器 (Browser) 與網站 (Web Server)。HTTP 是一個典型的 Client-Server (客戶端-伺服端) 架構的協定,使用者透過 Client 端的瀏覽器連結到 Server 的伺服器,然後由伺服端將結果以 HTML 的網頁格式傳回。 HTML 的網頁當中包含了許多超連結 (Hyperlink),這些超連結連接到某些網址 (URL),於是使用者可以透過瀏覽器中的超連結,進一步點選其他的網頁,進行網路瀏覽 (衝浪) 的行為。

Socket 函式庫

目前大部分的程式語言與平台 (像是 Java, C#, .NET, UNIX, Linux, ….) 都已經支援了 Socket 函式庫。但是由於語言與設計者的不同,這些 Socket 函式庫的使用方式都略有差異。在 C# 最常使用的是微軟 .NET 平台當中 的 Socket 函式庫,這個函式庫相當的成熟,除了將 TCP/IP 封裝成 Socket 函式庫之外,微軟甚至進一步將 HTTP 、加解密、甚至是高階的 Web 服務等機制,都包含在 .NET 平台當中,因此 C# 的程式設計師可以很輕易的寫出網路應用程式。

結語

Socket 函式庫與 TCP/IP/HTTP 等層級的協定,是學習網路程式的基礎,在下一節當中,我們將會進一步以範例說明網路程式的架構。

參考文獻

  1. Internet Socket
  2. OSI模型
  3. OSI model
  4. 互联网
  5. 網頁瀏覽器
  6. 网络服务器
  7. 全球資訊網
  8. 超文字
  9. Hyperlink
  10. URL
  11. Web Crawler
  12. Internet Protocol Suite
  13. UDP
  14. IP
  15. Router
  16. Packet Switch
  17. HTTP

陳鍾誠 (2010年06月15日),(網頁標題) C# 網路程式設計簡介,(網站標題) 免費電子書:C# 程式設計,2010年06月15日,取自 http://cs0.wikidot.com/netintroduction ,網頁修改第 1 版。

arrow
arrow

    Johnson峰 發表在 痞客邦 留言(0) 人氣()