Web基礎之http協議

Web基礎之http協議

http協議概述

HTTP全稱:Hyper Text Transfer Protocol 中文名:超文本傳輸協議html

什麼是超文本:前端

包含有超連接(Link)和各類多媒體元素標記(Markup)的文本。這些超文本文件彼此連接,造成網(Web),所以又被稱爲網頁(Web Page)。這些連接使用URL表示最多見的超文本格式是超文本標記語言HTML。web

html文件->包含各類各樣的元素(URL連接)->造成WebPage簡稱web頁面sql

什麼是URL

URL即統一資源定位符(Uniform Resource Locator),用來惟一地標識萬維網中的某一個文檔。數據庫

URL由協議、主機和端口(默認爲80)以及文件名三部分構成編程

URI只有在URL中的文件部分被稱爲URI後端

http://   zuoye.driverzeng.com:8888   /pic/1_oldboy_lnmp.jpg 
http協議      主機               端口    文件(URI)

img

什麼是超文本傳輸協議

是一種按照URL指示,將超文本文檔從一臺主機(Web服務器)傳輸到另外一臺主機(瀏覽器)的應用層協議,以實現超連接的功能瀏覽器

將web01虛擬機上面的/var/www/html/下面的文本文件(代碼文件)傳輸到瀏覽器中,便可生成網頁緩存

http的工做原理

訪問:http://zuoye.driverzeng.com:8888/pic/1_oldboy_lnmp.jpgbash

1.瀏覽器去請求DNS服務器

1)請求local DNS(本地DNS),zuoye.driverzeng.com 綁定的IP 
2)請求223.5.5.5,13個根域  迭代查詢.com   .driverzeng.com    zuoye.driverzeng.com   192.168.3.250

2.瀏覽器與192.168.3.250服務器的8888端口創建TCP鏈接

3.三次握手

1)瀏覽器向192.168.3.250發送SYN 
2)192.168.3.250回覆ACK給瀏覽器,同時發送SYN給瀏覽器 
3)瀏覽器向服務器發送ACK確認創建鏈接

4.開始數據交流,瀏覽器使用 GET 方式請求 /pic/1_oldboy_lnmp.jpg

5.服務器在站點目錄下/pic目裏面找到 1_oldboy_lnmp.jpg 返回給瀏覽器

6.瀏覽器向服務器斷開鏈接(四次揮手)

1)瀏覽器向服務器發送fin 
2)服務器接收fin並返回ACK 
3)服務器向瀏覽器發送fin(肯定數據是否傳輸完成) 
4)瀏覽器向服務器發送ACK 
5)瀏覽器進入time_wait狀態

**7.瀏覽器顯示URL中的圖片 **

HTTP數據包分析

請求頭

包含的是發送的請求中的全部信息

1.GET /favicon.ico HTTP/1.1 
2.Host: www.qqyewu.com 
3.Connection: keep-alive 
4.User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/86.0.4240.198 Safari/537.36 
5.Accept-Encoding: gzip, deflate 
6.Accept-Language: zh-CN,zh;q=0.9

GET和HTTP之間有個空行:請求空行

響應信息

服務端給客戶端(瀏覽器)的全部響應信息

1.HTTP/1.1 200 OK 
2.Content-Type: text/html 
3.Content-Encoding: gzip 
4.Last-Modified: Fri, 15 Nov 2013 21:51:25 GMT 
5.Accept-Ranges: bytes 
6.ETag: "80ac72d44ce2ce1:0" 
7.Vary: Accept-Encoding 
8.Server: Microsoft-IIS/7.5 
9.X-Powered-By: ASP.NET 
10.Date: Tue, 13 Jul 2021 03:02:41 GMT 
11.Content-Length: 1838

響應信息下面的空行:響應空行

響應主體

打開網站的頁面主體(多是加密代碼信息)

開發者工具Network

使用方式:在瀏覽器中按f12便可打開

開發者工具中:

Elements是用於顯示網頁的內容信息

network中分別有:

基本信息

請求頭

響應頭

General:基本信息

# 請求的URL 
Request URL: http://zuoye.driverzeng.com:8888/ 
# 請求方法是 GET 
Request Method: GET 
# 狀態碼:200(正常響應)
Status Code: 200 OK 
# 服務器的遠端的地址
Remote Address: 192.168.3.250:8888 
# referer的策略 
Referrer Policy: strict-origin-when-cross-origin

PS:referer就是從哪一個頁面跳轉過來的

Response Headers:響應頭

