這個是什麼呢?這個就是http協議客戶端和伺服器互動的整個過程。要知道建立http連線可不是僅僅是http工作。
是滴,它是在tcp/ip的基礎上進行工作滴。但是還有乙個更基礎的,那就是dns,你要想跟伺服器溝通,當然要先找到它了。所以別小看這個http互動,其實做了很多事情呢!
dns協議
這個協議對於學過計算機網路的大家來說簡直可以像知道1+1=2一樣熟悉透了。簡單介紹一下吧。
dns採用c/s模型。執行在udp之上,使用53埠。
網際網路採用層次樹狀結構命名空間。任何乙個連線在網際網路上的主機或路由器,都有唯一乙個的層次結構名字,即網域名稱。
www.myblog.com 從左到右依次為:**網域名稱,二級網域名稱,頂級網域名稱。
有上面圖可知,網際網路的網域名稱系統被設計成乙個聯機分布式的資料庫系統,並採用c/s模型。ip位址解析有執行在網域名稱伺服器上的程式完成的,乙個伺服器所負責管轄的範圍為」區「,乙個區的所有結點必須是能夠連通的,每個區有設定相應的許可權網域名稱伺服器,儲存該區中的所有主機的網域名稱到ip位址的對映。分布式的dns系統,主要有四種型別的網域名稱伺服器:
根網域名稱伺服器:只要無法解析的,首先求助於根網域名稱伺服器。網際網路上有13個根網域名稱伺服器。用來管轄頂級域。
頂級網域名稱伺服器:負責管理該頂級網域名稱伺服器註冊的所有二級網域名稱。
授權網域名稱伺服器:每乙個主機都需要在授權網域名稱伺服器處登記。in fact,許多網域名稱伺服器都充當本地網域名稱伺服器和授權網域名稱伺服器。授權網域名稱伺服器總能將其管轄的主機名轉化為ip位址。
本地網域名稱伺服器:當乙個主機發出dns請求時,這個查詢請求報文就會發給本地網域名稱伺服器。其實本地網域名稱伺服器就是我們在電腦上配置的dns網域名稱伺服器的位址。
使用者在使用網路服務時喜歡在瀏覽器的位址列中輸入使用主機名和網域名稱組成的名稱,如www.myblog.com,因為這樣的名稱更容易被使用者記住。但是,計算機在網路上是使用ip位址來通訊的。為了能夠實現網路計算機之間通訊,dns伺服器所提供的服務就是將使用者所使用的計算機或服務名稱對映為ip位址。
網域名稱解析過程
這個標記的過程很詳細了,我簡短總結一下:
1)我們在瀏覽器輸入**後,首先瀏覽器會在自己快取中查詢,如果找到返回,否則2)
2)系統dns查詢,如果找到返回,否則3)
3)去hosts中查詢,如果找到返回,否則4)
4)本地伺服器查詢,如果找到返回,否則5)
5)本地伺服器像根網域名稱伺服器發出請求
6)根網域名稱返回解析的結果
7)本地伺服器去頂級網域名稱伺服器查詢
8)頂級網域名稱伺服器返回解析結果
9)本地伺服器去許可權網域名稱伺服器查詢
10)得到目標伺服器的解析位址
注意圖跟我說的步驟不太一樣,我增加了前三個步驟。
tcp/ip
好了,現在我們已經找到伺服器了,然後就是要跟它建立連線。也就是我們常用的tcp/ip協議,據我所知,有好多大厚本書專門講解這個協議,因為做的最多的是移動端開發,所以只了解表層,我們熟悉的三次握手。而http就是在三次握手完成後復用這個鏈結進行通訊的。
位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)
sequence number(順序號碼) acknowledge number(確認號碼)
第一次握手:client傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,service由syn=1知道,client要求建立聯機;
第二次握手:service收到請求後要確認聯機資訊,向client傳送ack number=(client的seq+1),syn=1,ack=1,隨機產生seq=7654321的包
第三次握手:client收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,client會再傳送ack number=(主機b的seq+1),ack=1,service收到後確認seq值與ack=1則連線建立成功。
完成三次握手,client與service開始傳送資料。
熟悉網路程式設計的同學,應該都用過socket,就是這個原理。
http協議
我們再回過頭看看這個過程,現在我們已經跟伺服器建立了連線。
1)傳送http請求報文:get
2)得到伺服器返回結果傳送給瀏覽器
3)如果傳送檔案有等這些資源檔案,客戶端再次傳送這些請求
4)伺服器返回資源結果
5)互動結束,tcp釋放連線
6)瀏覽器渲染,呈現給使用者
這裡只是僅僅說了http整個工作流程,還涉及超多知識,http1.1的發展和改進,https在http基礎之上的加密保護,等等很多東西。大家一起學習進步呀!
HTTP協議?HTTP協議中POST GET H
head to inde x.html not supported.invalid method in request head htp 1.1 apache 1.3.12 server at www.fudan.edu.cn port 80 關於實體頭部的內容還可以有 last modified ...
HTTP協議 初識HTTP
一 web網路基礎 客戶端 伺服器 首先作為傳送端的客戶端在應用層 http協議 發出乙個想看某個web頁面的http 請求。http報文傳送到傳輸層 tcp協議 為了傳輸方便,傳輸層把接收到的資料進行分割,並在各個報文上打上標記序號及埠號後 到網路層。網路層 ip協議 增加作為通訊目的位址的mac...
TCP UDP 協議 HTTP協議
http 是用於www瀏覽的乙個協議。tcp 是機器之間建立連線用的到的乙個協議。http是超文字傳輸協議,是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議。在internet上的web伺服器上存放的都是超文字資訊,客戶機需要通過http協議傳輸所要訪問的超文字資訊。http包含命令和傳輸...