HTTP全稱HyperText Transfer Protocol中文名爲超文本傳輸協議php
包含有超連接(Link)和各類多媒體元素標記的文本。這些超文本文件彼此連接,造成網狀(Web),所以又被稱爲網頁(Web Page)。這些連接使用URL表示。最多見的超文本格式是超文本標記語言HTML。
html文件->包含各類各樣的元素(URL連接)->造成web page簡稱web頁面。html
URL簡稱統一資源定位符,用來惟一標識萬維網中的某一個文檔。URL由協議、主機(域名)和端口(默認爲80)以及文件名及其路徑組成。
https://search.jd.com/Search?keyword=%E%A9Linux &enc=utf-8 &wq=5%AD%A9linu &pvid=0e5157a69 (&爲分隔符,表示參數)
前端
是一種按照URL指示,將超文本文檔從一臺主機(Web服務器)傳輸到另外一臺主機(瀏覽器)的應用層協議,以實現超連接的功能。(從web界面下載文件---即經過web界面將服務器的文件下載到本地)web
用戶經過Internet瀏覽點擊URL;www.baidu.com,瀏覽器分別執行以下動做:面試
1.瀏覽器分析超連接中的URL地址,獲取到域名 2.瀏覽器向NDS服務器請求解析www.baidu.com的IP地址 3.NDS將解析出的IP地址返回給瀏覽器 4.瀏覽器經過IP地址+端口號(80端口)與服務器創建TCP鏈接 TCP爲傳輸層協議---即端口 5.瀏覽器請求文檔:get /index.html 6.服務器響應,將文檔index.html發給瀏覽器 7.瀏覽器顯示index.html中的內容 8.最後釋放TCP鏈接
http1.0協議使用的是短鏈接:創建一次tcp的鏈接,發起一次http的請求,結束,tcp斷開。
http1.1協議使用的是長鏈接:創建一次tcp的鏈接,發起屢次http的請求,結束,tcp斷開。數據庫
get # 得到請求文件信息的數據內容(下載) post # 用戶提交數據至服務器端存儲(上傳)
200 # 成功請求 301 # 永久重定向(redirect) 302 # 臨時重定向(redirect) 304 # 瀏覽器緩存 403 # 請求不到首頁或權限被拒絕 404 # 請求的資源不存在 500 # 服務器內部錯誤,程序代碼錯誤 502 # 找不到後端的資源 504 # 請求超時
#1.概況 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 # 請求的主機地址和端口 Referrer Policy: no-referrer-when-downgrade ---從https協議降爲http協議時,不傳遞Referrer 報頭。可是反過來的話不受影響。一般也會看成瀏覽器的默認安全策略。 #2.客戶端請求的頭部信息 Accept: text/html, # 請求的類型(若是瀏覽器不知道請求的是什麼類型,默認如下載的方式) Accept-Encoding: gzip, deflate # 是否進行壓縮 Accept-Language: zh-CN,zh;q=0.9 # 請求的語言 Cache-Control: no-cache # 緩存 Connection: keep-alive # TCP長鏈接 Host: www.oldboyedu.com # 請求的域名 If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT# 修改的時間 User-Agent: Mozilla/5.0 # 請求瀏覽器的工具 "=== 請求一個空行 ===" "=== 請求內容主體 ===" #3.服務端響應的頭部信息 HTTP/1.1 304 Not Modified # 返回服務器的http協議,狀態碼 Date: Fri, 14 Sep 2018 09:14:28 GMT # 返回服務器的時間(GMT時間)+8小時=傳統時間 Server: Apache/2.4.6 (CentOS) PHP/5.4.16 # 返回服務器使用的軟件(Apache php) Connection: Keep-Alive # TCP長鏈接 Keep-Alive: timeout=5, max=100 # 長鏈接的超時時間 "=== 返回一個空行 ===" "=== 返回內容主體 ==="
假設公司有一座大廈,大廈有100人,每一個人有一臺電腦和一部手機,上網都是經過nat轉換出口,每一個人點擊網站2次, 請問對應的pv,uv,ip分別是多少
PV:頁面瀏覽量, 400
uv:獨立的客戶, 200
ip:獨立IP, 1個後端
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.oldboyedu.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=z+1 seq=sj --> 服務端
1.客戶端發起http請求,請求會先抵達前端的防火牆 2.防火牆識別用戶身份,正常的請求經過內部交換機經過tcp鏈接後端的負載均衡,傳遞用戶的http請求 3.負載接收到請求,會根據請求的內容進行下發任務,經過tcp鏈接後端的web,轉發發用戶的http請求 4.web接收到用戶的http請求後,會根據用戶請求的內容進行解析,解析分爲以下: 靜態請求:web直接返回給負載均衡->防火牆->用戶 動態請求:web向後端的動態程序創建TCP鏈接,將用戶的動態http請求傳遞至動態程序->由動態程序進行解析 5.動態程序在解析的過程當中,若是碰到查詢數據庫請求,則優先與緩存創建tcp鏈接,併發起數據查詢操做。 6.若是緩存沒有對應的數據,動態程序再次向數據庫創建tcp鏈接,併發起查詢操做。 7.最後數據由, 數據庫->動態程序->緩存->web服務->負載均衡->防火牆->用戶。
1xx(臨時響應) 表示臨時響應並須要請求者繼續執行操做的狀態代碼。 代碼 說明 http狀態碼 100 (繼續) 請求者應當繼續提出請求。 服務器返回此代碼表示已收到請求的第一部分,正在等待其他部分。 http狀態碼 101 (切換協議) 請求者已要求服務器切換協議,服務器已確認並準備切換。 2xx (成功) 表示成功處理了請求的狀態代碼。 代碼 說明 http狀態碼 200 (成功) 服務器已成功處理了請求。 一般,這表示服務器提供了請求的網頁。 http狀態碼 201 (已建立) 請求成功而且服務器建立了新的資源。 http狀態碼 202 (已接受) 服務器已接受請求,但還沒有處理。 http狀態碼 203 (非受權信息) 服務器已成功處理了請求,但返回的信息可能來自另外一來源。 http狀態碼 204 (無內容) 服務器成功處理了請求,但沒有返回任何內容。 http狀態碼 205 (重置內容) 服務器成功處理了請求,但沒有返回任何內容。 http狀態碼 206 (部份內容) 服務器成功處理了部分 GET 請求。 3xx (重定向) 表示要完成請求,須要進一步操做。 一般,這些狀態代碼用來重定向。 代碼 說明 http狀態碼 300 (多種選擇) 針對請求,服務器可執行多種操做。 服務器可根據請求者 (user agent) 選擇一項操做,或提供操做列表供請求者選擇。 http狀態碼 301 (永久跳轉) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。 http狀態碼 302 (臨時跳轉) 服務器目前從不一樣位置的網頁響應請求,但請求者應繼續使用原有位置來進行之後的請求。 http狀態碼 303 (查看其餘位置) 請求者應當對不一樣的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。 http狀態碼 304 (未修改) 自從上次請求後,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。 http狀態碼 305 (使用代理) 請求者只能使用代理訪問請求的網頁。 若是服務器返回此響應,還表示請求者應使用代理。 http狀態碼 307 (內部跳轉) 服務器目前從不一樣位置的網頁響應請求,但請求者應繼續使用原有位置來進行之後的請求。 4xx(請求錯誤) 這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。 代碼 說明 http狀態碼 400 (錯誤請求) 服務器不理解請求的語法。 http狀態碼 401 (未受權) 請求要求身份驗證。 對於須要登陸的網頁,服務器可能返回此響應。 http狀態碼 403 (禁止)服務端返回不了首頁給客戶端。 http狀態碼 404 (未找到) 服務器找不到請求的網頁。 http狀態碼 405 (方法禁用) 禁用請求中指定的方法。 http狀態碼 406 (不接受) 沒法使用請求的內容特性響應請求的網頁。 http狀態碼 407 (須要代理受權) 此狀態代碼與 401(未受權)相似,但指定請求者應當受權使用代理。 http狀態碼 408 (請求超時) 服務器等候請求時發生超時。 http狀態碼 409 (衝突) 服務器在完成請求時發生衝突。 服務器必須在響應中包含有關衝突的信息。 http狀態碼 410 (已刪除) 若是請求的資源已永久刪除,服務器就會返回此響應。 http狀態碼 411 (須要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。 http狀態碼 412 (未知足前提條件) 服務器未知足請求者在請求中設置的其中一個前提條件。 http狀態碼 413 (請求實體過大) 服務器沒法處理請求,由於請求實體過大,超出服務器的處理能力。 http狀態碼 414 (請求的 URI 過長) 請求的 URI(一般爲網址)過長,服務器沒法處理。 http狀態碼 415 (不支持的媒體類型) 請求的格式不受請求頁面的支持。 http狀態碼 416 (請求範圍不符合要求) 若是頁面沒法提供請求的範圍,則服務器會返回此狀態代碼。 http狀態碼 417 (未知足指望值) 服務器未知足」指望」請求標頭字段的要求。 5xx(服務器錯誤) 這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤多是服務器自己的錯誤,而不是請求出錯。 代碼 說明 http狀態碼 500 (服務器內部錯誤) 服務器遇到錯誤,沒法完成請求。 http狀態碼 501 (還沒有實施) 服務器不具有完成請求的功能。 例如,服務器沒法識別請求方法時可能會返回此代碼。 http狀態碼 502 (錯誤網關) 服務器做爲網關或代理,從上游服務器收到無效響應。 http狀態碼 503 (服務不可用) 服務器目前沒法使用(因爲超載或停機維護)。 一般,這只是暫時狀態。 http狀態碼 504 (網關超時) 服務器做爲網關或代理,可是沒有及時從上游服務器收到請求。 http狀態碼 505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。