1.OSI 七層模型指什么
OSI七層模型是通過七個層次化的結構模型使不同的系統(tǒng)不同網絡間實現可靠的通訊
1.物理層:通過物理介質發(fā)送和接收原始比特流
2.數據鏈路層:數據包被編碼并解碼成比特。 它提供傳輸協(xié)議知識和管理,并處理物理層,流量控制和幀同步中的錯誤降允。 數據鏈路層分為兩個子層:媒體訪問控制(MAC)層和邏輯鏈路控制(LLC)層。 MAC子層控制網絡上的計算機如何獲得對數據的訪問以及傳輸數據的權限坤学。 LLC層控制幀同步浮梢,流控制和錯誤檢查握巢。
3.網絡層:構建和管理多節(jié)點網絡,包括尋址岛请,路由和流量控制
4.傳輸層:向用戶提供可靠的端到端的差錯和流量控制旭寿,保證報文的正確傳輸。
在這一層崇败,數據的單位稱為數據段(segment)盅称。
5.會話層:管理通信會話,即以兩個節(jié)點之間的多個往復傳輸的形式連續(xù)交換信息
6.表示層:網絡服務和應用程序之間的數據轉換;包括字符編碼后室,數據壓縮和加密/解密
7.應用層:支持應用程序和最終用戶進程缩膝。識別通信伙伴,識別服務質量岸霹,考慮用戶認證和隱私疾层,并識別對數據語法的任何約束。
2.HTTP 的工作原理是什么贡避?
我在地址欄中輸入www.baidu.com后云芦,瀏覽器會向DNS發(fā)送請求,DNS服務器就是你買的寬帶供應商贸桶,此時DNS會返回一個IP,TCP三次握手桌肴,瀏覽器此時這個IP去發(fā)送HTTP請求皇筛,IP對應的是百度的服務器端口,百度的服務器會幫我們補全端口號和路徑坠七,然后返回HTTP響應發(fā)給瀏覽器水醋,TCP四次揮手,瀏覽器解析返回的響應彪置,最后展現頁面
假如是www.baidu.com:80拄踪、www.baidu.com/index.html,拳魁,默認端口和默認路徑可以不寫
3.URI 的格式是什么惶桐?常見的協(xié)議有哪些
含義
URI 是 Uniform Resource Identifier 的縮寫
- Uniform:規(guī)定統(tǒng)一的格式,可方便處理各種不同類型的資源潘懊,而不用根據上下文環(huán)境來識別資源指定的訪問方式姚糊,加入新的協(xié)議方案(HTTP, HTTPS, FTP等)也更容易
- Resource:資源的定義是“可以標識的任何東西”,除了文檔文件授舟、圖像或者服務(天氣預報)等能夠區(qū)別于其他類型的救恨,勸都可以稱為資源,另外資源不僅可以是單一的释树,也可以是多數的集合體
- Identifier:表示可標識的對象肠槽,也成為標識符
格式
例:http://samaritan89.github.io/f2e/js/ajax.html
通用的URL由9部分組成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
- 對于web頁面來說最常用的協(xié)議就是http和https
- user和password現在不常見了擎淤,不會在URL明文書寫用戶名和密碼了,都是通過登錄的方式
- 主機可以是IPO地址過著域名
- 端口號用來區(qū)分主機上的進程秸仙,方便找到web服務器嘴拢,http默認是80
- path是資源的路徑,也就是存放位置筋栋,不一定和物理路徑完全對應炊汤,符合web服務器路由約定即可
- params,在一些協(xié)議中需要參數來訪問資源弊攘,例如ftp是二進制還是文本傳輸抢腐,參數是名值對,用;隔開
- query:這個是get請求最常用的傳遞參數方式了 ?a=1&b=2&=3
- hash也成為片段襟交,設計為標識文檔的一部分迈倍,很多MVVM框架用作了路由功能
常見協(xié)議
http——超文本傳輸協(xié)議資源
https——用安全套接字層傳送的超文本傳輸協(xié)議
ftp——文件傳輸協(xié)議
mailto——電子郵件地址
file——本地電腦文件
4.HTTP 協(xié)議有幾種和服務器交互的方法
http最大的作用就是客戶端發(fā)送請求,服務器給出響應捣域,客戶端發(fā)送請求的方式有很多
get:是最常用于請求服務器發(fā)送某個資源
head:和get類似啼染,但在服務器的響應中沒有資源的內容,只有資源的一些基本信息焕梅,主要用于
1.在不獲取資源的情況下獲取資源信息(類型迹鹅、大小等)
2.通過狀態(tài)碼查看資源是否存在
3.通過查看首部,測試資源是否被修改了
通俗釋義:查詢這個網頁是什么類型贞言,是否存在斜棚,修改時間是何時。
put:和get從服務器獲取資源相反该窗,put用于向服務器寫入資源弟蚀,put的語義就是讓服務器用請求的主題部分創(chuàng)建一個請求url命名的文檔,如果存在就替換
將一個網頁放入服務器酗失,例如首頁
post:用于向服務器發(fā)送數據义钉,通常用來支持HTML的表單,將表單中的內容發(fā)送到服務器
將信息交給服務器
delete:刪除服務器上的資源
trace:用來讓Web服務器端將之前的請求通信環(huán)回給客戶端规肴。診斷捶闸,看經過哪些節(jié)點
options:用來查詢針對請求URI指定的資源支持方法∽嗉停看這么多方法支持哪一個
5.狀態(tài)碼200鉴嗤,301, 304序调,403,404,500醉锅,503分別代表什么意思
200 一切正常,請求被正常返回
301 客戶請求的文檔在其他地方发绢,新的URL在Location頭中給出硬耍,瀏覽器應該自動地訪問新的URL垄琐。
304 未改變,說明無需再次傳輸請求的內容经柴,也就是說可以使用緩存的內容狸窘。
403 資源不可用。服務器理解客戶的請求坯认,但拒絕處理它翻擒。通常由于服務器上文件或目錄的權限設置導致。
404 無法找到指定位置的資源牛哺。這也是一個常用的應答陋气。
500 服務器遇到了意料不到的情況,不能完成客戶的請求引润。
503 服務器由于維護或者負載過重未能應答巩趁。例如,Servlet可能在數據庫連接池已滿的情況下返回503淳附。服務器返回503時可以提供一個 Retry-After頭议慰。
6.報文有哪幾部分組成?
http報文是簡單的格式化數據塊奴曙,每個報文都包含來自客戶端的請求或者一條來自服務器的響應
由三部分組成:
1.對報文進行描述的起始行 -- start line
2.包含屬性的首部塊 --header
3.可選的包含數據的主體部分 --body
起始行和首部是由分隔行的ASCII别凹,主體是一個可選的數據塊
HTTP報文分為兩類:
- 請求報文:向服務器請求一個動作
<method><request-URL><version>
<headers>
<entity-body>
get一般是沒有body
- 響應報文:將請求結果返回給客戶端
<version><status><reason-phrase>
// 版本 狀態(tài) 原因的短語
<headers>
<entity-body>
7.請求頭的格式和作用是什么?給個范例截圖說明
格式:
第一行(請求行):GET 路徑 HTTP/1.1
第二部分洽糟,N行(請求頭番川,可以有多個):
KEY: Value 回車
KEY1: Value1 回車
KEY2: Value2 回車
... ...
KEYn: Valuen 回車
第三部分(空行):回車(表示第二部分結束了)
第四部分,N行(消息體/請求體): 隨便(格式可在第二部分指定)
作用:規(guī)定了請求的協(xié)議版本脊框,方法、請求的服務器主機名或端口等信息
說明:
- GET / HTTP/1.1 ---請求方法是get 遵守HTTP1.1協(xié)議
- Host: www.baidu.com ---接收請求的服務器的主機名和端口號是百度官網
- Connection: keep-alive ---客戶端和服務器是否保持連接践啄,持久鏈接 浇雹,如果想關閉將keep-alive改為close
- Cache-Control:max-age=0 ---Cache-Control,控制緩存的行為屿讽,max-age昭灵,表示當前資源的有效時間器。
- Upgrade-Insecure-Requests:1 --- 是一個請求首部伐谈,用來向服務器端發(fā)送信號烂完,表示客戶端優(yōu)先選擇加密及帶有身份驗證的響應。http升級為https
- User-Agent ---客戶端用的瀏覽器诵棵,系統(tǒng)等信息
- Accept ---告知服務器客戶端可以處理的媒體類型及媒體類型優(yōu)先級
- Accept-Encoding---告訴服務器可以發(fā)送的編碼
- Accept-Language---告訴服務器可以發(fā)送的語言
- Cookie---主要作用是保存登錄信息
get可以有請求體抠蚣,但是一般沒有,使用get永遠看不到第三部分和第四部分
8.首部的格式和作用是什么履澳?給個范例截圖說明
格式:
KEY: Value 回車
KEY1: Value1 回車
KEY2: Value2 回車
... ...
KEYn: Valuen 回車
作用:首部和方法配合嘶窄,共同決定了服務器和客戶端能做什么
說明:
- Request URL: http://www.baidu.com/ --- 請求的url
- Request Method: GET ---請求方法
- Status Code: 200 OK ---狀態(tài)碼顯示成功響應
- Remote Address: 119.75.213.61:80 ---服務器的主機名或ip地址
- Referrer Policy: no-referrer-when-downgrade ---監(jiān)管哪些訪問來源信息
9.主體的作用是什么怀跛?給個范例
作用
請求主體的內容由傳輸者定義,服務器返回給客戶端的信息,其格式可以任意指定
10.簡述瀏覽器緩存是如何控制的
11.下圖各個參數是什么意思
General:大概內容
Request URL: --- 請求的url
Request Method: PUT ---請求方法put
Status Code: 200 OK ---狀態(tài)碼顯示成功響應
Remote Address: 121.40.201.213:80 ---服務器的主機名或ip地址Response Headers:響應的內容
Connection: keep-alive ---響應完成后柄冲,TCP鏈接狀態(tài)保持鏈接
Content-Length:12 ---瀏覽器報文中內容的大小
Content-Type: application/json ---響應主體類型json
Date: Tue ,05 Apr 2016 04:48:23 GMT ---創(chuàng)建日期
Server: nginx/1.6.2 --- 服務器是nginx
X-Powered-By: Express ---支持服務器的技術是ExpressRequest Headers:請求的內容
Accept: 接受的類型
Accept-Language: 接受的版本吻谋,語言
Connection: keep-alive ---響應完成后,TCP鏈接狀態(tài)保持鏈接
Content-Length: 56 ---瀏覽器報文中內容的大小
Content-Type: application/X... ... ---請求主體類型from
Cookie: --- 一般保存用戶登錄信息等
Host: --- 服務器的域名(用于虛擬主機)现横,以及服務器正在偵聽的TCP端口號
Origin: ---源
Referer: --- 表示上一個頁面的地址漓拾,包含一個URL,用戶從該URL代表的頁面出發(fā)訪問當前請求的頁面
User-Agent: --- 客戶端戒祠,瀏覽器的描述
X-Requested-With: XMLHttpRequest
題外話
響應頭的格式
第一行:狀態(tài)行 協(xié)議/數字/英文
第二部分(n行):
KEY: Value 回車
KEY1: Value1 回車
KEY2: Value2 回車
... ...
KEYn: Valuen 回車
第三部分(空行):回車(表示第二部分結束了)
第四部分骇两,N行(消息體/請求體): 隨便(格式可在第二部分指定)