面試的時(shí)候經(jīng)常會(huì)問(wèn)到TCP和UDP的區(qū)別,他們倆都屬于傳輸層協(xié)議豹悬,看了極客時(shí)間的趣談網(wǎng)絡(luò)協(xié)議之后總結(jié)下葵陵。
從特點(diǎn)上看他們的區(qū)別如下:
1、TCP是面向連接的瞻佛,而UDP是面向無(wú)連接脱篙,那什么是連接呢?其實(shí)就是客戶端和服務(wù)端之間的狀態(tài)(連接狀態(tài))伤柄,我們知道TCP通信時(shí)有三次握手和四次揮手的過(guò)程绊困,這里面其實(shí)就是創(chuàng)建連接和釋放連接的過(guò)程,具體過(guò)程參考整理的TCP抓包過(guò)程适刀;
2秤朗、TCP是可靠的,UDP是不可靠的笔喉,前面提到TCP和UDP的連接問(wèn)題取视,就是因?yàn)門(mén)CP是連接的,所以它可以實(shí)現(xiàn)數(shù)據(jù)的可靠性達(dá)到常挚,保證數(shù)據(jù)正常傳輸作谭,而UDP就不一樣,他只管發(fā)奄毡,發(fā)完之后也不去管客戶端是否收到了折欠,所以他是不可靠的;
3吼过、TCP傳遞時(shí)都需要建立連接锐秦,而且TCP的數(shù)據(jù)格式內(nèi)容比較多,所以這在性能(實(shí)時(shí)性)上相比于UDP來(lái)說(shuō)是比較差的盗忱,UDP比較直接酱床,直接傳;
4趟佃、TCP便于控制斤葱,從字面上將我們就是“傳輸控制協(xié)議”慷垮,也就說(shuō)可以控制傳輸,這里面我理解主要是擁塞控制和流量控制揍堕,通過(guò)這種技術(shù)可以控制整個(gè)網(wǎng)絡(luò)的質(zhì)量,避免網(wǎng)絡(luò)擁堵汤纸,具體細(xì)節(jié)實(shí)現(xiàn)目前還將不清楚衩茸;
5、TCP基于流模式贮泞,UDP數(shù)據(jù)報(bào)模式 楞慈;
6、有序性:TCP 利用序列號(hào)保證了消息包的的順序交付啃擦,到達(dá)可能無(wú)序囊蓝,但 TCP 會(huì)排序;
使用場(chǎng)景上看:
由于TCP是可靠的令蛉、面向連接的聚霜,所以更適合對(duì)通信傳輸可靠性較高的場(chǎng)景,常用的:Telnet珠叔、FTP蝎宇、SMTP、HTTP祷安,HTTP是最普遍最廣泛的基于TCP協(xié)議基礎(chǔ)上的應(yīng)用層協(xié)議姥芥,UDP適合實(shí)時(shí)性較高的場(chǎng)景,比如:流媒體協(xié)議汇鞭、實(shí)時(shí)游戲凉唐、IOT物聯(lián)網(wǎng)、移動(dòng)通信領(lǐng)域霍骄,還有就是對(duì)數(shù)據(jù)可靠性要求比較的場(chǎng)景台囱,比如:DNS、DHCP
數(shù)據(jù)格式上看:
TCP的報(bào)文格式:
UDP的報(bào)文格式:
同樣抓包看下腕巡,影像比較深刻玄坦,如下:
UDP:
TCP: