怎么做網(wǎng)站服務(wù)器嗎seo入門視頻
起源
前二天項(xiàng)目上在核對(duì)外部對(duì)接服務(wù)的五元組列表的時(shí)候,有一位客戶提問對(duì)于同樣的服務(wù)同時(shí)支持tcp和udp二種方式,有什么優(yōu)點(diǎn)和缺點(diǎn),應(yīng)該如何選擇?這個(gè)問題突然讓我愣了一下,確實(shí)好久沒有“溫故”了,相關(guān)的概念都有些模糊了,于是,我整理了一下相關(guān)的知識(shí)體系,秉承分享的精神,重新復(fù)習(xí)記錄如下,供各位同學(xué)有需要的時(shí)候參考。
從RFC上來看
從RFC上截的圖,UDP(RFC768 User Datagram Protocol)只有源端口和目的端口,長(zhǎng)度和校驗(yàn)和,接下來就是數(shù)據(jù)部分。對(duì)比TCP(RFC 9293 Transmission Control Protocol),沒有相關(guān)的面向連接管理的各種控制字段和標(biāo)志位。所以,UDP的特點(diǎn)就是快,實(shí)時(shí)性好,但是不保證傳輸?shù)目煽啃院瓦B接性。
RFC768只有3 pages, RFC9293有98 pages.
關(guān)鍵特性對(duì)比列表
這個(gè)表格對(duì)TCP和UDP協(xié)議進(jìn)行了更詳細(xì)的對(duì)比,包括可靠性、連接性、速度、數(shù)據(jù)包大小以及應(yīng)用場(chǎng)景,及這兩種協(xié)議的特點(diǎn)和差異。
TCP(傳輸控制協(xié)議) | UDP(用戶數(shù)據(jù)報(bào)協(xié)議) | |
---|---|---|
可靠性 | TCP提供可靠的數(shù)據(jù)傳輸服務(wù)。它使用序列號(hào)對(duì)發(fā)送的數(shù)據(jù)包進(jìn)行排序,確保數(shù)據(jù)按照正確的順序到達(dá)接收端。同時(shí),TCP還通過確認(rèn)和重傳機(jī)制確保每個(gè)數(shù)據(jù)包都被成功接收,如果數(shù)據(jù)包在傳輸過程中丟失或損壞,TCP會(huì)重新發(fā)送丟失的數(shù)據(jù)包。 | UDP不保證可靠傳輸。它僅僅將數(shù)據(jù)封裝成數(shù)據(jù)報(bào)并發(fā)送出去,不會(huì)進(jìn)行數(shù)據(jù)包的校驗(yàn)和重傳。因此,UDP可能會(huì)出現(xiàn)數(shù)據(jù)包的丟失、亂序或重復(fù)等問題,適用于對(duì)數(shù)據(jù)傳輸可靠性要求不高的場(chǎng)景。 |
連接性 | TCP是面向連接的協(xié)議。在數(shù)據(jù)傳輸之前,發(fā)送方和接收方需要建立連接,包括三次握手過程,以建立可靠的通信通道。數(shù)據(jù)傳輸結(jié)束后,雙方還需要通過四次揮手來釋放連接。這種連接方式使得TCP能夠控制數(shù)據(jù)傳輸?shù)牧髁亢退俣?#xff0c;并提供更好的數(shù)據(jù)傳輸質(zhì)量。 | UDP是無連接的協(xié)議。發(fā)送方在發(fā)送數(shù)據(jù)之前不需要與接收方建立連接,直接發(fā)送數(shù)據(jù)報(bào)即可。這種方式減少了建立連接的開銷和延遲,使得UDP更適用于實(shí)時(shí)通信或廣播通信等場(chǎng)景。然而,由于沒有連接狀態(tài)的管理,UDP無法提供流量控制和擁塞控制等功能。 |
速度 | 由于TCP需要建立連接、進(jìn)行數(shù)據(jù)包確認(rèn)和重傳等操作,相對(duì)于UDP來說,其傳輸速度可能會(huì)稍慢一些。尤其是在網(wǎng)絡(luò)狀況不佳或數(shù)據(jù)包丟失率較高的情況下,TCP的傳輸效率可能會(huì)受到較大影響。 | UDP的傳輸速度較快。由于不需要建立連接和進(jìn)行復(fù)雜的控制操作,UDP的數(shù)據(jù)報(bào)可以直接發(fā)送到網(wǎng)絡(luò)中,減少了傳輸延遲。這使得UDP適用于對(duì)實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)景,如視頻流傳輸、實(shí)時(shí)游戲等。 |
數(shù)據(jù)包大小 | TCP在傳輸數(shù)據(jù)時(shí),會(huì)根據(jù)網(wǎng)絡(luò)狀況動(dòng)態(tài)調(diào)整數(shù)據(jù)包的大小,以適應(yīng)不同的網(wǎng)絡(luò)環(huán)境。TCP會(huì)將數(shù)據(jù)分割成較小的數(shù)據(jù)塊進(jìn)行傳輸,并在接收端進(jìn)行組裝,以確保數(shù)據(jù)的完整性和順序性。 | UDP沒有數(shù)據(jù)包大小的限制。發(fā)送方可以根據(jù)需要自由設(shè)置數(shù)據(jù)報(bào)的大小,并直接發(fā)送到網(wǎng)絡(luò)中。然而,過大的數(shù)據(jù)包可能會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞或數(shù)據(jù)包丟失,因此在實(shí)際應(yīng)用中需要根據(jù)網(wǎng)絡(luò)狀況和數(shù)據(jù)傳輸需求來合理選擇數(shù)據(jù)包的大小。 |
應(yīng)用場(chǎng)景 | TCP適用于需要可靠、有序的數(shù)據(jù)傳輸?shù)膱?chǎng)景。例如,文件傳輸、網(wǎng)頁(yè)瀏覽、電子郵件等應(yīng)用都依賴于TCP協(xié)議來確保數(shù)據(jù)的完整性和順序性。 | UDP適用于對(duì)實(shí)時(shí)性要求較高,且對(duì)數(shù)據(jù)的完整性要求不高的場(chǎng)景。例如,實(shí)時(shí)視頻流傳輸、在線游戲、VoIP(網(wǎng)絡(luò)電話)等應(yīng)用常使用UDP協(xié)議,因?yàn)樗鼈兏⒅貍鬏斔俣群蛯?shí)時(shí)性,而不是數(shù)據(jù)的完整性。 |
RFC協(xié)議原文本鏈接參考
UDP鏈接: RFC768
TCP鏈接: RFC9293