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協議   主機              端口    文件

image

HTTP的工做原理

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

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

img

相關文章
相關標籤/搜索