TCP与UDP特点与区别
TCP/IP協(xié)議
IP地址(IP Address)
計(jì)算機(jī)分布在世界各地,要想和它們通信,必須要知道確切的位置。確定計(jì)算機(jī)位置的方式有多種,IP 地址是最常用的,例如,114.114.114.114 是國(guó)內(nèi)第一個(gè)、全球第三個(gè)開放的 DNS 服務(wù)地址,127.0.0.1 是本機(jī)地址。
其實(shí),我們的計(jì)算機(jī)并不知道 IP 地址對(duì)應(yīng)的地理位置,當(dāng)要通信時(shí),只是將 IP 地址封裝到要發(fā)送的數(shù)據(jù)包中,交給路由器去處理。路由器有非常智能和高效的算法,很快就會(huì)找到目標(biāo)計(jì)算機(jī),并將數(shù)據(jù)包傳遞給它,完成一次單向通信。
目前大部分軟件使用 IPv4 地址,但 IPv6 也正在被人們接受,尤其是在教育網(wǎng)中,已經(jīng)大量使用。
端口(Port)
有了 IP 地址,雖然可以找到目標(biāo)計(jì)算機(jī),但仍然不能進(jìn)行通信。一臺(tái)計(jì)算機(jī)可以同時(shí)提供多種網(wǎng)絡(luò)服務(wù),例如Web服務(wù)、FTP服務(wù)(文件傳輸服務(wù))、SMTP服務(wù)(郵箱服務(wù))等,僅有 IP 地址,計(jì)算機(jī)雖然可以正確接收到數(shù)據(jù)包,但是卻不知道要將數(shù)據(jù)包交給哪個(gè)網(wǎng)絡(luò)程序來處理,所以通信失敗。
為了區(qū)分不同的網(wǎng)絡(luò)程序,計(jì)算機(jī)會(huì)為每個(gè)網(wǎng)絡(luò)程序分配一個(gè)獨(dú)一無二的端口號(hào)(Port Number),例如,Web服務(wù)的端口號(hào)是 80,FTP 服務(wù)的端口號(hào)是 21,SMTP 服務(wù)的端口號(hào)是 25。
端口(Port)是一個(gè)虛擬的、邏輯上的概念。可以將端口理解為一道門,數(shù)據(jù)通過這道門流入流出,每道門有不同的編號(hào),就是端口號(hào)。
協(xié)議(Protocol)
協(xié)議(Protocol)就是網(wǎng)絡(luò)通信的約定,通信的雙方必須都遵守才能正常收發(fā)數(shù)據(jù)。協(xié)議有很多種,例如 TCP、UDP、IP 等,通信的雙方必須使用同一協(xié)議才能通信。協(xié)議是一種規(guī)范,由計(jì)算機(jī)組織制定,規(guī)定了很多細(xì)節(jié),例如,如何建立連接,如何相互識(shí)別等。
協(xié)議僅僅是一種規(guī)范,必須由計(jì)算機(jī)軟件來實(shí)現(xiàn)。例如 IP 協(xié)議規(guī)定了如何找到目標(biāo)計(jì)算機(jī),那么各個(gè)開發(fā)商在開發(fā)自己的軟件時(shí)就必須遵守該協(xié)議,不能另起爐灶。
所謂協(xié)議族(Protocol Family),就是一組協(xié)議(多個(gè)協(xié)議)的統(tǒng)稱。最常用的是 TCP/IP 協(xié)議族,它包含了 TCP、IP、UDP、Telnet、FTP、SMTP 等上百個(gè)互為關(guān)聯(lián)的協(xié)議,由于 TCP、IP 是兩種常用的底層協(xié)議,所以把它們統(tǒng)稱為 TCP/IP 協(xié)議族。
TCP UDP 介紹
TCP(Transmission Control Protocol,傳輸控制協(xié)議):是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。
UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議):,是 OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。
TCP UDP 特點(diǎn)
TCP特點(diǎn):
1、tcp是面向連接的,通信之前需要建立連接,通信結(jié)束之后還需釋放連接(三次握手,四次揮手)
2、tcp提供了很可靠的支付服務(wù),可靠也就是說:tcp的數(shù)據(jù)沒有重復(fù)、沒有丟失、沒有錯(cuò)誤、并且和發(fā)送端的數(shù)據(jù)是一致的。
3、tcp是面向字節(jié)流的。也就是tcp是以字節(jié)為單位,雖然傳輸?shù)倪^程中數(shù)據(jù)被劃分為了一個(gè)一個(gè)數(shù)據(jù)報(bào)文,但是這只是為了方便傳輸,接收端最終接受到的數(shù)據(jù)和發(fā)送端接收到的數(shù)據(jù)是一樣的。
4、tcp提供全雙工通信:就是tcp的兩端即可以作為發(fā)送端,也可以作為接收端。
5、最重要的一點(diǎn)就是一個(gè)tcp的連接只能有兩個(gè)端點(diǎn),支持一對(duì)一通信。
6、tcp首部含有20個(gè)字節(jié)。
UDP特點(diǎn):
1、首先udp是無連接的,通信結(jié)束也不需要釋放連接。
2、upd是一種不可靠的協(xié)議,發(fā)出去就不管了。
3、udp是一種面向報(bào)文的鏈接;udp數(shù)據(jù)傳輸?shù)膯挝皇菆?bào)文,而且不會(huì)對(duì)數(shù)據(jù)做任何的拆分和拼接操作。在發(fā)送端,應(yīng)用程序給傳輸層的udp什么樣的數(shù)據(jù),udp不會(huì)對(duì)數(shù)據(jù)進(jìn)行拆分,最會(huì)增加一個(gè)udp頭并且交給網(wǎng)絡(luò)層。在接收端,udp收到網(wǎng)絡(luò)層的數(shù)據(jù)之后,除去ip(網(wǎng)絡(luò)層協(xié)議)數(shù)據(jù)報(bào)頭部后便交給應(yīng)用層,不會(huì)做任何的拼接操作。
4、udp是不存在擁塞控制的,并且始終就是用恒定的速率發(fā)送數(shù)據(jù),并不會(huì)根據(jù)網(wǎng)絡(luò)擁塞情況對(duì)發(fā)送速率做調(diào)整。這個(gè)狀況下就會(huì)存在優(yōu)勢(shì)和弊端;弊端就是:網(wǎng)絡(luò)擁塞時(shí)有些報(bào)文就會(huì)丟失,所以才說udp是不可靠的協(xié)議;他的優(yōu)點(diǎn)就是有些使用場(chǎng)景允許報(bào)文丟失,比如:直播,語音通話,但是對(duì)實(shí)時(shí)性要求比較高。
5、udp支持一對(duì)一,一對(duì)多,多對(duì)多,多對(duì)一通信。
6、udp首部的開銷比較小,只有8個(gè)字節(jié)。相對(duì)于tcp來說,效率還是很高的。
TCP UDP 優(yōu)缺點(diǎn)
TCP優(yōu)點(diǎn):可靠,穩(wěn)定。tcp的可靠體現(xiàn)在tcp在傳遞數(shù)據(jù)之前,會(huì)有三次握手來建立連接,而且在數(shù)據(jù)傳遞時(shí),有確認(rèn),窗口,重傳,擁塞控制機(jī)制,在數(shù)據(jù)傳完后,還會(huì)斷開連接用來節(jié)約系統(tǒng)資源。
TCP缺點(diǎn):速度慢,效率低,占用系統(tǒng)資源高,易被攻擊。TCP在傳遞數(shù)據(jù)之前,要先建連接,這會(huì)消耗時(shí)間,而且在數(shù)據(jù)傳遞時(shí),確認(rèn)機(jī)制,重傳機(jī)制,擁塞機(jī)制等都會(huì)消耗大量的時(shí)間,而且要在每臺(tái)設(shè)備上維護(hù)所有的傳輸連接,事實(shí)上,每個(gè)連接都會(huì)占用系統(tǒng)的CPU,內(nèi)存等硬件資源。而且,因?yàn)門CP有確認(rèn)機(jī)制,三次握手機(jī)制,這些也導(dǎo)致TCP容易被人利用,實(shí)現(xiàn)DOS,DDOS,CC等攻擊。
UDP優(yōu)點(diǎn):速度快,比TCP稍安全。UDP沒有TCP的握手,確認(rèn),窗口,重傳,擁塞控制等機(jī)制。UDP是一個(gè)無狀態(tài)的傳輸協(xié)議,所以它在傳遞數(shù)據(jù)時(shí)非常快。沒有TCP的這些機(jī)制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的。比如:UDP Flood攻擊。
UDP缺點(diǎn):不可靠,不穩(wěn)定。因?yàn)閁DP沒有TCP那些可靠的機(jī)制,在數(shù)據(jù)傳遞時(shí),如果網(wǎng)絡(luò)質(zhì)量不好,就會(huì)容易丟包。
TCP UDP 區(qū)別
TCP基于連接,需要經(jīng)過三次握手建立可靠連接,可簡(jiǎn)單類比打電話過程:A打給B(1),B接通電話并向A問好(2),A聽到B的問好后向B問好(3),之后開始聊正事,且聊天過程式實(shí)時(shí)同步有序的。
UDP不基于連接,類似于線上聊天,給對(duì)方發(fā)消息不經(jīng)過對(duì)方同意,發(fā)送的消息對(duì)方可能未收到,也可能收到亂序的消息。
| 是否連接 | 無連接 | 連接 |
| 是否可靠 | 不可靠傳輸,不使用流量控制和擁塞控制 | 可靠傳輸,使用流量控制和擁塞控制 |
| 占用資源 | 少 | 多 |
| 連接對(duì)象個(gè)數(shù) | 支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多交互通信 | 只能是一對(duì)一通信 |
| 傳輸方式 | 面向報(bào)文 | 面向字節(jié)流 |
| 首部開銷 | 首部開銷小,僅8字節(jié) | 首部最小20字節(jié),最大60字節(jié) |
| 適用場(chǎng)景 | 適用于實(shí)時(shí)應(yīng)用(IP電話、視頻會(huì)議、直播等) | 適用于要求可靠傳輸?shù)膽?yīng)用,例如文件傳輸 |
總結(jié)
以上是生活随笔為你收集整理的TCP与UDP特点与区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode114. 二叉树展开为链
- 下一篇: leetcode61 旋转链表