TCP/IP協議,你一定經常聽說吧,其中TCP(Transmission Control Protocol)稱為傳輸控制協議,IP(Internet Protocol)稱為因特網互聯協議,好吧,這都是什么2B名字,根本不知所云,這個時候,計算機科學對于一個沒有經過深入研究的人,毫無用戶體驗可言。
其實TCP/IP協議,是一個協議簇,就是一大堆協議的集合,這一大套協議定義了整個互聯網通信的基礎,比如一次網絡鏈接要經過哪些步驟,一塊數據傳輸過程中應該如何解釋,這塊數據該如何展示給編程者等等問題。就好比小時候玩過家家的游戲,誰負責當爸,誰負責當媽,誰負責當兒子,都有明確的指派,誰負責買菜,買菜之后的錢交給誰來管理,如果沒花了,怎么辦,每天應該幾點起床,起床之后應該誰疊被,都會明確指出,每個人都會默默遵從人物角色和規則。TCP/IP整個協議集合大概做的就是這個事情,他包含了很多個不同的角色(對應于協議),并定義好了數據如何傳輸,不同角色之間如何協商。
理解了TCP/IP是什么,你應該可以看懂一些簡單的技術博客或百度百科里面的一些描述了,時時刻刻認為,它里面包涵很多個協議,這些協議就是一整套規則,它定義了整個互聯網如何連接,如何協商的最基礎規則。
TCP/IP協議又分為了4層,分別為應用層,傳輸層,IP層,物理層。
重點介紹下傳輸層,也就是TCP,UDP兩個協議,也是今天最想描述清楚的。TCP的英文前面抄寫過了,UDP(User Datagram Protocol),也是讀過之后根本不懂啥意思了。
反正這兩個協議,是用來傳輸數據的,因為他們叫傳輸層嘛,那不做這個事情,毫無用處了。
我們想象一個場景,網絡中任意兩個端要通信,會采用什么樣的傳輸方式呢?
想象下人類之間的通信吧。
第一種是撥電話,我撥通了你的手機號碼,直到你回答“喂,你好”,我聽到了這個話之后,我們之間才繼續進行交談。
第二種是發短信,我給你的手機號碼發送一條短信,然后就沒有然后了,有可能你沒收到,有可能你收到了一會兒又給我回復。
第一種對應的就是TCP,第二種對應的是UDP,TCP是需要對方確認的,也就是傳輸之前需要進行“三次握手”(這里又是一個專有名詞,就是傳輸的兩端要經過三次確認,才能開始通信)。UDP是比較粗暴的,不管對方什么情況,直接發送,不需要確認過程。
很多博客和書籍中說的,TCP是可靠的鏈接(因為中間有個Control的單詞,帶上了這個單詞,以為著更可靠哦),UDP是不可靠的鏈接就是這個意思。可靠的鏈接帶來的是效率的下降,比如一次網絡請求很大一部分時間都是浪費在互相確認的過程當中,資源消耗比較多,但是保證了數據的傳輸是可靠的,并且數據傳輸是有序的。不可靠的鏈接帶來的是效率的提升,但可能服務質量有下降。
今天想寫這個,主要是想擺脫一種人為的誤區,不要以為UDP不可靠,就沒有什么應用場景,據說QQ發送數據就是靠UDP發送的呢,雖然是不可靠的鏈接,但是還是用了很多校驗算法保證了數據質量的穩定,同時保證了效率。TCP雖然耗時,但是對于穩定性優先的場景,還是應該有限選用TCP,比如瀏覽器中訪問網頁用的就是TCP。此外在一些長連接系統里面,比如微信,連接通道應該也是用TCP建立的,因為要維護一條穩定的信息傳輸通道。
具體協議是如何控制的,數據包是如何傳輸的,怎么校驗數據的正確性,還有重傳特性,這些都是協議中重要的控制過程,但是不做詳述了,不但枯燥,而且對于實際的產品并沒有什么卵用。具體選用什么樣的數據傳輸方式,應該根據場景而定。
-
IP
+關注
關注
5文章
1708瀏覽量
149556 -
TCP
+關注
關注
8文章
1353瀏覽量
79078 -
計算機科學
+關注
關注
1文章
144瀏覽量
11361 -
傳輸控制
+關注
關注
0文章
6瀏覽量
6476
發布評論請先 登錄
相關推薦
評論