摘要:比如旗下的簡歷,推出了物聯(lián)網(wǎng)通信協(xié)議,就是基于協(xié)議的。報(bào)文頭網(wǎng)絡(luò)傳輸層中,是面向連接可靠的字節(jié)流傳輸。位標(biāo)志位作用如下標(biāo)志表示緊急指針是否有效。我們稱攜帶標(biāo)識(shí)的報(bào)文段為確認(rèn)報(bào)文段。標(biāo)志表示通知對(duì)方本端要關(guān)閉連接了。
# TCP與UDP
一,分析TCP與UDP報(bào)文
TCP與UDP都是位于OSI模型傳輸層的兩個(gè)協(xié)議
(1)UDP的報(bào)文頭:
如上圖:UDP基本組成包括16位的源端口號(hào)和目的端口號(hào)+數(shù)據(jù)
通過源端口號(hào)和目的端口號(hào)來進(jìn)行傳輸;數(shù)據(jù)部分為保存的具體內(nèi)容
UDP的特點(diǎn):
????????????? 1,溝通簡單,不需要處理邏輯、和數(shù)據(jù)結(jié)構(gòu);
????????????? 2,不會(huì)建立連接,但是會(huì)監(jiān)聽這個(gè)地方,誰的數(shù)據(jù)都接收,也會(huì)傳輸數(shù)據(jù)給別人;
????????????? 3,二愣子,傳輸完數(shù)據(jù)不管是否丟包,是否會(huì)擁塞;
基于UDP實(shí)現(xiàn)例子
①直播,直播對(duì)實(shí)時(shí)性的要求比較高,寧可丟包,也不要卡頓的,所以很多直播應(yīng)用都基于 UDP 實(shí)現(xiàn)了自己的視頻傳輸協(xié)議。
②實(shí)時(shí)的游戲,游戲的特點(diǎn)也是實(shí)時(shí)性比較高,在這種情況下,采用自定義的可靠的 UDP 協(xié)議,自定義重傳策略,能夠把產(chǎn)生的延遲降到最低,減少網(wǎng)絡(luò)問題對(duì)游戲造成的影響。
③物聯(lián)網(wǎng)。一方面,物聯(lián)網(wǎng)領(lǐng)域中斷資源少,很可能知識(shí)個(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é)議的。
(2)TCP報(bào)文頭
網(wǎng)絡(luò)傳輸層中,TCP是面向連接、可靠的、字節(jié)流傳輸。
TCP協(xié)議通信雙方必須先建立連接,通信雙方必須為該連接分配必要的內(nèi)核資源,以管理連接的狀態(tài)和連接上數(shù)據(jù)的傳輸。TCP是全雙工的,即雙方的數(shù)據(jù)讀寫可通過一個(gè)連接進(jìn)行。完成數(shù)據(jù)交換之后,通信雙方都必須斷開連接以釋放系統(tǒng)資源。
TCP協(xié)議的這種連接是一對(duì)一的,它的字節(jié)流服務(wù)是多對(duì)多的,所以基于廣播和多播(目標(biāo)是多個(gè)主機(jī)地址)的應(yīng)用程序不能使用TCP服務(wù)。而無連接的UDP則十分適合這種廣播和多播。
?
?從上往下看報(bào)文結(jié)構(gòu),分析如下:
首先,可以看到16位源端口和目標(biāo)端口號(hào)。和UDP一樣
包的序號(hào):解決亂序問題,先來后到
32位確認(rèn)號(hào)(acknowledgement number):用作對(duì)另一方發(fā)送來的TCP報(bào)文段的響應(yīng)。其值是收到的TCP報(bào)文段的序號(hào)值加1。
6位標(biāo)志位作用如下:
URG標(biāo)志:表示緊急指針(urgent pointer)是否有效。
ACK標(biāo)志:表示確認(rèn)號(hào)是否有效。我們稱攜帶ACK標(biāo)識(shí)的TCP報(bào)文段為確認(rèn)報(bào)文段。
PSH標(biāo)志:提示接收端應(yīng)用程序應(yīng)該立即從TCP接收緩沖區(qū)中讀走數(shù)據(jù),為接收后續(xù)數(shù)據(jù)騰出空間(如果應(yīng)用程序不將接收
到的數(shù)據(jù)讀走,它們就會(huì)一直停留在TCP接收緩沖區(qū)中)。
RST標(biāo)志:表示要求對(duì)方重新建立連接。我們稱攜帶RST標(biāo)志的TCP報(bào)文段為復(fù)位報(bào)文段。
SYN標(biāo)志:表示請(qǐng)求建立一個(gè)連接。我們稱攜帶SYN標(biāo)志的TCP報(bào)文段為同步報(bào)文段。
FIN標(biāo)志:表示通知對(duì)方本端要關(guān)閉連接了。我們稱攜帶FIN標(biāo)志的TCP報(bào)文段為結(jié)束報(bào)文段。
狀態(tài)位,SYN是發(fā)起一個(gè)鏈接,ACK是回復(fù),RST是重新連接,F(xiàn)IN是結(jié)束連接。
因?yàn)門CP是面向連接的,因此需要雙方維護(hù)連接的狀態(tài),不然雙方連接狀態(tài)的變化會(huì)直接導(dǎo)致出錯(cuò);
窗口的大小設(shè)置,進(jìn)行流量控制,標(biāo)識(shí)自己當(dāng)前的處理能力;它告訴對(duì)方本端的TCP接收緩沖區(qū)還能容納多少字節(jié)的數(shù)據(jù),這樣對(duì)方就可以控制發(fā)送數(shù)據(jù)的速度。
其次,TCP 的順序問題,丟包問題,流量控制都是通過滑動(dòng)窗口來解決的
擁塞控制時(shí)也是通過擁塞窗口來解決的。
延伸常談的一些問題:順序問題、擁塞控制、丟包問題、連接維護(hù)、流量控制
二,TCP 的三次握手
首先建立連接,連接后需要連接維護(hù),同時(shí)商量如何順序發(fā)送包,也就是處理好包的序號(hào)問題
TCP 的建立連接稱為三次握手,簡單來說就是鄰居之間日常問候,①老張對(duì)老李說;吃飯了不;②老李看到老張消息,回復(fù)說:吃了沒吃飽啊,還要整點(diǎn)夜宵不;③老張收到老李消息:可以啊,走起。
理解來說就是,老張發(fā)送了吃飯請(qǐng)求也收到了老力吃了的響應(yīng),老李收到了老張請(qǐng)求消息并響應(yīng)了老張的請(qǐng)求。雙方有來有回,和打太極一樣。
詳解分析具體過程
?分析圖中的具體字段意思:closed(未連接)、listen(監(jiān)聽)、SYN-SENT(同步發(fā)送)、SYN-RCVD(同步收到)、ESTABLISHED(建立連接)
分析過程:
①初始狀態(tài),客戶端和服務(wù)器都處于 CLOSED 狀態(tài),然后這時(shí)服務(wù)端主動(dòng)監(jiān)聽某個(gè)端口,處于 LISTEN 狀態(tài)。
②客戶端主動(dòng)發(fā)起連接 SYN(請(qǐng)求建立連接),之后處于 SYN-SENT 狀態(tài),被服務(wù)器端監(jiān)聽到。
③服務(wù)端接收了客戶端發(fā)起的連接,并返回 SYN(請(qǐng)求建立連接),并且 ACK ( 確認(rèn) ) 客戶端的 SYN,然后處于 SYN-SENT 狀態(tài)。
④客戶端接收到服務(wù)端發(fā)送的 SYN 和 ACK ,確認(rèn)了服務(wù)端的請(qǐng)求即ACK了,進(jìn)入了ESTABLISHED狀態(tài)。然后將它確認(rèn)連接的消息發(fā)送給了服務(wù)器。
⑤服務(wù)器收到了客戶端的ACK,也進(jìn)入ESTABLISHED狀態(tài)。至此這兩兄弟建立友誼連接;
四,TCP與UDP的區(qū)別
五,為什么說TCP可以實(shí)現(xiàn)可靠連接
? (1) 排好隊(duì),一個(gè)一個(gè)來,按部就班的進(jìn)行,有條不紊; TCP 報(bào)文頭里面的序號(hào)能使 TCP 的數(shù)? 據(jù)按序到達(dá),從而使傳輸?shù)臄?shù)據(jù)無差錯(cuò)的,不丟失,不重復(fù),且按順序到達(dá)。
(2)誰遲到,誰沒來,都要明確;報(bào)文頭里面的確認(rèn)序號(hào)能保證不丟包,累計(jì)確認(rèn)及超時(shí)重傳機(jī)制
(3)飯量時(shí)時(shí)管控好,不然肉肉來找抱;報(bào)文頭的窗口大小,進(jìn)行流量控制,標(biāo)識(shí)自己當(dāng)前的處理能力;它告訴對(duì)方本端的TCP接收緩沖區(qū)還能容納多少字節(jié)的數(shù)據(jù),這樣對(duì)方就可以控制發(fā)送數(shù)據(jù)的速度。
各位道友學(xué)習(xí)之后有建議可以共同探討探討哦
一步兩步往上沖~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/118884.html
摘要:協(xié)議族的構(gòu)成數(shù)據(jù)鏈路層網(wǎng)絡(luò)層傳輸層應(yīng)用層和是網(wǎng)絡(luò)層的協(xié)議,但是它所工作的內(nèi)容是鏈路層的。。。發(fā)送的時(shí)候,協(xié)議為每個(gè)包編號(hào),簡稱,以便接收的一方按照順序還原。并沒有提供任何機(jī)制,表示原始文件的大小,這由應(yīng)用層的協(xié)議來規(guī)定。 TCP/IP協(xié)議族的構(gòu)成 * 數(shù)據(jù)鏈路層:ARP,RARP * 網(wǎng)絡(luò)層: IP,ICMP,IGMP * 傳輸層:TCP ,UDP,UGP * 應(yīng)用層:Telnet,F...
摘要:該狀態(tài)會(huì)持續(xù)最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄時(shí)間,若該時(shí)間段內(nèi)沒有的重發(fā)請(qǐng)求的話,就進(jìn)入狀態(tài)。 引言 網(wǎng)絡(luò)協(xié)議是每個(gè)前端工程師都必須要掌握的知識(shí),TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議,分別是 TCP 和 UDP,本文將介紹下這兩者以及它們之間的區(qū)別。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客 一、TCP/IP網(wǎng)絡(luò)模型 計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須...
摘要:該狀態(tài)會(huì)持續(xù)最大段生存期,指報(bào)文段在網(wǎng)絡(luò)中生存的時(shí)間,超時(shí)會(huì)被拋棄時(shí)間,若該時(shí)間段內(nèi)沒有的重發(fā)請(qǐng)求的話,就進(jìn)入狀態(tài)。 引言 網(wǎng)絡(luò)協(xié)議是每個(gè)前端工程師都必須要掌握的知識(shí),TCP/IP 中有兩個(gè)具有代表性的傳輸層協(xié)議,分別是 TCP 和 UDP,本文將介紹下這兩者以及它們之間的區(qū)別。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客 一、TCP/IP網(wǎng)絡(luò)模型 計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須...
摘要:代表傳輸控制協(xié)議網(wǎng)際協(xié)議,指的是一系列協(xié)議。,傳輸控制協(xié)議是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。第二是超文本傳輸協(xié)議,信息是明文傳輸,則是具有安全性的加密傳輸協(xié)議。 IP:網(wǎng)絡(luò)層協(xié)議; TCP和UDP:傳輸層協(xié)議; HTTP:應(yīng)用層協(xié)議; SOCKET:TCP/IP網(wǎng)絡(luò)的API。 TCP/IP代表傳輸控制協(xié)議/網(wǎng)際協(xié)議,指的是一系列協(xié)議。 T...
摘要:在網(wǎng)絡(luò)層有協(xié)議協(xié)議協(xié)議協(xié)議和協(xié)議。而且,因?yàn)橛写_認(rèn)機(jī)制三次握手機(jī)制,這些也導(dǎo)致容易被人利用,實(shí)現(xiàn)等攻擊。沒有的這些機(jī)制,較被攻擊者利用的漏洞就要少一些。但也是無法避免攻擊的,比如攻擊缺點(diǎn)不可靠,不穩(wěn)定。 簡介 HTTP協(xié)議(超文本傳輸協(xié)議)和 UDP(用戶數(shù)據(jù)包協(xié)議),TCP 協(xié)議(傳輸控制協(xié)議) TCP/IP是個(gè)協(xié)議組,可分為四個(gè)層次:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。在網(wǎng)絡(luò)層有I...
閱讀 3267·2021-11-24 09:38
閱讀 2148·2021-11-23 09:51
閱讀 1737·2021-10-13 09:39
閱讀 2610·2021-09-23 11:53
閱讀 1394·2021-09-02 15:40
閱讀 3648·2019-08-30 15:54
閱讀 1121·2019-08-30 13:04
閱讀 2552·2019-08-30 11:01