# 響應的信息大小:單位字節 
Accept-Ranges: bytes 
# 長鏈接,只創建一次鏈接就能夠隨意跳轉(發送請求),再也不從新創建TCP鏈接
Connection: Keep-Alive 
# 響應的內容長度 
Content-Length: 2633 
# 響應內容的類型;字符集 
Content-Type: text/html; charset=UTF-8 
# 日期(格林威治時間)
Date: Tue, 13 Jul 2021 03:19:44 GMT 
# 長鏈接的超時時間,最大範圍 
Keep-Alive: timeout=5, max=100 
# 代碼返回:記錄上一次的修改時間 
Last-Modified: Fri, 04 May 2018 08:13:44 GMT 
# 該網頁部署在服務器的系統版本,以及服務版本 
Server: Apache/2.4.6 (CentOS) PHP/5.4.16

Request Headers:請求頭

# 容許服務端給瀏覽器傳遞哪些文本類型 
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 
# 語言 
Accept-Language: zh-CN,zh;q=0.9 
# 沒有設置緩存 
Cache-Control: no-cache 
# 客戶端長鏈接 
Connection: keep-alive 
# 請求的主機(域名) 
Host: zuoye.driverzeng.com:8888 
# 請求參數(沒有緩存) 
Pragma: no-cache 
# 谷歌瀏覽器自帶(不屬於請求內容)
Upgrade-Insecure-Requests: 1 
# 客戶端的信息(請求時,請求頭會帶着客戶端信息)
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

http的請求方法

方法(Method) 含義
GET 請求讀取一個Web頁面(傳遞參數,在瀏覽器裏能夠看見)
POST 請求讀取一個Web頁面(傳遞參數看不見)
DELETE 刪除
CONNECT 用於代理服務器
HEAD 請求讀取一個Web頁面的頭部(調取請求頭)
PUT 通常用於上傳
TRACE 用於測試,要求服務器送回收到的請求
OPTION 查詢特定選項

HTTP的響應方法

響應中的狀態碼

狀態碼 含義
200 成功
301 永久重定向(跳轉)
302 臨時重定向(跳轉)
304 本地緩存
307 內部重定向(跳轉)
400 客戶端錯誤
401 認證失敗
403 找不到主頁,權限不足
404 找不到頁面
500 內部錯誤
502 找不到後端主機
503 服務器過載
504 後端主機超時

HTTP協議原理總結

1.用輸入域名 - > 瀏覽器跳轉 - > 瀏覽器緩存 - > Hosts文件 - > DNS解析(遞歸查詢|迭代查詢)	
	客戶端向服務端發起查詢 - > 遞歸查詢	
	服務端向服務端發起查詢 - > 迭代查詢
PS:將域名解析爲ip是正向解析,將ip解析爲域名是反向解析
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.driverzeng.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=x+1 seq=sj --> 服務端

用戶訪問網站集羣架構流程

1.客戶端發起http請求,請求會先抵達前端的防火牆
2.防火牆識別用戶身份,正常的請求經過內部交換機經過tcp鏈接後端的負載均衡,傳遞用戶的http請求
3.負載接收到請求,會根據請求的內容進行下發任務,經過tcp鏈接後端的web,轉發發用戶的http請求
4.web接收到用戶的http請求後,會根據用戶請求的內容進行解析,解析分爲以下:    
	靜態請求:web直接返回給負載均衡->防火牆->用戶    
	動態請求:web向後端的動態程序創建TCP鏈接,將用戶的動態http請求傳遞至動態程序->由動態程序進行解析
5.動態程序在解析的過程當中,若是碰到查詢數據庫請求,則優先與緩存創建tcp鏈接,併發起數據查詢操做。
6.若是緩存沒有對應的數據,動態程序再次向數據庫創建tcp鏈接,併發起查詢操做。7.最後數據由, 數據庫->動態程序->緩存->web服務->負載均衡->防火牆->用戶。

img

http相關術語

LAMP:Linux Apache Mysql PHP 
LNMP:Linux Nginx  Mysql PHP 
LAMT:Linux Apache Mysql Tomcat 
LNMT:Linux Nginx  Mysql Tomcat

PV:頁面獨立的瀏覽量 
UV:獨立設備 
IP:獨立IP

SOA鬆耦合架構
指將不一樣的功能單元(服務)進行拆分爲多個模塊,並經過這些服務之間定義良好的接口和契約聯繫起來。接口採用中立的方式進行定義的,它應該獨立於實現服務的硬件平臺,操做系統和編程語言。這使得構建在各類各樣的系統中的服務能夠以一種統一和通用的方式進行交互。

img

#一個電商公司,他的網站頁面功能會有不少每一個功能模塊都是一個單獨的頁面,一個模塊出現故障能夠單獨對故障模塊進行處理    
註冊    
登陸    
首頁    
詳情頁    
購物車    
價格標籤    
留言    
客服    
支付中心
相關文章
相關標籤/搜索