1. 程式人生 > >Http工作原理

Http工作原理

inf may png 結束 === 傳遞 agent 方法 內部錯誤

目錄

  • Http工作原理
  • 1.http(超文本傳輸協議)
  • 2.URL結構
  • 3.http的工作原理
  • 4.http的請求方法
  • 5.http的響應狀態碼(以3位數字組成)
  • 6.用戶訪問網站攜帶的參數,以及服務端返回的參數
    • 1.概況
    • 2.客戶端請求的頭部信息
    • 3.服務端響應的頭部信息
  • 7.pv、ip、uv
  • 8.用戶訪問網站的流程

技術分享圖片

Http工作原理

1.http(超文本傳輸協議)

1.由html文件->包含各種各樣的元素(URL鏈接)->web頁面   

2.URL結構

技術分享圖片

3.http的工作原理

1.發起dns請求
2.獲取到域名對應的IP地址
3.瀏覽器發起tcp的連接
4.基於tcp的連接,傳輸http的請求(一次tcp的連接,可以建立多次的http請求)
5.瀏覽器請求/index.html
6.服務器響應/index.html至瀏覽器
7.瀏覽器翻譯index.html中的內容為人類可讀
8.斷開TCP的四次揮手

http的短連接:建立一次tcp的連接,發起一次http的請求,結束,tcp斷開。
http的長連接:建立一次tcp的連接,發起多次http的請求,結束,tcp端口。

4.http的請求方法

get     請求(獲取)一個網站的頁面
post    上傳什麽內容至服務器

5.http的響應狀態碼(以3位數字組成)

200     成功
301     永久重定向(redirect) 
302     臨時重定向(redirect) 
304     瀏覽器緩存
403     請求不到首頁,權限被拒絕
404     資源找不到
500     服務器內部錯誤,程序代碼錯誤
502     找不到後端的資源
504     請求超時

6.用戶訪問網站攜帶的參數,以及服務端返回的參數

1.概況

Request URL: http://10.0.0.7/index.html         # 請求的URL地址
Request Method: GET                             # 請求的方法(獲取)
Status Code: 304 Not Modified                   # 返回的狀態
Remote Address: 10.0.0.7:80                     # 請求的地址

2.客戶端請求的頭部信息

Accept: text/html,                                  # 請求的類型
Accept-Encoding: gzip, deflate                      # 是否進行壓縮
Accept-Language: zh-CN,zh;q=0.9                     # 請求的語言
Cache-Control: max-age=0                            # 緩存
Connection: keep-alive                              # TCP長連接
Host: www.oldboyedu.com                             # 請求的域名
If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT    # 修改的時間
If-None-Match: "a49-56b5ce607fe00"                  # 標記
Upgrade-Insecure-Requests:1                         # 在http和https之間起的一個過渡作用
User-Agent: Mozilla/5.0                             # 用戶的瀏覽器
===========請求一個空行=========================

3.服務端響應的頭部信息

HTTP/1.1 304 Not Modified                           # 返回服務器的http協議,狀態碼
Date: Fri, 14 Sep 2018 09:14:28 GMT                 # 返回服務器的時間
Server: Apache/2.4.6 (CentOS) PHP/5.4.16            # 返回服務器使用的軟件(Apache php)
Connection: Keep-Alive                              # TCP長連接
Keep-Alive: timeout=5, max=100                      # 長連接的超時時間
ETag: "a49-56b5ce607fe00"                           # 驗證客戶端標記
===========返回一個空行=========================
===========返回內容頁面=========================

7.pv、ip、uv

PV:頁面瀏覽量
uv:獨立的客戶
ip:獨立IP

我們公司有一座大廈,大廈有100人,每個人有一臺電腦一個手機,上網都是通過nat轉換出口,每個人點擊網站2次。
PV:400
UV:200
IP:1個

8.用戶訪問網站的流程

1.客戶端輸入域名以及請求的頁面
2.本地會進行一次redirect跳轉
3.解析域名對應的dns
4.最終客戶端瀏覽器獲取到dns的IP地址
5.客戶端會與服務端發起TCP的三次握手(長連接)
6.客戶端發起http請求,請求會先抵達前端的防火墻
7.防火墻識別用戶身份,正常的請求通過內部交換機通過tcp連接後端的負載均衡,然後傳遞用戶的http請求
8.負載接收到請求,會根據請求的內容進行下發任務,通過tcp連接後端的web,然後下發用戶的http請求
9.web接收到用戶的http請求後,會根據用戶請求的內容進行解析,解析分為如下兩步:
    靜態請求:由web服務器向nfs建立tcp連接,獲取對應的圖片,最後返回給負載均衡(負載均衡->防火墻->用戶)
    動態請求:有web向後端的動態程序建立TCP連接,將用戶的動態http請求傳遞給動態程序->由動態程序進行解析 
10.動態程序在解析的過程中,如果碰到查詢數據庫的請求,則優先和緩存建立tcp的連接,然後緩存服務發起http的查詢
11.如果緩存沒有對應的數據,動態程序再次向數據庫建立tcp的連接,然後發起查詢操作。
12.由數據庫返回->動態程序->緩存->web服務->負載均衡->防火墻->用戶。

Http工作原理