你真的懂接口測(cè)試基礎(chǔ)之TCP、UDP和TCP/IP協(xié)議組嗎?
Python接口自動(dòng)化測(cè)試框架實(shí)戰(zhàn)系列文章第1篇
Python接口自動(dòng)化測(cè)試框架實(shí)戰(zhàn)系列文章第2篇
基礎(chǔ)知識(shí)篇

TCP與UDP的區(qū)別
TCP 是面向連接的,UDP 是面向無(wú)連接的
UDP程序結(jié)構(gòu)較簡(jiǎn)單
TCP 是面向字節(jié)流的,UDP 是基于數(shù)據(jù)報(bào)的
TCP 保證數(shù)據(jù)正確性,UDP 可能丟包
TCP 保證數(shù)據(jù)順序,UDP 不保證
TCP 為什么是可靠連接
通過(guò) TCP 連接傳輸?shù)臄?shù)據(jù)無(wú)差錯(cuò),不丟失,不重復(fù),且按順序到達(dá)。
TCP 報(bào)文頭里面的序號(hào)能使 TCP 的數(shù)據(jù)按序到達(dá)
報(bào)文頭里面的確認(rèn)序號(hào)能保證不丟包,累計(jì)確認(rèn)及超時(shí)重傳機(jī)制
TCP 擁有流量控制及擁塞控制的機(jī)制
UDP 的主要應(yīng)用場(chǎng)景
需要資源少,網(wǎng)絡(luò)情況穩(wěn)定的內(nèi)網(wǎng),或者對(duì)于丟包不敏感的應(yīng)用,比如 DHCP 就是基于 UDP 協(xié)議的。
不需要一對(duì)一溝通,建立連接,而是可以廣播的應(yīng)用。因?yàn)樗幻嫦蜻B接,所以可以做到一對(duì)多,承擔(dān)廣播或者多播的協(xié)議。
需要處理速度快,可以容忍丟包,但是即使網(wǎng)絡(luò)擁塞,也毫不退縮,一往無(wú)前的時(shí)候
基于 UDP 的幾個(gè)例子
直播。直播對(duì)實(shí)時(shí)性的要求比較高,寧可丟包,也不要卡頓的,所以很多直播應(yīng)用都基于 UDP 實(shí)現(xiàn)了自己的視頻傳輸協(xié)議 實(shí)時(shí)游戲。游戲的特點(diǎn)也是實(shí)時(shí)性比較高,在這種情況下,采用自定義的可靠的 UDP 協(xié)議,自定義重傳策略,能夠把產(chǎn)生的延遲降到最低,減少網(wǎng)絡(luò)問(wèn)題對(duì)游戲造成的影響 物聯(lián)網(wǎng)。一方面,物聯(lián)網(wǎng)領(lǐng)域中斷資源少,很可能只是個(gè)很小的嵌入式系統(tǒng),而維護(hù) TCP 協(xié)議的代價(jià)太大了;另一方面,物聯(lián)網(wǎng)對(duì)實(shí)時(shí)性的要求也特別高。比如 Google 旗下的 Nest 建立 Thread Group,推出了物聯(lián)網(wǎng)通信協(xié)議 Thread,就是基于 UDP 協(xié)議的
運(yùn)行在TCP協(xié)議上的協(xié)議:
HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議),主要用于普通瀏覽。 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協(xié)議),HTTP協(xié)議的安全版本。 FTP(File Transfer Protocol,文件傳輸協(xié)議),由名知義,用于文件傳輸。 POP3(Post Office Protocol, version 3,郵局協(xié)議),收郵件用。 SMTP(Simple Mail Transfer Protocol,簡(jiǎn)單郵件傳輸協(xié)議),用來(lái)發(fā)送電子郵件。 TELNET(Teletype over the Network,網(wǎng)絡(luò)電傳),通過(guò)一個(gè)終端(terminal)登陸到網(wǎng)絡(luò)。 SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陸用。
運(yùn)行在UDP協(xié)議上的協(xié)議:
BOOTP(Boot Protocol,啟動(dòng)協(xié)議),應(yīng)用于無(wú)盤(pán)設(shè)備。 NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議),用于網(wǎng)絡(luò)同步。 DHCP(Dynamic Host Configuration Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議),動(dòng)態(tài)配置IP地址。
TCP/IP 四層協(xié)議
1.四層協(xié)議
應(yīng)用層
傳輸層
網(wǎng)絡(luò)層
數(shù)據(jù)鏈路層
(物理層)

