Web基礎 HTTP協議
阿新 • • 發佈:2021-08-08
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鬆耦合架構