1.Http協定概述
HTTP
全稱
HyperText Transfer Protocol
中文名為超文本傳輸協定
1.什麼是超文本?
包含有超連結(Link)和各種多媒體元素标記的文本。這些超文本檔案彼此連結,形成網狀(Web),是以又被稱為網頁(Web Page)。這些連結使用
URL
表示。最常見的超文本格式是超文本标記語言HTML。
html檔案->包含各種各樣的元素(URL連結)->形成web page簡稱web頁面。
2.那什麼是
URL
,URL簡稱統一資源定位符。那URL的組成部分是由協定, 域名:端口, 路徑和檔案名

3.那超文本傳輸
http
協定是什麼?
是一種按照
URL
訓示,将超文本文檔從一台主機(Web伺服器)傳輸到另一台主機(浏覽器)的應用層協定,以實作超連結的功能。
2.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服務->負載均衡->防火牆->使用者。
若有收獲,就點個贊吧