1. 程式人生 > 其它 >web基礎入門-HTTP協議

web基礎入門-HTTP協議

web基礎入門-http協議

目錄

1.HTTP協議

超文字傳輸協議
	超文字:
		包含有超連結和各種多媒體元素標記的文字。這些超文字彼此連結,形成網狀,因此被稱為網頁。這些連結使用URL表示。最常見的超文字格式是超文字標記語言HTML

2.URL

	URL是統一資源佔位符,它的組成由協議、主機(域名):埠、檔名組成
	#  http:// class.driverzeng.com:80 /15648000575258.html
	#  協議      主機(域名):埠         站點目錄下的檔名(這也被稱為URI)

3.HTTP及架構請求訪問的流程

# 使用者在瀏覽器輸入一個網址後
1.瀏覽器想本地DNS(local DNS)發起域名解析請求,如果本地DNS(/etc/hosts)檔案中不存在
2.瀏覽器向DNS根域伺服器傳送請求,解析域名
3.DNS進行遞迴查詢和迭代查詢:
	遞迴查詢:客戶端向服務端發起查詢
	迭代查詢:服務端向服務端發起查詢
將查詢到的A記錄下的IP返回給瀏覽器
4.瀏覽器和該IP所在的伺服器的埠建立TCP/IP連線
	防火牆的規則不允許你的IP地址訪問該伺服器的埠,則會拒絕連線,報錯返回給使用者
	防火牆的規則允許你的IP地址訪問該伺服器的埠,則建立TCP/IP連線(三次握手)
				     syn(建立連線訊號)
		客戶端------------------------------------>服務端
		         syn+ack(返回收到建立連線的請求)
		客戶端<-----------------------------------服務端
			 ack(返回我知道你收到建立連線的請求了)
		客戶端----------------------------------->服務端
5.向服務端的web服務發起http請求(負載均衡)
	請求頭部資訊
		1.請求的方式
		2.請求的HOST主機
		3.請求的資源
		4.請求的埠
		5.請求攜帶的引數
		6.請求最後的空行
6.將請求根據排程演算法下發給後端的web伺服器
7.讀取web伺服器上開啟web服務的配置檔案,找到站點目錄
8.找到站點目錄下的對應的程式碼檔案
	根據使用者傳送不同的請求返回不同的結果
		靜態請求:Web伺服器將靜態請求下發到共享儲存伺服器上,找到對應的靜態資源返回給使用者
		動態請求:
			1.將請求傳送給後端程式碼,處理
			2.先找資料庫的快取(Redis,memcache)
			3.如果快取中有相對應的資料,則返回給使用者
			4.如果快取中沒有資料,則找後端資料庫
			5.從資料庫中取出資料後,先存入快取一份,在返回結果給使用者
9.返回對應的狀態碼和響應頭部資訊給瀏覽器
10斷開連線(四次揮手)
11.瀏覽器展示網站頁面

4.分析瀏覽器中請求響應資訊

##  General
# 請求的URL
Request URL: https://www.baidu.com/
# 請求的方式
Request Method: GET
# 狀態碼
Status Code: 200 OK
# 遠端地址
Remote Address: 36.152.44.96:443
# referrer規則(從哪裡跳轉到該網站)
Referrer Policy: unsafe-url
## 響應頭部資訊
# 響應資訊的單位
Accept-Ranges:bytes
# 連線的方式(長連結)
Connection: keep-alive
# 響應主體的長度
Content-Length:2633
# 響應主體的型別
Content-Type: text/html;charset=utf-8
# 日期
Date: Sat, 28 May 2022 07:57:49 GMT
# 標籤
Expires: Sat, 28 May 2022 07:57:48 GMT
# 上一次修改時間
Last-Modified: Fri, 04 May 2018 08:13:44 GMT
# 服務端資訊
Server: nginx
## 請求頭部資訊
# 允許請求的主體型別
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
# 壓縮
Accept-Encoding: gzip, deflate, br
# 允許的語言
Accept-Language: zh,zh-CN;q=0.9
# 快取
Cache-Control: no-cache
# 連線方式
Connection: keep-alive
# 快取
Pragma: no-cache
# 瀏覽器向服務端傳送的成功訊號
Upgrade-Insecure-Requests: 1
# 客戶端資訊
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36

5.HTTP請求方法

GET:讀取一個頁面
POST:明文提交資料,讀取頁面
DELETE:呼叫後端介面刪除功能的頁面
PUT:呼叫後端介面儲存,上傳功能頁面

CONNECT:代理伺服器
HEAD:讀取web頁面的頭部資訊
TRACE:測試伺服器請求
OPTION:查詢特定選項

6.HTTP狀態碼

200:頁面訪問成功

301:永久重定向(跳轉)
302:臨時重定向
304:瀏覽器快取
307:內部重定向

400:客戶端錯誤(bad request)
401:認證失敗
403:許可權不足
404:找不到頁面

500:伺服器內部錯誤(程式碼問題,伺服器的問題)
502:後端服務報錯(哪臺伺服器的日誌上出現502,就要檢查該伺服器後端的服務)
503:伺服器訪問頻率過快,伺服器過載
504:後端服務超時

7.簡單理解CDN

	CDN:分散式靜態快取伺服器,就是將靜態資源放入該伺服器中,當用戶請求為靜態請求時,不用去後端伺服器,提升了網站訪問速度,也減少後端伺服器的壓力

8.HTTP相關術語

PV:獨立頁面瀏覽量(一個日誌,一個請求)
UV:獨立裝置
IP:獨立的IP地址
	計算方式(設PV為1的情況下) 例:
		假設公司有一座大廈,大廈有100人,每個人有一臺電腦和一部手機,上網都是通過nat轉換出口,每個人點選網站2次, 請 問對應的pv,uv,ip分別是多少?
	
	PV:100 * 2 * 2
	UV:100 * 2
	IP:1