(1)將網(wǎng)絡(luò)的通信過(guò)程劃分為小一些、簡(jiǎn)單一些的部件,有助于各個(gè)部件的開(kāi)發(fā)、設(shè)計(jì)和故障排除;
(2)通過(guò)網(wǎng)絡(luò)組件的標(biāo)準(zhǔn)化,允許多個(gè)供應(yīng)商開(kāi)發(fā),鼓勵(lì)產(chǎn)業(yè)標(biāo)準(zhǔn)化;
(3)允許各種類型的網(wǎng)絡(luò)硬件和軟件相互通信;
(4)防止某一層的改動(dòng)影響到其它層,有利于開(kāi)發(fā)(主要)。
3.各層的主要協(xié)議:
(1)應(yīng)用層:?HTTP(超文本傳輸協(xié)議 80), HTTPS(更安全的超文本傳輸協(xié)議 443), FTP(文件傳輸協(xié)議), SMTP(簡(jiǎn)單郵件傳輸協(xié)議), DNS(域名服務(wù)),ping命令(調(diào)試網(wǎng)絡(luò)環(huán)境),OSPF(開(kāi)放最短路徑優(yōu)先);應(yīng)用層處理應(yīng)用程序的邏輯,且應(yīng)用層在用戶空間。
(2)傳輸層:?UDP(用戶數(shù)據(jù)報(bào)協(xié)議), TCP(傳輸控制協(xié)議);
傳輸層采用端到端的通信方式,其中:
UDP:不可靠的,無(wú)連接的,基于數(shù)據(jù)報(bào)的協(xié)議;
TCP:可靠的,面向連接的,基于字節(jié)流的協(xié)議;
(3)網(wǎng)絡(luò)層:?IP(因特網(wǎng)協(xié)議), ICMP(控制報(bào)文協(xié)議), ARP(地址解析協(xié)議), RARP(反向地址轉(zhuǎn)換協(xié)議);
網(wǎng)絡(luò)層主要實(shí)現(xiàn)數(shù)據(jù)包的選路和轉(zhuǎn)發(fā)。
(4)數(shù)據(jù)鏈路層:?傳輸單位是幀,分為邏輯鏈路控制子層(LLC),媒體訪問(wèn)控制子層(MAC);
數(shù)據(jù)鏈路層是網(wǎng)卡接口的驅(qū)動(dòng)程序,處理數(shù)據(jù)在物理媒介的傳輸
(5)物理層:?傳輸單位是比特流
傳輸?shù)闹饕橘|(zhì):集線器、中繼器、調(diào)制解調(diào)器、網(wǎng)線、雙絞線、同軸電纜。
一次完整的HTTP請(qǐng)求與響應(yīng)涉及了哪些知識(shí)?
答:包括TCP三次握手和TCP的四次揮手
TCP 三次握手 建立連接
TCP 的建立連接稱為三次握手,可以簡(jiǎn)單理解為下面這種情況:
A:您好,我是 A
B:您好 A,我是 B
A:您好 B
對(duì)于 A 來(lái)說(shuō)它發(fā)出請(qǐng)求,并收到了 B 的響應(yīng),對(duì)于 B 來(lái)說(shuō)它響應(yīng)了 A 的請(qǐng)求,并且也接收到了響應(yīng)。
TCP 的三次握手除了建立連接外,主要還是為了溝通 TCP 包的序號(hào)問(wèn)題。
狀態(tài)變化時(shí)序圖

TCP 四次揮(分)手 斷開(kāi)連接
A:B 啊,我不想玩了
B:哦,你不想玩了啊,我知道了
這個(gè)時(shí)候,只是 A 不想玩了,即不再發(fā)送數(shù)據(jù),但是 B 可能還有未發(fā)送完的數(shù)據(jù),所以需要等待 B 也主動(dòng)關(guān)閉。
B:A 啊,好吧,我也不玩了,拜拜
A:好的,拜拜

解讀:斷開(kāi)的時(shí)候,當(dāng) A 說(shuō)不玩了,就進(jìn)入 FIN_WAIT_1 的狀態(tài),B 收到 A 不玩了的消息后,進(jìn)入 CLOSE_WAIT 的狀態(tài)。
Appium往期推文:
Appium移動(dòng)端自動(dòng)化測(cè)試--基礎(chǔ)預(yù)熱 Appium移動(dòng)端自動(dòng)化測(cè)試--搭建測(cè)試環(huán)境 Appium移動(dòng)端自動(dòng)化測(cè)試--錄制測(cè)試用例并運(yùn)行 Appium移動(dòng)端自動(dòng)化測(cè)試--使用IDE編輯并強(qiáng)化腳本 Appium移動(dòng)端自動(dòng)化測(cè)試--控件定位方法 Appium移動(dòng)端自動(dòng)化測(cè)試--元素操作與觸摸動(dòng)作 Appium移動(dòng)端自動(dòng)化測(cè)試--搭建模擬器和真機(jī)環(huán)境 Appium移動(dòng)端自動(dòng)化測(cè)試--測(cè)試用例改造 Appium移動(dòng)端自動(dòng)化測(cè)試--capability使用和常用設(shè)備交互命令
送書(shū)活動(dòng):
留言+分享贈(zèng)書(shū)
免費(fèi)贈(zèng)送技術(shù)類圖書(shū),無(wú)套路,純免費(fèi)!
北大出版社《Python自動(dòng)化測(cè)試實(shí)戰(zhàn)》
(活動(dòng)碼004)
點(diǎn)擊下圖留言送書(shū)
文章合集
Selenium?|?Appium??|?Jenkins??|??Jmeter?
軟件測(cè)試方法匯總?|?Postman接口參數(shù)化?|?測(cè)試用例設(shè)計(jì)?|?安卓APP抓包
視頻教程
Selenium?|?Appium?|?Jenkins?|?Jmeter
微信群:
軟件自動(dòng)化測(cè)試交流群已創(chuàng)建,公號(hào)回復(fù)入群即可獲取入群二維碼。

