Http協議介紹
什么是HTTP協議
HTTP協議,全稱HyperText Transfer Protocol,中文名為超文本傳輸協議
是互聯網中最常用的一種網路協議,HTTP的重要應用之一是 WWW服務,
設計 HTTP協議最初的目的就是提供一種發布和接收HTML (一種頁面標記語言)頁面的方法,
HTTP協議是互聯網上常用的通信協議之一,它有很多的應用,但最流行的就是用于Web瀏覽器和Web服務器之間的通信,即WWW應用或稱Web應用,
www ,全稱World Wide Web ,常稱為Web ,中文譯為"萬維網
www是目前互聯網上最受用戶歡迎的資訊服務形式,HTTP協議的 WWW服務應用的默認埠為80,另外一個加密的WWW服務應用https的默認埠為443,主要用于網銀、支付等和錢相關的業務,當今,HTTP服務、WWW服務、Web服務三者的概念已經混淆了,都是指當下最常見的網站服務應用,
HTTP協議版本
HTTP/1.0 規定瀏覽器和服務器只保持短暫的連接(TCP短鏈接)
HTTP/1.1 支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和回應,減少了建立和關閉連接的消耗和時間延遲(TCP長連接)
什么是超文本
包含有超鏈接(Link)和各種多媒體元素標記的文本,這些超文本檔案彼此鏈接,形成網狀(Web),因此又被稱為網頁(Web Page),這些鏈接使用URL表示,
最常見的超文本格式是超文本標記語言HTML,
什么是URL

超文本傳輸協議HTTP
什么是超文本傳輸協議HTTP
超文本傳輸協議HTTP是一種按照URL指示,將超文本檔案從一臺主機(Web服務器)傳輸到另一臺主機(瀏覽器)的應用層協議,以實作超鏈接的功能,
HTTP協議總結
http是一個超文本傳輸協議
http建立在應用層協議基礎之上
http默認埠80, https默認埠443
一次tcp的鏈接,可以包含多次http的請求
Http作業原理

