問答
1.OSI 七層模型指什么
七層模型,也就是OSI(Open System Interconnection),即開放式系統互聯通信模型
。
它是國際標準化組織(ISO)
制定的一個用于計算機或通信系統間互聯的標準體系
,一般稱為OSI參考模型或七層模型。
它是一個七層的、抽象的模型
,不僅包括一系列抽象的概念
,也包括具體的協議
。
從低到高:
物理層 -> 數據鏈路層 -> 網絡層 -> 傳輸層 -> 會話層 -> 表示層 -> 應用層
2.HTTP 的工作原理是什么?
HTTP協議采用請求/響應模型,即客戶端向服務器發送一個請求報文,服務器以一個狀態作為響應。
工作原理:
①客戶端連接到web服務器
一個HTTP客戶端,通常是瀏覽器,與web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。
②客戶端向服務器發起HTTP請求
通過已建立的TCP 連接,客戶端向服務器發送一個請求報文;一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。
③服務器接受請求并返回HTTP響應
Web服務器解析請求,定位請求資源。服務器將資源副本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。
④服務器斷開TCP 連接
Web服務器主動關閉TCP套接字,斷開TCP連接;客戶端被動關閉TCP套接字,斷開TCP連接。
一般情況下,一旦web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼Connection:keep-alive,TCP連接發送后將仍然保持打開狀態,于是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了為每個請求建立新連接所需要的時間,還節約了網絡帶寬。
⑤客戶端瀏覽器解析HTML內容
客戶端瀏覽器先解析狀態行,查看表明請求是否是成功的狀態代碼。然后解析每一個響應頭,響應頭告知一下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,并在瀏覽器窗口中顯示。
參考文章
3.URI 的格式是什么?常見的協議有哪些
常見的協議:HTTP(HyperText Transfer Protocol 超文本傳輸協議)、HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer http的安全版)、FTP(文件傳輸協議)、mailto(電子郵件協議)、file(本地文件傳輸協議)
4.HTTP 協議有幾種和服務器交互的方法
根據HTTP標準,HTTP請求可以使用多種請求方法,來以不同方式操作指定資源。
①GET:向服務器請求資源。
GET方法用來請求訪問已被URI識別的資源。指定的資源經服務器解析后,返回響應的內容。
②POST: 向服務器發送數據,返回服務器端接收數據后傳回的結果
③HEAD:該方法和GET類似,但是服務器的響應中沒有資源的內容,只有資源的一些基本信息,主要用于在不獲取資源的情況下獲取資源的信息(類型、大小等)。通過狀態碼查看資源是否存在,通過查看首部,可以測試資源是否被修改了。
④PUT:發送并且改寫服務器端內容,請求會將文件的內容保存到指定的URI中,一般來說,服務器為安全起見,不會使用該方法。
⑤DELETE:用于要求服務器刪除請求的URL,服務器基本上不會支持這個功能。
⑥CONNECT:要求用隧道協議連接代理,隧道可按要求建立起一條與其他服務器的通信線路,并使用一些加密方式,讓客戶端與服務器進行安全的通信
⑦OPTIONS: 允許客戶端查看服務器的功能
⑧TRACE:客戶端發送一個請求的時候,這個請求可能會穿過防火墻、代理、網管和一些其他的應用程序,每個中間節點都可能修改HTTP請求,TRACE方法允許客戶端在最終請求發往服務器的時候,看看它變成了什么樣子。
5. 狀態碼200,301, 304,403,404,500,503分別代表什么意思
2xx (成功):表示成功處理了請求
200:OK,服務器收到請求,并正常返回用戶所要求的資源
3xx (重定向):表示要完成請求,需要進一步操作
301:Moved Prmanently,資源永久重定向,表示請求的資源已被分配了新的URI,瀏覽器會自動連接到新的URL。比如訪問mp3.baidu.com會跳轉到music.baidu.com。區分與302的差異,302是臨時重定向
304:自從上次請求后,請求的網頁未修改過,從本地緩存中讀取。
4xx(請求錯誤):這些狀態代碼表示請求可能出錯,妨礙了服務器的處理
403:forbidden,表示請求被服務器拒絕,客戶端可能不具備訪問該資源的權限信息。
404:客戶端輸入有誤或者資源已被刪除,找不到資源,當服務器拒絕用戶訪問時,也可能出現404。
5xx(服務器錯誤) :這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。
500:Internal Server Error,服務器錯誤,表示可能服務器在執行請求時發生了錯誤。
503:Service Unavailable,服務器處于超負荷或者正在進行停機維護的狀態,無法處理請求。
6. 報文有哪幾部分組成
用于HTTP協議交互的信息被稱為HTTP報文;
HTTP報文是簡單的格式化數據塊,數據塊以文本形式的元信息
開頭,描述報文的內容及含義,后面跟著可選的數據部分;
每個報文都包含一條來自客戶端的請求或者一條來自服務器的響應。
報文是由3部分組成:
①對報文進行描述的起始行 —— start line
②包含屬性的首部塊 —— header
③可選的包含數據的主體部分 —— body
報文都可以分為兩類:請求報文(request message)和響應報文(response message)。請求報文會向 Web 服務器請求一個動作。響應報文會將請求的結果返回客戶端。請求與響應報文的基本報文結構相同。
請求報文詳圖如下:
響應報文詳解如下:
7.請求頭的格式和作用是什么?給個范例截圖說明
格式:鍵值對;
作用:
Accept:告訴web服務器自己接受什么介質類型.
Accept-Encoding:瀏覽器聲明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什么壓縮方法。
Accept-Language:瀏覽器聲明自己接收的語言。
Cache-control:瀏覽器的緩存方法,no-cache(不要緩存的實體,要求現在從web服務器去取),max-age(只接受age值小于max-age值,并且沒有過期的對象)。
Connection:告訴web服務器或者代理服務器,在完成本次請求的響應后,斷開連接,不要等待本次連接的后續請求了。keep-alive(連續保持著,在等待本次連接的后續請求),close(請求已關閉)。
Cookie:客戶端傳遞的字符串,可能和一些登陸信息有關。
Host:客戶端指定自己想訪問的WEB服務器的域名/IP地址和端口號。
User-Agent: 瀏覽器表明自己的身份(是哪種瀏覽器)。
Referer : 提供了包含當前請求URI的文檔的URL,告訴服務器自己來源。
8.首部的格式和作用是什么?給個范例截圖說明
格式:鍵值對;
作用:
Request URL:請求文件的路徑
Request Method : 請求文件的方法
Status Code : 狀態碼以及狀態信息
Remote Address:服務器地址
9.主體的作用是什么?給個范例
主體就是客戶端發給服務器或者服務器發給客戶端的主要內容,服務器發給客戶端的用于向用戶呈現的相應信息,而客戶端發給服務器的主要用于向服務器傳送除協議相關以外的信息。
10.簡述瀏覽器緩存是如何控制的
緩存機制1
緩存機制2
緩存機制3
緩存行為主要由緩存策略決定,而緩存策略由內容擁有者設置。這些策略主要通過特定的HTTP頭部來清晰地表達。
當一個用戶發起一個靜態資源請求的時候,瀏覽器會通過以下幾步來獲取資源:
- 本地緩存階段:先在本地查找該資源,如果有發現該資源,而且該資源還沒有過期,就使用這一個資源,完全不會發送http請求到服務器;
- 協商緩存階段:如果在本地緩存找到對應的資源,但是不知道該資源是否過期或者已經過期,則發一個http請求到服務器,然后服務器判斷這個請求,如果請求的資源在服務器上沒有改動過,則返回304,讓瀏覽器使用本地找到的那個資源;
-
緩存失敗階段:當服務器發現請求的資源已經修改過,或者這是一個新的請求(在本來沒有找到資源),服務器則返回該資源的數據,并且返回200, 當然這個是指找到資源的情況下,如果服務器上沒有這個資源,則返回404。
Paste_Image.png
11.下圖各個參數是什么意思
General(通用首部)
request URL:請求資源的URL路徑
request method:請求使用的方法
status code:響應狀態碼及描述
emote address:請求的服務器的IP及端口
response headers(響應首部)
connection:keep-alive 響應的連接狀態為保持鏈路連接
Content-Length:12 響應內容長度(字節)
Content-Type:json 響應體的內容格式,這里是json格式
date:該響應報文創建的日期和時間(是服務器時間)
server:服務器版本信息
x-powered-by:服務器使用的技術
request headers(請求首部)
accept:客戶端能處理的響應內容格式,這里是所有格式
Accept-Encoding:客戶端能處理的響應內容編碼格式
Accept-Language:客戶端能處理的語言種類和優先級,默認權重值q為1,這里優先考慮zh-CN
connection:keep-alive 請求的連接狀態為保持鏈路連接
content-length:56 請求體內容長度(字節),這里為56個字節
Content-Type:請求體的內容格式
cookie:緩存信息
Host:表示服務器的域名以及服務器所監聽的端口號。如果所請求的端口是對應的服務的標準端口(80),則端口號可以省略。
Origin:告知服務器請求的源地址。
Referer:告知服務器請求的原始資源的URI。
User-Agent:客戶端使用的操作系統和瀏覽器的名稱和版本。
X-Requsted-With:xmlhttprequest 表示使用的是Ajax異步請求。
Form Data:向服務器提交的表單數據。
HTTP協議請求-Kencery-cnblog5
HTTP深入淺出 http請求-尹京昱-cnblog3
URI vs URL