回覆列表
  • 1 # 使用者6149118019001

    考慮到從0開始的0指代不明,我想還是跳過OS及網絡卡驅動之類的玩意,從socket這個1開始。1.建立一個TCP Socket伺服器。首先編寫一個TCP Socket伺服器,是因為HTTP通訊是建立在TCP Socket基礎上的。所要做的工作就是監聽某個指定埠(預設HTTP服務在80),接收訪問請求並建立連線,接收發來的流,並且提供回覆流的能力。這一步可以簡單可以複雜,可以考慮併發、均衡、埠連線限制balabala,也可以二逼到啥都不管。總之我們需要監聽一個埠就是了。2.編寫一個解析HTTP Request的解析器。既然是HTTP服務,從之前監聽的埠收來的流裡自然就是HTTP Request。Request分表頭和正文,包括訪問地址、UA、Cookie等各類引數以及提交的表單等內容。詳細格式看看HTTP協議文件就好。3.實現URL路由。獲得了Request之後,我們知道使用者訪問了個什麼地址,就要指向相應的內容。根據地址來指定內容的工作就是路由,把不同的路徑交給不同的程式(函式、指令碼…)處理。4.產生Response。HTTP Response其實與Request很類似,也是區分表頭和正文,多幾個關機字表示當前相應狀態、響應內容型別之類的東西。正文裡就是你需要的迴應,可能是個json,可能是個靜態檔案,也可能是別的什麼東西。從路由處得到響應的內容,然後按照HTTP Response的要求包起來。最後經過之前的Socket服務返回給使用者。基本上簡單的HTTP Server就這麼點東西,可以說並不複雜。但是考慮到各種額外功能,例如許可權、ip過濾、併發/非同步、request轉發、websocket、https…其實還是蠻麻煩的。

  • 中秋節和大豐收的關聯?
  • 3個月的寶寶睡覺發出打呼嚕的聲音是怎麼啦?