網站訪問流程
1.本地redirect跳轉
2.檢查本地瀏覽器快取
3.DNS流程
遞回 客戶端向服務端發起DNS查詢
迭代 服務端與服務端發起DNS查詢
1.查詢本地Hosts
2.請求本地localDNS
3.回傳對應的IP
4.HTTP連接
1.建立TCP三次握手,發送請求內容, 請求頭、請求的行、請求的主體
2.將請求傳遞給負載均衡, 負載均衡做對應的調度
3.如果請求的是靜態頁面, 那么調度至對應的靜態集群組即可
4.如果請求的是動態頁面, 將請求調度至動態集群組
1.如果僅僅是請求頁面, 可能會經過Opcache快取回傳
2.如果請求頁面需要查詢資料庫, 或者是往資料庫插入內容
3.檢查對應的操作是查詢還是寫入, 如果是查詢資料庫
4.檢查查詢的內容是否有被快取, 如有快取則回傳
5.檢查查詢陳述句, 將查詢結果回傳
6.記憶體快取Redis快取對應的查詢結果
7.回傳對應客戶端請求的內容至于WEB節點
8.WEB節點收到請求后回傳內容至負載均衡
9.負載均衡回傳客戶端內容, TCP四次斷開
5.HTTP斷開連接
http的作業原理
1.發起dns請求
2.獲取到域名對應的IP地址
3.瀏覽器發起tcp的連接
4.基于tcp的連接,傳輸http的請求(一次tcp的連接,可以建立多次的http請求)
5.瀏覽器請求/index.html
6.服務器回應/index.html至瀏覽器
7.瀏覽器翻譯index.html中的內容為人類可讀
8.斷開TCP的四次揮手
DNS決議原理
1. 查看本地主機快取和hosts檔案有沒有域名與IP對應記錄
2. 本地主機向local DNS服務器(網卡上指定配置的DNS服務器)發出請求(遞回查詢)
3. LOCAL DNS服務器接收到客戶端主機請求,查詢本地快取資訊
4. LOCAL DNS服務向根域名服務器請求,向頂級域名服務器請求,向二級域名服務器請求(迭代查詢)
5. 獲取到域名與IP地址的對應關系,是通過授權DNS服務中獲取得到(得到的資訊稱為A記錄)
LOCAL DNS服務進行快取A記錄資訊,將A記錄資訊發送給客戶端主機
6. 客戶端主機接收到A記錄資訊,進行本地快取,根據A記錄中記錄IP地址資訊,進行網路訪問
http請求報文
http請求報文的方法
| HTTP方法 | 作用描述 |
|---|---|
| GET | 客戶端請求指定資源信悤,服務器回傳指定資源 |
| HEAD | 只請求回應報文中的 HTTP首部 |
| POST | 將客戶端的資料提交到服務器,例:注冊表單 |
| PUT | 用從客戶端向服務器傳送的資料取代指定的檔案內容, |
| DELETE | 請求服務器洗掉 Request-URI所表示的資源, |
| MOVE | 請求服務器將指定的頁面移至另一個網路地址, |
get # 獲得請求檔案資訊的資料內容(獲取)
post # 用戶提交資料至服務器端存盤(提交)
Request URL:http://10.0.0.7/index.html # 請求的URL
Request Method:GET # 請求的方法
Status Code:200 OK # 當前的狀態
Remote Address:10.0.0.7:80 # 遠程的主機
HTTP請求報文格式
| 請求報文格式 | 報文資訊 | 說明 |
|---|---|---|
| 請求行 | GET / HTTP/1.1 | 請求的起始行(請求什么資訊;協議版本) |
| 請求頭 | User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Host: www.baidu.com Accept: / |
請求的頭部資訊(客戶端有關資訊說明) |
| 空行 | 空行資訊(隔離背景關系,說明請求結束) | |
| 請求報文主體 | 請求主體內容(只有POST 方法可以提交主體) |
請求頭資訊說明
| 請求頭內容 | 說明 |
|---|---|
| **Host ** | 接受請求的服務器地址,可以是IP:埠號,也可以是域名 |
| **User-Agent ** | 發送請求的應用程式名稱 |
| **Connection ** | 指定與連接相關的屬性,如Connection:Keep-Alive |
| **Accept-Charset ** | 通知服務端可以發送的編碼格式 |
| Accept-Encoding | 通知服務端可以發送的資料壓縮格式 |
短連接與長連接
http的短連接:建立一次tcp的連接,發起一次http的請求,結束,tcp斷開,
http的長連接:建立一次tcp的連接,發起多次http的請求,結束,tcp埠,
Http回應報文
http的回應狀態碼
(以3位數字組成)
200 成功
301 永久重定向(redirect)
302 臨時重定向(redirect)
304 瀏覽器快取
403 請求不到首頁,權限被拒絕
404 資源找不到
500 服務器內部錯誤,程式代碼錯誤
502 找不到后端的資源
504 請求超時
http回應示例
Accept-Ranges:bytes # 接受的位元組
Connection:keep-alive # 鏈接型別,keep_alive長鏈接
Content-Length:2633
Content-Type:text/html # 回傳的頁面型別
Date:Thu, 02 Aug 2018 02:58:53 GMT
ETag:"5aec1638-a49"
Last-Modified:Fri, 04 May 2018 08:13:44 GMT
Server:nginx/1.12.2 # 提供頁面回傳的應用服務
網站流量度量術語
獨立IP數度量值
獨立IP數是指不同IP地址的計算機訪問網站時被計算的總次數
在一個局域網內多個主機進行訪問相同的網站地址時,獨立IP數記為多少?
一般一天內(00:00-24:00)相同IP地址的客戶端訪問網站頁面只會被計一次
記錄獨立IP的時間可為一天或一個月,目前通用的標準為"一天",
頁面瀏覽次數PV
頁面瀏覽量或點擊量
獨立訪客數UV
根據http請求報文:瀏覽器版本,OS
根據http回應報文:cookie(id)
cookie(id) 將服務端的資訊保存到客戶端
session 將客戶端資訊保存到服務器
cookie和session區別
cookie介紹說明
cookie 存放在瀏覽器快取中---瀏覽器進行查看(谷歌)
【設定里面】---【顯示高級設定】---【隱私設定】---【內容設定】---【所有cookie和內容設定】
PS:cookie的格式資訊是由開發人員進行定義,所以不同的網站所生成的cookie資訊內容不太一致
cookie 資料存放在客戶的瀏覽器上
cookie 不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
cookie 不占用服務器端資源,提升了服務器性能
cookie 保存的資料不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie,
session介紹說明
session 存放在服務器的記憶體中
session 資料放在服務器上
session 從資料庫的安全應用方面會更安全些
session 會在一定時間內保存在服務器上,當訪問增多,會比較占用你服務器的性能
建議性說明:
將登陸資訊等重要資訊存放為SESSION
其他資訊如果需要保留,可以放在COOKIE中
Http相關術語題目
如果一棟大廈里所有作業人員通過1個IP公網介面上網, 總共100個設備, 當所有人同時請求一個網站, 并且重繪了5次, 那么請求pv、ip、uv分別是多少
pv:頁面瀏覽量 500
uv:唯一設備100
ip:唯一出口 1
并發
A種理解:網站服務器每秒能夠接收的最大用戶請求數,
B種理解:網站服務器每秒能夠回應的最大用戶請求數,
C種理解:網站服務器在單位時間內能夠處理的最大連接數,(推薦)
訪問網站引數說明
用戶訪問網站攜帶的引數,以及服務端回傳的引數
概況
Request URL: http://10.0.0.7/index.html # 請求的URL地址
Request Method: GET # 請求的方法(獲取)
Status Code: 304 Not Modified # 回傳的狀態
Remote Address: 10.0.0.7:80 # 請求的地址
客戶端請求的頭部資訊
Accept: text/html, # 請求的型別
Accept-Encoding: gzip, deflate # 是否進行壓縮
Accept-Language: zh-CN,zh;q=0.9 # 請求的語言
Cache-Control: max-age=0 # 快取
Connection: keep-alive # TCP長連接
Host: www.nfsnobody.com # 請求的域名
If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT # 修改的時間
If-None-Match: "a49-56b5ce607fe00" # 標記
Upgrade-Insecure-Requests:1 # 在http和https之間起的一個過渡作用
User-Agent: Mozilla/5.0 # 用戶的瀏覽器
===========請求一個空行=========================
服務端回應的頭部資訊
HTTP/1.1 304 Not Modified # 回傳服務器的http協議,狀態碼
Date: Fri, 14 Sep 2018 09:14:28 GMT # 回傳服務器的時間
Server: Apache/2.4.6 (CentOS) PHP/5.4.16 # 回傳服務器使用的軟體(Apache php)
Connection: Keep-Alive # TCP長連接
Keep-Alive: timeout=5, max=100 # 長連接的超時時間
ETag: "a49-56b5ce607fe00" # 驗證客戶端標記
===========回傳一個空行=========================
===========回傳內容頁面=========================
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/145669.html
標籤:Linux
下一篇:計劃任務cron
