前言
在我們開始學習網路編程的時候,我們發現一些名詞出現的頻率極其高,比如 TCP/IP、UDP、OSI 七層網路模型等。這肯定不是偶然,因為它們極其重要,才會被人反覆提及。尤其在面試的時候,面試官喜歡把它們拿來,當作考察面試者基礎功底的重要環節。為了不讓文章顯得冗餘,我們今天只談網路中的 TCP、UDP 和埠
協議、TCP 和 UDP
在瞭解 TCP(Transmission Control Protocol 即傳輸控制協議) 和 UDP(User Datagram Protocol 即用戶數據包協議) 之前,我們先要知道一個名詞,即協議。它到底是什麼?它其實就是一套約定成俗的規則。就像開會的時候,我們達成了一些共識,先開發那個介面,項目什麼時候上線等等。
可以毫不誇張地說計算機網路的構建與發展,奠基石就是各種網路協議。它們定義了信息通訊的方式,以及如何收發信息等,比如:
- IP 協議負責將多個包交換網路連接起來,並管理通訊 IP 源地址和目標地址的協議
- TCP 和 UDP 協議則是位於應用層和 IP 層之間,負責它們之間信息傳輸的重要協議
既然是協議,大家都必須遵守,否則,今天張三定一個協議,李四不同意,他明天再定一個協議,這就亂了套。因此,不同的大廠和許多公司就聯合起來組成一個組織,將這些協議統一規範起來。你就必須得用這些規定好的協議,否則就無法通信。這才實現了「地球村」的夢想。今天無論用什麼設備,在世界的任何角落,用哪種國家的語言,都可以很方便地使用網路進行通信
TCP 和 UDP 的特點
用一個不算嚴謹的說法總結 TCP 就是,女孩子如果遇到 TCP 這樣的男生,就嫁了吧。因為TCP的核心特點就是靠譜。他的特定包括,面向連接、可靠、基於位元組流控制的傳輸,就像一個管道一樣將應用層和 IP 層連接起來
而與之相對應的,UDP 就像二十多歲的浪子。他們不夠可靠,但卻充滿熱情。一切以效率為先,他們可以馬上答應你很多事情,並且願意立馬付出實踐。你這一秒說佛珠浪漫,他不管身處何處,立馬搭飛機給你去取,下一秒說想去聽周杰倫的演唱會,他立馬給你訂票。當然,人的精力和時間都有限,所以就可能出現不可控的意外,比如根本沒有足夠的錢買門票等。這和UDP相仿,它提供無連接通信,但不對傳送的數據包提供可靠性保證
TCP 和 UDP 的特點總結