http協議

1、上網流程
2、web服務器的工作原理
3、DNS工作原理
4、HTTP協議

1、上網流程
瀏覽器本身它是一個客戶端,當輸入URL地址的時候,瀏覽器首先會去請求DNS服務器,通過DNS查詢獲取相應的域名所對應的IP地址,然后通過這個映射的IP地址找到IP對應的服務器,并建立連接,等瀏覽器發送完HTTP Request(請求)包后,服務器接收到請求包之后才開始處理,返回HTTP Response(響應)包,客戶端瀏覽器收到來自服務器的響應后就開始渲染這個Response包里的主體(body)部分,等收到全部的內容后斷開與該服務器之間的連接。

上網流程

2、web服務器的工作原理
web服務器也叫做http服務器,通過http協議與客戶機進行通信。基本原理如下所示:
1客戶機通過TCP/IP協議建立到服務器的TCP連接
2客戶端向服務器發送HTTP協議請求包,請求服務器里的資源文檔
3服務器向客戶機發送HTTP協議應答包,如果請求的資源包含有動態語言的內容,那么服務器會調用動態語言的解釋引擎負責處理“動態內容”,并將處理得到的數據返回給客戶端
4客戶機與服務器斷開。由客戶端解釋HTML文檔,在客戶端屏幕上渲染圖形結果

需要注意的是客戶機與服務器之間的通信是非持久連接的,也就是當服務器發送了應答后就與客戶機斷開連接,等待下一次請求。

3、DNS工作原理
URL(Uniform Resource Locator)是“統一資源定位符”,格式如下:
scheme://host[:port#]/path/.../[?query-string][#anchor],其中:

scheme:指定低層使用的協議(例如:http, https, ftp)
host:HTTP服務器的IP地址或者域名
port:HTTP服務器的默認端口是80,這種情況下端口號可以省略。如果使用了別的端口,必須指明,例如 http://www.qixing318.com:80/
path:訪問資源的路徑
query-string:發送給http服務器的數據
anchor:錨
name=xx&sex=xx :內容實體

DNS(Domain Name System)是“域名系統”的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用于TCP/IP網絡,它從事將主機名或域名轉換為實際IP地址的工作。基本原理如下所示:

DNS工作原理

詳細的工作原理如下:
1 在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
2 如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
3 如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4 如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
5 如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至 “根DNS服務器”,“根DNS服務器”收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qixing318.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qixing318.com域服務器,重復上面的動作,進行查詢,直至找到www.qixing318.com主機。
6 如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

查詢過程

所謂遞歸查詢過程就是 “查詢的遞交者” 更替, 而 迭代查詢過程 則是 “查詢的遞交者”不變。

4、HTTP協議
HTTP是一種讓Web服務器與瀏覽器(客戶端)通過Internet發送與接收數據的協議,它建立在TCP協議之上,一般采用TCP的80端口。它是一個請求、響應協議--客戶端發出一個請求,服務器響應這個請求。
HTTP協議是無狀態的,同一個客戶端的這次請求和上次請求是沒有對應關系,對HTTP服務器來說,它并不知道這兩個請求是否來自同一個客戶端。為了解決這個問題, Web程序引入了Cookie機制來維護連接的可持續狀態。

HTTP協議是無狀態的和Connection: keep-alive的區別:
無狀態是指協議對于事務處理沒有記憶能力,服務器不知道客戶端是什么狀態。從另一方面講,打開一個服務器上的網頁和你之前打開這個服務器上的網頁之間沒有任何聯系。
HTTP是一個無狀態的面向連接的協議,無狀態不代表HTTP不能保持TCP連接,更不能代表HTTP使用的是UDP協議(面對無連接)。
從HTTP/1.1起,默認都開啟了Keep-Alive保持連接特性,簡單地說,當一個網頁打開完成后,客戶端和服務器之間用于傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的TCP連接。
Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同服務器軟件(如Apache)中設置這個時間。

HTTP請求包
我們先來看看Request包的結構, Request包分為3部分,第一部分叫Request line(請求行), 第二部分叫Request header(請求頭),第三部分是body(主體)。

GET /domains/example/ HTTP/1.1 #請求行: 請求方法 請求URI HTTP協議/協議版本

GET和POST的區別
1我們可以看到GET請求消息體為空,POST請求帶有消息體。
2GET提交的數據會放在URL之后,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456。POST方法是把提交的數據放在HTTP包的body中。
3GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制。
4GET方式提交數據,會帶來安全問題,比如一個登錄頁面,通過GET方式提交數據時,用戶名和密碼將出現在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼。
HTTP響應包(服務器信息)

HTTP/1.1 200 OK #狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分

1XX #提示信息 - 表示請求已被成功接收,繼續處理
2XX #成功 - 表示請求已被成功接收,理解,接受
  200 #ok
  204 #no content
  206 #partial content
3XX #重定向 - 要完成請求必須進行更進一步的處理
4XX #客戶端錯誤 - 請求有語法錯誤或請求無法實現
  400 #bad request
  401 #unauthorized 沒有得到授權
  403 #forbidden 不允許訪問那個資源
  404 #not found 服務器上沒有請求的資源
5XX #服務器端錯誤 - 服務器未能實現合法的請求
  500 # internal server error
  503 # service unavailable 

chrome檢測
在chrome的開發者模式下面,可以看到發送包和接受包的各種信息,除了html,還有css,js,圖片的專門鏈接內容。
,第一次請求url,服務器端返回的是html頁面,然后瀏覽器開始渲染HTML:當解析到HTML DOM里面的圖片連接,css腳本和js腳本的鏈接,瀏覽器就會自動發起一個請求靜態資源的HTTP請求,獲取相對應的靜態資源,然后瀏覽器就會渲染出來,最終將所有資源整合、渲染,完整展現在我們面前的屏幕上。
網頁優化方面有一項措施是減少HTTP請求次數,就是把盡量多的css和js資源合并在一起,目的是盡量減少網頁請求靜態資源的次數,提高網頁加載速度,同時減緩服務器的壓力。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容

  • Http協議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創,內容來源于博客園作者MIN飛翔的HTTP協...
    Sivin閱讀 5,246評論 3 82
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,409評論 6 152
  • 前言:最近發現自己在網絡相關這一塊基礎很是欠缺,所以準備花時間了解一下,本文主要是講http協議的一些基礎,和一些...
    justCode_閱讀 2,108評論 0 23
  • HTTP概述 超文本傳輸協議(HTTP,HyperText Transfer Protocol) 是互聯網上應用最...
    曹淵說創業閱讀 3,859評論 2 61
  • 摘要 本文轉自《go web編程》一書,覺得說的比較好,特轉過來收藏。 原文地址:web的工作方式,http協議簡...
    yorickshan閱讀 549評論 0 0