簡單的web伺服器 (1)HTTP協議

2022-07-23 13:09:36 字數 2698 閱讀 4472

這段時間查詢如何實現乙個簡單的web伺服器的一些資料,發現了一些不太清楚的概念,下面是我找的一些資料以及我自己的理解

我自己的理解:簡單來說,超文字檔案可以理解成我們平時所說的鏈結。超文字檔案中包含有超連結,指向其他的資源,超文字檔案是全球資訊網(www)的基礎。我們平時使用瀏覽器時,都是點選乙個選項後就會跳到另乙個頁面的,比如我點選一下「4399小遊戲」,就會跳到另乙個網頁,所以「4399小遊戲」實際上就是乙個超文字檔案,本質上就是乙個超連結。

2.b/s模型 --- c/s模型

以前查閱過b/s模型與c/s模型,看得我雲裡霧裡的,現在終於理解了一點。。。

我這個簡單的理解:

b/s模型:就是 瀏覽器/伺服器 模型,就是瀏覽器與伺服器之間通過全球資訊網來通訊,有乙個瀏覽器即可訪問伺服器;

c/s模型:就是 客戶端/伺服器 模型,需要在pc端安裝(乙個還是幾個?)特定的軟體,客戶端與服務端直接相連,省去了中間環節,資料的傳輸相對較快。

1.http協議概述

http協議解決檔案傳輸的問題。http協議是應用層(如果不知道什麼是應用層,請搜尋 osi模型)的協議,主要建立在tcp協議之上。

http協議的目的:如何在全球資訊網的網路環境下,更好的利用tcp協議,以實現檔案,特別是超文字檔案的傳輸。

引用自:[

我想要實現的是乙個簡單的基於b/s模型(即瀏覽器/伺服器 模型)的web伺服器。

簡單來說:就是瀏覽器通過http協議向伺服器傳送乙個請求,然後伺服器接受請求並解析請求後,又通過http協議來回應瀏覽器,即將瀏覽器請求的資訊(一般來說就是乙個網頁)顯示在瀏覽器上。

2.http協議通訊

http協議由兩部分組成:http協議頭部分資料部分

http協議規定了請求和回覆的格式:

瀏覽器向伺服器傳送請求的格式:

//協議頭部分:

get /hello.txt http/1.1 //起始行(包含了最重要的資訊必須寫):get為獲取內容的請求,瀏覽器要獲取的內容是伺服器上的hello.txt這個文字檔案,是按照http1.1的協議版本傳送的請求

...... //協議頭資訊,可選部分,可寫可不寫

\r\n //http協議頭的最後有乙個空行,即回車加轉行,在c語言中表示為"\r\n",是http協議頭的結束標誌,一定要加

//資料部分:

【瀏覽器請求的資料一般為html格式】

//頁面開始...

//頁面結束

伺服器應答瀏覽器的格式:

//協議頭部分:

http/1.1 200 ok //起始行(包含了最重要的資訊必須寫):伺服器按照http1.1的協議版本應答瀏覽器,200 ok表示瀏覽器請求成功

server: //啟動相應的程序,即呼叫乙個可執行檔案

content-type: text/plain; charset = iso - 8859-1 //(必選)伺服器應答瀏覽器的內容的型別,上面瀏覽器請求的是乙個文字檔案(.txt),伺服器按照檔案的文字原文返回給瀏覽器

content-length: ... //內容的長度;建議不寫,因為瀏覽器會自動推算出應答內容的長度,如果要寫,則一定要寫正確(我不會寫。。。,所以我選擇不寫!)

......

connection: close //鏈結關閉 http協議的鏈結是使用的時候建立,使用完之後就直接關閉,下次使用時再次建立鏈結,邊用邊建立鏈結,用完就關閉。

\r\n //http協議頭的結束標誌,一定要加

//資料部分:

【資料部分是伺服器返回給瀏覽器的內容,將其以頁面的形式顯示在瀏覽器上】

...

注意:

1)瀏覽器與伺服器之間的 請求與應答 所用的http協議版本一定要一致

2)請求與應答 的協議頭最後一定要有乙個空行,c語言中表示為"\r\n",這是協議頭的結束標誌

3)伺服器應答瀏覽器的協議頭中,內容的型別(content-type:)一定要寫!具體的型別表示(比如:文字檔案,網頁,音訊,等)請自行在網上搜尋

4)上面寫的只是格式!!!不要直接複製貼上!具體的**需要你自己按照自己所用的程式語言的語法自己去編寫,不要問我為什麼有這個提醒,問就是我蠢。。。

絕對路徑:就是完整的路徑,從根目錄(/)開始(windos是從符盤(c盤,d盤,f盤等)開始)一直到需要的檔案或資料夾的路徑。

相對路徑:就是相對目前所在的位置來說的路徑。

比如:我現在所在的檔案是/home/yst,我想要找的檔案在/home/yst/dir/hello.c,那麼絕對路徑就是從根目錄開始,就是/home/yst/dir/hello.c;相對路徑就是從當前目錄開始,以當前目錄為根目錄,就是./dir/hello.c, "."可以省略不寫。其中"."就想當於當前目錄/home/yst

web伺服器 簡單web伺服器實現

三次握手 一般情況下是瀏覽器先傳送請求資料,c s ack 應答 三次握手成功後,才開始進行通訊資料的收發。四次揮手 一般情況下是客戶端先關閉,給瀏覽器傳送關閉資訊。如果瀏覽器傳送了關閉資訊,但是伺服器沒有回過去,較慢 那麼瀏覽器一直發是不是就會有問題?所以會等待 2msl的時間。一般為2 5分鐘。...

http協議(五)web伺服器

1 http1.1規範允許一台http伺服器搭建多個web站點。比如提供web託管服務的 商,可以用一台伺服器為多為客戶服務,也可以以每位客戶持有的網域名稱執行各自不同的 這裡利用了虛擬伺服器的功能。客戶端使用http協議訪問伺服器時,會經常採用類似www.baidu.con這樣的主機名和網域名稱 ...

web伺服器 HTTP協議基礎

1.http協議 一種規範和約定,實現客戶端和伺服器的通訊 2.http請求格式 請求行 請求頭 請求體 請求行 method request uri http version 方法 請求的資源位址 http版本 請求頭 accept 指瀏覽器或其他客戶可以接愛的mime檔案格式。servlet可以...