接口測試必備網絡基礎知識

顧老師新書《全棧軟件測試工程師寶典》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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索