HTTP 網路程式設計簡介

作品

書籍

課程

程式集

小說集

論文集

散文集

影片集

編輯雜誌

程式人

電子書

JavaScript

計算語言學

微積分

Blender 動畫

C# 語言

系統程式

高等 C 語言

Java

Android

Verilog

Wikidot

R 統計軟體

機率統計

計算機數學

組合語言

人工智慧

開放原始碼

網路資源運用

計算機結構

相關訊息

常用工具

友站連結

在家教育

RSS

最新修改

網頁列表

簡體版

English

  1. HTTP : 永遠傳回 Hello 的 WebServer
  2. HTTP : 自己動手設計 WebServer
  3. HTTP : 用程式下載一個網頁
  4. HTTP : 網路爬蟲 (Crawler) 的設計
  5. HTTP : 瀏覽器的控制 (Browser)

HTTP 協定是 Web 的基礎,Web 是一個典型的 Client-Server 架構,主要由 HTTP+URL+HTML 所組成。

Web Server (網站伺服器) 是 WWW 網路的基礎, 1991 年 Tim Burner Lee 發明 HTML 與 URL 後,就自己寫了第一個
Web Server,導至後來 Web 網路的興起,因此、Tim Burner Lee被尊稱為 WWW 之父,然而、對於一般程式設計人員而言,
Web Server 的設計方法卻是個難解的謎,本篇文章將以一個簡單而完整的 Java 程式,讓大家了解 Web Server 的設計原理。

簡介

一個最簡單的 Web Server 之功能包含下列三個步驟:

  • 步驟一 : 接收瀏覽器所傳來的網址。
  • 步驟二 : 取出相對應的檔案。
  • 步驟三 : 將檔案內容傳回給瀏覽器。

然而、在這個接收與傳回的過程中,所有的資訊都必須遵照固定的格式,規範這個接收/傳送格式的協定,稱為超文字傳送協定
(Hyper Text Transfer Protocol),簡稱為 HTTP 協定。

HTTP 協定格式的基礎,乃是建構在網址 URL 上的傳輸方式,早期只能用來傳送簡單的 HTML 檔案,後來經擴充後也可以傳送
其他類型的檔案,包含 影像、動畫、簡報、Word 文件等。

在本文中,我們將先簡介 HTTP 協定的訊息內容,然後在介紹如何以 Java 語言實作 HTTP 協定,以建立一個簡單的 Web Server。

HTTP 協定

當你在瀏覽器上打上網址(URL)後,瀏覽器會傳出一個HTTP訊息給對應的 Web Server,Web Server 再接收到這個訊息後,
根據網址取出對應的檔案,並將該檔案以 HTTP 格式的訊息傳回給瀏覽器,以下是這個過程的一個範例。

豬小弟上網,在瀏覽器中打上 http://ccc.kmit.edu.tw/index.htm,於是、瀏覽器傳送下列訊息給 ccc.kmit.edu.tw 這台電腦。

GET /index.htm HTTP/1.0
Accept: image/gif, image/jpeg, application/msword, */*
Accept-Language: zh-tw
User-Agent: Mozilla/4.0
Content-Length: 
Host: ccc.kmit.edu.tw
Cache-Control: max-age=259200
Connection: keep-alive

當 ccc.kmit.edu.tw 電腦上的 Web Server 程式收到上述訊息後,會取出指定的路徑 /index.htm ,然後根據預設的網頁根目錄
(假設為 c:\web\),合成一個 c:\web\index.htm 的絕對路徑,接著從磁碟機中取出該檔案,並傳回下列訊息給豬小弟的瀏覽器。

HTTP/1.0 200 OK
Content-Type: text/html
Content-Length: 438

<html>
  ....
</html>

其中第一行 HTTP/1.0 200 OK 代表該網頁被成功傳回,第二行 Content-Type: text/html 代表傳回文件為 HTML 檔案,
Content-Length: 438 代表該 HTML 檔案的大小為 438 位元組。

參考文獻

  1. How Java Web Servers Work [[http://www.onjava.com/pub/a/onjava/2003/04/23/java_webserver.html]]
  2. JDK API : java.net.ServerSocket, [[http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html]]
  3. Hypertext Transfer Protocol — HTTP/1.0, [[http://www.w3.org/Protocols/HTTP/1.0/draft-ietf-http-spec.html]]

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License