要寫一個類似tomcat的簡易服務器,首先需弄清楚這幾點:
1. 客戶端(Client)和服務端(Server)的角色及作用
角色A向角色B請求數據,這時可以把A視為客戶端,B視為服務端。客戶端的主要職責是發送請求和接收服務端根據自己發送的請求返回的請求信息,而服務端的主要職責是接收請求和返回請求數據。
2. 瀏覽器是什么及工作原理
我們常說B/S,C/S架構,所謂的B/S指browser/server,C/S指Client/Server,B/S架構其實就是應用于瀏覽器的程序,只要最后在瀏覽器上展現的都是 B/S架構,而非在瀏覽器上展現的都是C/S架構,如常見的英雄聯盟游戲。但是本質上只有C/S架構,因為瀏覽器是一種特殊的客戶端。
瀏覽器的特殊之處是有一下三大引擎:
3. Socket
上面提到的客戶端服務端,他們之間是怎樣實現連接及數據傳遞的,這就是Socket,每一門編程語言都有Socket編程,Socket的作用就是提供了網絡通信的能力
4. HTTP協議及HTTP與TCP/TP的區別
客戶端和服務端通過Socket實現了網絡通信的能力,可以實現數據傳遞。而協議是規范數據傳輸,也就是說客戶端和服務端之間傳輸數據要按照一定得規范和標準傳輸,不能瞎傳。
TCP/IP(Transmission Control Protocol/Internet Protocol):傳輸控制協議/網間協議
HTTP(HyperText Transfer Protocol):超文本傳輸協議。
TCP/TP的區別:
做一個形象的比喻,TCP/TP是馬路,HTTP則是馬路上的汽車,所以HTTP一定是在TCP/TP的基礎上的。
HTTP主要是應用在web程序上,設計之初就是為了提供一種發布和接收HTML頁面的方法,這樣說可能很抽象很難理解。具體的說當我們去訪問一個網站時,只需要拿到基于這個網站的內容(比如html,css,JavaScript)。但我們抓取瀏覽器接收到的資源包(可以用Fiddler工具)發現除了網頁需要的實體內容還有一些下面信息:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 24 Jan 2017 03:25:23 GMT
Connection: close
Content-Length: 661
這就是http協議規范,比如Content-Type就是說傳輸的時候文件的格式,Content-Encoding規定了編碼格式。不止以上這些,非常多,關于這些參數含義這里就不去一一介紹
5. URL的含義
URL(統一資源定位符),就是我們常說的網址,直接來解析一個URL來說明他:http://198.2.17.25:8080/webapp/index.html
新聞熱點
疑難解答