1. 程式人生 > 其它 >Web基礎 HTTP協議

Web基礎 HTTP協議

Web基礎 HTTP協議

HTTP協議介紹

HTTP 全稱: Hyper Text Transfer Protocol 中文名:超文字傳輸協議
包含有超連結(Link)和各種多媒體元素標記(Markup)的文字。這些超文字檔案彼此連結,形成網狀(Web),因此又被
稱為網頁(Web Page)。這些連結使用URL表示。最常見的超文字格式是超文字標記語言HTML。
html檔案->包含各種各樣的元素(URL連結)->形成WebPage簡稱web頁面

什麼是URL

URL 即統一資源定位符(Uniform Resource Locator),用來唯一地標識全球資訊網中的某一個文件。
URL 由協議、主機和埠(預設為80)以及檔名三部分構成
URI 在 URL 中的檔案部分,被稱為 URI

http:// zuoye.driverzeng.com:8888 /pic/1_oldboy_lnmp.jpg
#http協議   主機              埠    檔案

HTTP的工作原理

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

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資料包分析

請求頭

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

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

響應資訊

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

響應資訊下面的空行:響應空行

響應主體

 頁面內容

開發者工具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

## Response Headers:響應頭
# 響應大小
Accept-Ranges: bytes
# 長連線
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 刪除Web頁面
CONNECT 用於代理伺服器
HEAD 請求讀取一個Web頁面的頭部
PUT 請求儲存一個Web頁面
TRACE 用於測試,要求伺服器送回收到的請求
OPTION 查詢特定選項

HTTP的響應方法

HTTP的響應方法

狀態碼 含義
200 成功
301 永久重定向(跳轉)
302 臨時重定向(跳轉)
304 本地快取
307 內部重定向(跳轉)
400 客戶端錯誤
401 認證失敗
403 找不到主頁,許可權不足
404 找不到頁面
500 內部錯誤
502 找不到後端主機
503 伺服器過載
504 後端主機超時
server {
listen 80;
root /var/www/html;
server_name localhost;
location / {
autoindex on;
}
location /aaaa {
aasdasda;
}
}

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.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 --> 服務端

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鬆耦合架構