天天看點

01.Nginx基礎Http原理

1.Http協定概述

HTTP

全稱

HyperText Transfer Protocol

中文名為超文本傳輸協定

1.什麼是超文本?

包含有超連結(Link)和各種多媒體元素标記的文本。這些超文本檔案彼此連結,形成網狀(Web),是以又被稱為網頁(Web Page)。這些連結使用

URL

表示。最常見的超文本格式是超文本标記語言HTML。

html檔案->包含各種各樣的元素(URL連結)->形成web page簡稱web頁面。

2.那什麼是

URL

,URL簡稱統一資源定位符。那URL的組成部分是由協定, 域名:端口, 路徑和檔案名

01.Nginx基礎Http原理

3.那超文本傳輸

http

協定是什麼?

是一種按照

URL

訓示,将超文本文檔從一台主機(Web伺服器)傳輸到另一台主機(浏覽器)的應用層協定,以實作超連結的功能。

2.Http工作原理

01.Nginx基礎Http原理

3.Http協定版本

http1.0協定使用的是短連接配接:建立一次tcp的連接配接,發起一次http的請求,結束,tcp斷開。

http1.1協定使用的是長連接配接:建立一次tcp的連接配接,發起多次http的請求,結束,tcp端口。

3.Http請求響應

1.

http

請求封包的方法

get     # 獲得請求檔案資訊的資料内容(下載下傳)

post    # 使用者送出資料至伺服器端存儲(上傳)

Request URL:http://10.0.0.7/index.html # 請求的URL

Request Method:GET                     # 請求的方法

Status Code:200 OK                     # 目前的狀态

Remote Address:10.0.0.7:80             # 遠端的主機

2.

http

傳回狀态碼(Status-Code), 以3位數字組成

200     # 成功請求

301     # 永久重定向(redirect) 

302     # 臨時重定向(redirect) 

304     # 浏覽器緩存

403     # 請求不到首頁或權限被拒絕

404     # 請求的資源不存在

500     # 伺服器内部錯誤,程式代碼錯誤

502     # 找不到後端的資源

504     # 請求逾時

3.使用者通路網站攜帶的參數,以及服務端傳回的參數

#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.baidu.com                         # 請求的域名

If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT# 修改的時間

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                  # 長連接配接的逾時時間

"=== 傳回一個空行 ==="

"=== 傳回内容主體 ==="

4.Http相關術語

pv、ip、uv

假設公司有一座大廈,大廈有100人,每個人有一台電腦和一部手機,上網都是通過nat轉換出口,每個人點選網站2次, 請問對應的

pv,uv,ip

分别是多少

PV:頁面浏覽量, 400

uv:獨立的客戶, 200

ip:獨立IP, 1個

6.Http通路流程

1.http協定原理總結

1.使用者輸入域名->浏覽器跳轉->浏覽器緩存->Hosts檔案->DNS解析( 遞歸查詢 | 疊代查詢 )

    用戶端向服務端發起查詢->遞歸查詢

    服務端向服務端發起查詢->疊代查詢

2.由浏覽器向服務端發起TCP連接配接(三次握手)

    用戶端  -->請求包連接配接-syn=1 seq=x           服務端

    服務端  -->向應用戶端syn=1 ack=x+1 seq=y    用戶端

    用戶端  -->建立連接配接  ack=y+1 seq=x+1        服務端

3.用戶端發起http請求:

    1.請求的方法是什麼: Get 擷取

    2.請求的Host主機是: www.baidu.com

    3.請求的資源是什麼: /index.html

    4.請求的端口是什麼: 預設http是80  https 443

    5.請求攜帶的參數是: 屬性(請求的類型、壓縮、認證、浏覽器資訊、等等)

    6.請求最後的空行

4.服務端響應的内容是

    1.服務端響應使用的WEB服務軟體

    2.服務端響應請求檔案的類型

    3.服務端響應請求的檔案是否進行壓縮

    4.服務端響應請求的主機是否進行長連接配接

5.用戶端向服務端發起TCP斷開(四次揮手)

    用戶端  --> 斷開請求 fin=1 seq=x           -->      服務端

    服務端  --> 響應斷開 fin=1 ack=x+1 seq=y   -->      用戶端

    服務端  --> 斷開連接配接 fin=1 ack=x+1 seq=z   -->      用戶端

    用戶端  --> 确認斷開 fin=1 ack=z+1 seq=sj  -->      服務端

2.使用者通路網站叢集架構流程

1.用戶端發起http請求,請求會先抵達前端的防火牆

2.防火牆識别使用者身份,正常的請求通過内部交換機通過tcp連接配接後端的負載均衡,傳遞使用者的http請求

3.負載接收到請求,會根據請求的内容進行下發任務,通過tcp連接配接後端的web,轉發發使用者的http請求

4.web接收到使用者的http請求後,會根據使用者請求的内容進行解析,解析分為如下:

    靜态請求:web直接傳回給負載均衡->防火牆->使用者

    動态請求:web向後端的動态程式建立TCP連接配接,将使用者的動态http請求傳遞至動态程式->由動态程式進行解析

5.動态程式在解析的過程中,如果碰到查詢資料庫請求,則優先與緩存建立tcp連接配接,并發起資料查詢操作。

6.如果緩存沒有對應的資料,動态程式再次向資料庫建立tcp連接配接,并發起查詢操作。

7.最後資料由, 資料庫->動态程式->緩存->web服務->負載均衡->防火牆->使用者。

若有收獲,就點個贊吧