顧老師新書《全棧軟件測試工程師寶典》css
https://item.m.jd.com/product/10023427978355.htmlhtml
之前兩本書的網上購買地址:web
《軟件測試技術實戰設計、工具及管理》:數據庫
https://item.jd.com/34295655089.html跨域
《基於Django的電子商務網站》:瀏覽器
https://item.jd.com/12082665.html安全
來源:51testing
服務器
今天給你們分享的內容是接口測試必備的網絡基礎知識:osi七層模型與tcp/ip協議,http協議及狀態碼,cookie、session與token機制。微信
OSI7層模型與TCP/IP協議cookie
OSI7層模型是由國際化標準化組織OSI定義。
由上至下:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。
TCP/IP協議
tcp/ip體系結構:分爲應用層、傳輸層、網絡層和數據鏈路層。
TCP:是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議。
TCP三次握手
目的是確認客戶端與服務器的發送與接收是否正常。
發送方:喂,聽獲得嗎?
接收方:聽獲得,你聽獲得我嗎?
發送方:聽到了,咱們能夠說話了。
TCP四次揮手
發送方:我全部東西都說完了
接收方:我已經所有聽到了,可是等等我,我還沒處理完
接收方:好了,我處理了
發送方:好的,咱們通訊結束!
UDP協議
UDP用戶數據報協議,是一種無鏈接、不可靠的傳輸層協議。
當報文發送以後,是沒法得知其是否安全完整到達的。
「ping」命令來測試兩臺主機之間TCP/IP通訊是否正常,向對方主機發送UDP數據包。
IP協議
IP因特網協議,IP只爲主機提供一種無鏈接、不可靠的、盡力而爲的數據報傳輸服務。
http協議
http超文本傳輸協議,位於應用層,當你上網瀏覽網頁的時候,瀏覽器和Web服務器之間就會經過http在Internet上進行數據的發送和接收。
http是一個基於請求/響應模式的、無狀態的協議。即咱們一般所說的Request/Response。
在瀏覽器中輸入URL地址到顯示主頁的過程
1.DNS解析:瀏覽器查詢DNS,獲取域名對應的IP地址;
2.TCP鏈接:瀏覽器得到域名對應的IP地址之後,瀏覽器向服務器請求創建連接,發起三次握手;
3.發送HTTP請求:TCP鏈接創建起來後,瀏覽器向服務器發送HTTP請求;
4.服務器處理請求並返回HTTP報文:服務器接收到這個請求,並根據路徑參數映射到特定的請求處理器進行處理,並將處理結果及相應的視圖返回給瀏覽器;
5.瀏覽器解析渲染頁面:瀏覽器解析並渲染視圖,若遇到對js文件、css文件及圖片等靜態資源的引用,則重複上述步驟並向服務器請求這些資源;瀏覽器根據其請求到的資源、數據渲染頁面,最終向用戶呈現一個完整的頁面;
6.鏈接結束。
B/S架構與C/S架構的比較
1.B/S架構主要是瀏覽器,網頁,不須要在客戶端安裝軟件;
2.B/S考慮瀏覽器的兼容性;
3.C/S架構須要客戶端安裝相應的APP;
4.C/S架構考慮版本的兼容性,安裝與卸載。
GET請求和POST請求的區別
若是是get請求的話,直接在瀏覽器裏輸入就好了,只要在瀏覽器裏面直接能請求到的,都是get請求,若是是post的請求的話,就不行了,就得藉助工具來發送。
1.GET使用URL或Cookie傳參,而POST將數據放在BODY中;
2.GET的URL會有長度上的限制,則POST的數據則能夠很是大;
3.POST比GET安全,由於數據在地址欄上不可見;
4.通常get請求用來獲取數據,post請求用來發送數據。
http狀態碼
每發出一個http請求以後,都會有一個響應,http自己會有一個狀態碼,來標示這個請求是否成功,常見的狀態碼有如下幾種:
1.2xx的都表示這個請求發送成功,最多見的就是200,就表明這個請求是ok的,服務器成功處理請求;
2.3xx的表明重定向,最多見的是302,把這個請求重定向到別的地方;
3.4xx表明客戶端發送的請求有語法錯誤,401表明訪問的頁面沒有受權,403表示沒有權限訪問這個頁面,404表明沒有這個頁面;
4.5xx表明服務器有異常,500表明服務器內部異常,504表明服務器端超時,沒返回結果。
cookie&session&token
因爲http是無狀態協議,cookie、session與token,就是爲了實現帶有狀態的「會話控制」。
Token
令牌,是用戶身份的驗證方式。最簡單的token組成:uid(用戶惟一的身份標識)、time(當前時間的時間戳)、sign(簽名)。
對Token認證的五點認識
1.一個Token就是一些信息的集合;
2.在Token中包含足夠多的信息,以便在後續請求中減小查詢數據庫的概率;
3.服務端須要對cookie和HTTPAuthrorizationHeader進行Token信息的檢查;
4.基於上一點,你能夠用一套token認證代碼來面對瀏覽器類客戶端和非瀏覽器類客戶端;
5.由於token是被簽名的,因此咱們能夠認爲一個能夠解碼認證經過的token是由咱們系統發放的,其中帶的信息是合法有效的。
Token優勢
1.服務器變成無狀態了,實現分佈式web應用受權;
2.能夠進行跨域受權,再也不侷限父子域名;
3.token設計決定了它自己能夠攜帶更多不敏感數據,例如最經常使用的JWT;
4.安全性更高,密鑰保存在服務器。若密鑰被竊取,能夠統一從新下發密鑰。
Session
Session以K-V數據格式來保存狀態。
Key:也稱SessionID,保存在客戶端瀏覽器。
Value:也稱「Session」,保存在服務端。
客戶端只須要存儲SessionID,需藉助cookie來實現。具體映射的數據結構放在了服務端,所以跳出了僅僅瀏覽器cookie只能夠存儲string類型的限制。
會話:表明服務器與瀏覽器的一次會話過程,這個過程是連續的,也能夠時斷時續。
1.cookie中存放着一個sessionID,請求時會發送這個ID;
2.session由於請求(request對象)而產生;
3.session是一個容器,能夠存放會話過程當中的任何對象;
4.session的建立與使用老是在服務端,瀏覽器歷來都沒有獲得過session對象;
5.session是一種http存儲機制,目的是爲武裝的http提供持久機制。
cookie
cookie由服務器生成併發送給瀏覽器,以K-V形式將數據存儲在用戶本地終端上,下次請求統一網站給服務器。
session與token
做爲身份認證,token安全行比session好。
Session認證只是簡單的把User信息存儲到Session裏,由於SID的不可預測性,暫且認爲是安全的。這是一種認證手段。而Token,若是指的是OAuthToken或相似的機制的話,提供的是認證和受權,認證是針對用戶,受權是針對App。其目的是讓某App有權利訪問某用戶的信息。
token與cookie
Cookie是不容許垮域訪問的,可是token是支持的,前提是傳輸的用戶認證信息經過HTTP頭傳輸。
token就是令牌,好比你受權(登陸)一個程序時,他就是個依據,判斷你是否已經受權該軟件;cookie就是寫在客戶端的一個txt文件,裏面包括你登陸信息之類的,這樣你下次在登陸某個網站,就會自動調用cookie自動登陸用戶名;session和cookie差很少,只是session是寫在服務器端的文件,也須要在客戶端寫入cookie文件,可是文件裏是你的瀏覽器編號.Session的狀態是存儲在服務器端,客戶端只有sessionid;而Token的狀態是存儲在客戶端。
cookie與session區別
1.cookie數據存放在客戶端上,session數據放在服務器上;
2.cookie不是很安全,且保存數據有限;
3.session必定時間內保存在服務器上,當訪問增多,佔用服務器性能;
4.session數據結構靈活;
5.單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie;
6.建議:將登陸等重要信息存放爲session,其餘信息能夠放在cookie中。
—————————————————————————————————
顧老師課程歡迎報名
軟件安全測試
https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486
接口自動化測試
https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486
DevOps 和Jenkins之DevOps
https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486
DevOps與Jenkins 2.0之Jenkins
https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486
Selenium自動化測試
https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486
性能測試第1季:性能測試基礎知識
https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486
性能測試第2季:LoadRunner12使用
https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486
性能測試第3季:JMeter工具使用
https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486
性能測試第4季:監控與調優
https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486
Django入門
https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486
啄木鳥顧老師漫談軟件測試
https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486
本文分享自微信公衆號 - 軟件測試培訓(iTestTrain)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。