主頁 > 作業系統 > http

http

2020-10-01 16:09:53 作業系統

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

上一篇:linux 常用Mysql腳本命令

下一篇:計劃任務cron

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more