先看幾張圖:
通過這幾張圖,我們可以清楚的看到一些常用協(xié)議,下面我們一一介紹:
1. HTTP協(xié)議詳解
· http報(bào)文結(jié)構(gòu)
· 請(qǐng)求報(bào)文方法
· 常見狀態(tài)碼
· 請(qǐng)求與響應(yīng)格式分析
http報(bào)文結(jié)構(gòu)
請(qǐng)求報(bào)文方法
常見狀態(tài)碼
· 狀態(tài)碼有5個(gè)大類,由第一位數(shù)字進(jìn)行區(qū)分,每個(gè)大類下面還有不同的子類,每種子類的長度都是3位,都代表一個(gè)狀態(tài)碼
即一種類型的返回的信息。
o 1xx表示通知信息,如請(qǐng)求收到了或正在進(jìn)行處理
o 2xx表示成功,如接受或知道了
o 3xx表示重定向,如果要完成請(qǐng)求還必須才去進(jìn)一步的行動(dòng)
o 4xx表示客戶端的差錯(cuò)
o 5xx表示服務(wù)器的差錯(cuò)
TCP/IP協(xié)議
TCP/IP協(xié)議模型(Transmission Control Protocol/Internet Protocol),包含了一系列構(gòu)成互聯(lián)網(wǎng)基礎(chǔ)的網(wǎng)絡(luò)協(xié)議,是Internet的核心協(xié)議。
基于TCP/IP的參考模型將協(xié)議分成四個(gè)層次,它們分別是鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。下圖表示TCP/IP模型與OSI模型各層的對(duì)照關(guān)系。
TCP/IP協(xié)議族按照層次由上到下,層層包裝。最上面的是應(yīng)用層,這里面有http,ftp,等等我們熟悉的協(xié)議。而第二層則是傳輸層,著名的TCP和UDP協(xié)議就在這個(gè)層次。第三層是網(wǎng)絡(luò)層,IP協(xié)議就在這里,它負(fù)責(zé)對(duì)數(shù)據(jù)加上IP地址和其他的數(shù)據(jù)以確定傳輸?shù)哪繕?biāo)。第四層是數(shù)據(jù)鏈路層,這個(gè)層次為待傳送的數(shù)據(jù)加入一個(gè)以太網(wǎng)協(xié)議頭,并進(jìn)行CRC編碼,為最后的數(shù)據(jù)傳輸做準(zhǔn)備。
上圖清楚地表示了TCP/IP協(xié)議中每個(gè)層的作用,而TCP/IP協(xié)議通信的過程其實(shí)就對(duì)應(yīng)著數(shù)據(jù)入棧與出棧的過程。入棧的過程,數(shù)據(jù)發(fā)送方每層不斷地封裝首部與尾部,添加一些傳輸?shù)男畔?,確保能傳輸?shù)侥康牡?。出棧的過程,數(shù)據(jù)接收方每層不斷地拆除首部與尾部,得到最終傳輸?shù)臄?shù)據(jù)
TCP和UDP
TCP/UDP都是是傳輸層協(xié)議,但是兩者具有不同的特性,同時(shí)也具有不同的應(yīng)用場景,下面以圖表的形式對(duì)比分析。
面向報(bào)文
面向報(bào)文的傳輸方式是應(yīng)用層交給UDP多長的報(bào)文,UDP就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。因此,應(yīng)用程序必須選擇合適大小的報(bào)文。若報(bào)文太長,則IP層需要分片,降低效率。若太短,會(huì)是IP太小。
面向字節(jié)流
面向字節(jié)流的話,雖然應(yīng)用程序和TCP的交互是一次一個(gè)數(shù)據(jù)塊(大小不等),但TCP把應(yīng)用程序看成是一連串的無結(jié)構(gòu)的字節(jié)流。TCP有一個(gè)緩沖,當(dāng)應(yīng)用程序傳送的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。
關(guān)于擁塞控制,流量控制,是TCP的重點(diǎn),后面講解。
TCP和UDP協(xié)議的一些應(yīng)用
什么時(shí)候應(yīng)該使用TCP?
當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量有要求的時(shí)候,比如:整個(gè)數(shù)據(jù)要準(zhǔn)確無誤的傳遞給對(duì)方,這往往用于一些要求可靠的應(yīng)用,比如HTTP、HTTPS、FTP等傳輸文件的協(xié)議,POP、SMTP等郵件傳輸?shù)膮f(xié)議。
什么時(shí)候應(yīng)該使用UDP?
當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP。
HTTPS協(xié)議
HTTPS特點(diǎn):
基于HTTP協(xié)議,通過SSL或TLS提供加密處理數(shù)據(jù)、驗(yàn)證對(duì)方身份以及數(shù)據(jù)完整性保護(hù)
通過抓包可以看到數(shù)據(jù)不是明文傳輸,而且HTTPS有如下特點(diǎn):
內(nèi)容加密:采用混合加密技術(shù),中間者無法直接查看明文內(nèi)容
驗(yàn)證身份:通過證書認(rèn)證客戶端訪問的是自己的服務(wù)器
保護(hù)數(shù)據(jù)完整性:防止傳輸?shù)膬?nèi)容被中間人冒充或者篡改
**混合加密:**結(jié)合非對(duì)稱加密和對(duì)稱加密技術(shù)。客戶端使用對(duì)稱加密生成密鑰對(duì)傳輸數(shù)據(jù)進(jìn)行加密,然后使用非對(duì)稱加密的公鑰再對(duì)秘鑰進(jìn)行加密,所以網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)是被秘鑰加密的密文和用公鑰加密后的秘密秘鑰,因此即使被黑客截取,由于沒有私鑰,無法獲取到加密明文的秘鑰,便無法獲取到明文數(shù)據(jù)。
**數(shù)字摘要:**通過單向hash函數(shù)對(duì)原文進(jìn)行哈希,將需加密的明文“摘要”成一串固定長度(如128bit)的密文,不同的明文摘要成的密文其結(jié)果總是不相同,同樣的明文其摘要必定一致,并且即使知道了摘要也不能反推出明文。
**數(shù)字簽名技術(shù):**數(shù)字簽名建立在公鑰加密體制基礎(chǔ)上,是公鑰加密技術(shù)的另一類應(yīng)用。它把公鑰加密技術(shù)和數(shù)字摘要結(jié)合起來,形成了實(shí)用的數(shù)字簽名技術(shù)。
收方能夠證實(shí)發(fā)送方的真實(shí)身份;
發(fā)送方事后不能否認(rèn)所發(fā)送過的報(bào)文;
收方或非法者不能偽造、篡改報(bào)文。
內(nèi)容加密和數(shù)據(jù)完整性保護(hù)
非對(duì)稱加密過程需要用到公鑰進(jìn)行加密,那么公鑰從何而來?其實(shí)公鑰就被包含在數(shù)字證書中,數(shù)字證書通常來說是由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)CA,在驗(yàn)證服務(wù)器身份后頒發(fā),證書中包含了一個(gè)密鑰對(duì)(公鑰和私鑰)和所有者識(shí)別信息。數(shù)字證書被放到服務(wù)端,具有服務(wù)器身份驗(yàn)證和數(shù)據(jù)傳輸加密功能。
FTP協(xié)議
FTP是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,建立在TCP協(xié)議之上,用于Internet上文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序。用戶可以通過它把自己的PC機(jī)與世界各地所有運(yùn)行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的大量程序和信息。FTP的主要作用是:讓用戶連接上一個(gè)遠(yuǎn)程計(jì)算機(jī)(這些計(jì)算機(jī)上運(yùn)行著FTP服務(wù)器程序)察看遠(yuǎn)程計(jì)算機(jī)有哪些文件,然后把文件從遠(yuǎn)程計(jì)算機(jī)上拷到本地計(jì)算機(jī),或把本地計(jì)算機(jī)的文件送到遠(yuǎn)程計(jì)算機(jī)去。
端口
FTP協(xié)議主要使用的端口有兩個(gè),控制端口21,數(shù)據(jù)端口20,21端口主要用于傳輸控制命令,20端口主要用于傳輸數(shù)據(jù)。
傳輸格式
主要使用的傳輸格式和TFTP協(xié)議類似,二進(jìn)制傳輸格式和文件傳輸格式,默認(rèn)是二進(jìn)制傳輸格式。
傳輸模式
傳輸模式主要分為兩種,主動(dòng)模式和被動(dòng)模式,主動(dòng)模式是在進(jìn)行數(shù)據(jù)連接時(shí),服務(wù)端主動(dòng)連接客戶端;被動(dòng)模式是在進(jìn)行數(shù)據(jù)連接時(shí),客戶端主動(dòng)連接服務(wù)端。在客戶端有防火墻的情況下,建議使用被動(dòng)模式,因?yàn)樵谥鲃?dòng)模式下,服務(wù)端連接客戶端時(shí),由于連接的客戶端端口大于1024,有可能被客戶端的防火墻擋住,導(dǎo)致連接失敗。
FTP錯(cuò)誤碼
錯(cuò)誤一般是3個(gè)數(shù)字,2開頭的數(shù)字一般表示成功,3開頭的數(shù)字一般表示權(quán)限問題,4開頭的數(shù)字一般表示文件問題,5開頭的數(shù)組一般表示服務(wù)器問題,具體錯(cuò)誤碼的含義如下:
· 150 文件狀態(tài)良好,打開數(shù)據(jù)連接
· 200 命令成功
· 212 目錄狀態(tài)
· 213 文件狀態(tài)
· 110 重新啟動(dòng)標(biāo)記應(yīng)答
· 500 格式錯(cuò)誤,命令不可識(shí)別
· 501 參數(shù)語法錯(cuò)誤
· 502 命令未實(shí)現(xiàn)
· 120 在X 分鐘內(nèi)準(zhǔn)備好
· 125 連接打開準(zhǔn)備傳送
· 214 幫助信息,信息僅對(duì)人類用戶有用
· 215 名字系統(tǒng)類型
· 220 對(duì)新用戶服務(wù)準(zhǔn)備好
· 221 服務(wù)關(guān)閉控制連接,可以退出登錄
· 202 命令未實(shí)現(xiàn)
· 211 系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)
· 225 數(shù)據(jù)連接打開,無傳輸正在進(jìn)行
· 226 關(guān)閉數(shù)據(jù)連接,請(qǐng)求的文件操作成功
· 227 進(jìn)入被動(dòng)模式
· 230 用戶登錄
· 331 用戶名正確,需要口令
· 332 登錄時(shí)需要帳戶信息
· 350 請(qǐng)求的文件操作需要進(jìn)一步命令
· 421 連接用戶過多
· 425 不能打開數(shù)據(jù)連接
· 426 關(guān)閉連接,中止傳輸
· 450 請(qǐng)求的文件操作未執(zhí)行
· 451 中止請(qǐng)求的操作:有本地錯(cuò)誤
· 452 未執(zhí)行請(qǐng)求的操作:系統(tǒng)存儲(chǔ)空間不足
· 250 請(qǐng)求的文件操作完成
· 257 創(chuàng)建"PATHNAME"
· 503 命令順序錯(cuò)誤
· 504 此參數(shù)下的命令功能未實(shí)現(xiàn)
· 530 賬號(hào)或密碼錯(cuò)誤
· 532 存儲(chǔ)文件需要帳戶信息
· 550 未執(zhí)行請(qǐng)求的操作
· 551 請(qǐng)求操作中止:頁類型未知
· 552 請(qǐng)求的文件操作中止,存儲(chǔ)分配溢出
· 553 未執(zhí)行請(qǐng)求的操作:文件名不合法
更多關(guān)于軟件測(cè)試培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。