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