首先咱們弄清楚,TCP協(xié)議和UCP協(xié)議與TCP/IP協(xié)議的聯(lián)系,很多人犯糊涂了,一直都是說TCP/IP協(xié)議與UDP協(xié)議的區(qū)別,我覺得這是沒有從本質(zhì)上弄清楚網(wǎng)絡(luò)通信!
TCP/IP協(xié)議是一個(gè)協(xié)議簇。里面包括很多協(xié)議的。UDP只是其中的一個(gè)。之所以命名為TCP/IP協(xié)議,因?yàn)門CP,IP協(xié)議是兩個(gè)很重要的協(xié)議,就用他兩命名了。
TCP/IP協(xié)議集包括應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,網(wǎng)絡(luò)訪問層。
其中應(yīng)用層包括:
超文本傳輸協(xié)議(HTTP):萬維網(wǎng)的基本協(xié)議。
文件傳輸(TFTP簡(jiǎn)單文件傳輸協(xié)議):
遠(yuǎn)程登錄(Telnet),提供遠(yuǎn)程訪問其它主機(jī)功能,它允許用戶登錄
internet主機(jī),并在這臺(tái)主機(jī)上執(zhí)行命令。
網(wǎng)絡(luò)管理(SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議),該協(xié)議提供了監(jiān)控網(wǎng)絡(luò)設(shè)備的方法,以及配置管理,統(tǒng)計(jì)信息收集,性能管理及安全管理等。
域名系統(tǒng)(DNS),該系統(tǒng)用于在internet中將域名及其公共廣播的網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)換成IP地址。
其次網(wǎng)絡(luò)層包括:
Internet協(xié)議(IP)
Internet控制信息協(xié)議(ICMP)
地址解析協(xié)議(ARP)
反向地址解析協(xié)議(RARP)
最后說網(wǎng)絡(luò)訪問層:網(wǎng)絡(luò)訪問層又稱作主機(jī)到網(wǎng)絡(luò)層(host-to-network)。網(wǎng)絡(luò)訪問層的功能包括IP地址與物理地址硬件的映射,以及將IP封裝成幀?;诓煌布愋偷木W(wǎng)絡(luò)接口,網(wǎng)絡(luò)訪問層定義了和物理介質(zhì)的連接。
當(dāng)然我這里說得不夠完善,TCP/IP協(xié)議本來就是一門學(xué)問,每一個(gè)分支都是一個(gè)很復(fù)雜的流程,但我相信每位學(xué)習(xí)軟件開發(fā)的同學(xué)都有必要去仔細(xì)了解一番。
?
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ì)很容易丟包。 基于上面的優(yōu)缺點(diǎn),那么: 什么時(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é)議。 在日常生活中,常見使用TCP協(xié)議的應(yīng)用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件傳輸 ………… 什么時(shí)候應(yīng)該使用UDP: 當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP。 比如,日常生活中,常見使用UDP協(xié)議的應(yīng)用如下: QQ語音 QQ視頻 TFTP ……
有些應(yīng)用場(chǎng)景對(duì)可靠性要求不高會(huì)用到UPD,比如長(zhǎng)視頻,要求速率