TCP是面向連接的、可靠傳輸,而UDP是非連接的、不可靠傳輸,TCP建連需要3次握手,會造成delay,UDP更快。
TCP/UDP的區(qū)別上,我是這樣理解的:從北京到杭州,TCP相當于修了一條高鐵線路(建連)再通車發(fā)貨(傳輸數(shù)據(jù)),而UDP相當于寄快遞,丟了不管(直接傳輸數(shù)據(jù))。
TCP/IP是什么?
TCP/IP協(xié)議族是一組協(xié)議的集合,也叫互聯(lián)網(wǎng)協(xié)議族,用來實現(xiàn)互聯(lián)網(wǎng)上主機之間的相互通信。TCP和IP只是其中的2個協(xié)議,也是很重要的2個協(xié)議,所以用TCP/IP來命名這個互聯(lián)網(wǎng)協(xié)議族,實際上,它還包括其他協(xié)議,比如UDP、ICMP、IGMP、ARP/RARP等。
網(wǎng)絡分層
分層是計算機領域的常用技巧,比如互聯(lián)網(wǎng)后端的三層架構“接入-邏輯-存儲”就是分層思想的典型應用。
分層是為了隔離,通過分層劃分職能,拆解問題,層與層之間約定接口,屏蔽實現(xiàn)細節(jié)。
TCP/IP自下到上劃分為鏈路層、網(wǎng)絡層、傳輸層、應用層。下層向上層提供能力,上層利用下層的能力提供更高的抽象。
鏈路層,也稱網(wǎng)絡接口層,包括操作系統(tǒng)的設備驅動程序和網(wǎng)卡,它們一起處理與傳輸媒介(光纖等)的物理接口細節(jié)。
網(wǎng)絡層,也就是IP層,負責處理IP datagram在網(wǎng)絡中的傳輸,IP層傳輸?shù)氖?/font>IP datagram,借助路由表,把IP
datagram從網(wǎng)絡的一端傳輸?shù)搅硪欢?,簡而言之?/font>IP實現(xiàn)包的路由傳輸,IP協(xié)議和路由器工作在網(wǎng)絡層。
傳輸層,提供端到端之間的通信,包括提供面向連接和高可靠性的TCP,以及無連接不可靠的UDP。貌似TCP更好,但實際不是這樣,UDP因為不需要建連開銷,所以更快,應用得也很廣,比如新一代互聯(lián)網(wǎng)協(xié)議HTTP3就從TCP轉向UDP,應根據(jù)適應場景選擇傳輸層協(xié)議。
應用層,跟應用相關,不同應用解決不同問題,需要不同的應用層協(xié)議。
鏈路層處理數(shù)據(jù)在媒介上的傳輸,以及主機與網(wǎng)卡、光纖等打交道的細節(jié)。因為與硬件相關,所以需要借助系統(tǒng)的驅動程序,鏈路層協(xié)議就是定義這些細節(jié)的,比如怎么把數(shù)據(jù)從網(wǎng)卡發(fā)送到光纖,采用什么格式編碼等,它解決的數(shù)據(jù)在媒介上表示、流動的問題
光有鏈路層功能肯定是不夠的,網(wǎng)絡上有成千上萬的機器,主機A與B通信,你不能將數(shù)據(jù)發(fā)到主機C,所以仿照現(xiàn)實,要為主機分配網(wǎng)絡地址,通過IP地址去標識網(wǎng)絡中的一臺主機,發(fā)送一個數(shù)據(jù)包,需要正確路由到目的地,這就好比你從家到公司,要經(jīng)過哪些路徑,需要地圖,而路由表就類似這張地圖。IP解決的是數(shù)據(jù)包在網(wǎng)絡中的傳輸路由的問題。
有了網(wǎng)絡層的傳輸路由能力,還不夠,因為IP報在傳輸過程中可能丟包,比如中間經(jīng)歷過的路由器緩沖區(qū)滿了便會丟包,這樣不可靠,如果需要可靠傳輸?shù)哪芰Γ阈枰獋鬏攲踊?/font>IP層,提供更多的能力,TCP解決了可靠性問題。具體而言,如果丟包了,TCP層會負責超時重傳,它通過接收確認和重傳機制保證了可靠傳輸。另外,因為IP報都是獨立路由的,所以從主機A到主機B,一份數(shù)據(jù)被拆分成x、y兩個IP報先后發(fā)送,這2個包可能選擇不同的傳輸路徑,這樣有可能y包先于x包到達,但我們希望在接收端(主機B)恢復這個數(shù)據(jù)的信息,但我們無法控制IP報的到達順序,所以,我們需要在接收端恢復數(shù)據(jù),我只需要在x、y包里記錄它屬于數(shù)據(jù)塊的哪個部分,然后重組這份數(shù)據(jù),這正是TCP做的,它會重新組裝IP報,從而保證順序性,遞交給應用層。
韓國CN2線路直連中國大陸,在國內(nèi)訪問速度非??欤貏e是沿海地區(qū),韓國CN2線路服務器訪問速度比香港服務器快。韓國網(wǎng)絡采用BGP智能多線,連接世界網(wǎng)絡線路,不僅在我國,在世界范圍內(nèi)訪問速度也非常大。
有時候并不需要保證可靠性和順序性,這便是UDP能提供的,它只是簡單的把數(shù)據(jù)封裝成IP報,然后通過IP層路由發(fā)送到目的端。