網(wǎng)絡(luò)小結(jié)(2)——TCP/UDP

正文

1. TCP與UDP:

在網(wǎng)絡(luò)體系結(jié)構(gòu)中我們提過TCP/IP的四層網(wǎng)絡(luò)層級:


image.png

而TCP(Transmisson Control Protocol,即傳輸控制協(xié)議)和UDP(User Datagram Protocol 即用戶數(shù)據(jù)報協(xié)議)是在傳輸層的,所以我們知道UDP和TCP是用來傳輸數(shù)據(jù)的一種協(xié)議副硅,為主機中不同進程提供通信屋摇,那既然是傳輸數(shù)據(jù)羞迷,我們舉例以快遞盒寄信的邏輯來說明猴凹。

TCP像快遞揽思,寄快遞現(xiàn)在都有物流信息悉抵,最后是否簽收了我的快遞肩狂。如果丟件也會通知給你反饋。而UDP更像寄信姥饰,收不收得到我也不管傻谁。

對比與UDP,TCP的傳輸是可靠的媳否、無差錯的栅螟。

1.1 TCP通道的連接及斷開

既然數(shù)據(jù)是從一個地方到另一個地方,我們要先建立一個通道篱竭,這樣數(shù)據(jù)才能傳輸流動力图。

TCP三次握手,四次揮手掺逼,這個就是用來建立這個通道及斷開通道吃媒。

三次握手:

  1. A發(fā)信息給B:你在不在啊吕喘?急事W改恰!
  2. B發(fā)信息給A:我在啊氯质,急事募舟?那你快告訴我,我這邊時刻聽著你說闻察。

不幸的是A這時候拉肚子拱礁,只能馬上跑去廁所了琢锋,然后一拉就是半個小時,然后B就一直等了半個小時呢灶。

這時候你是不是發(fā)現(xiàn)了二次握手的問題了吴超,如果第二次B發(fā)送給A的話后,A沒有馬上回相應(yīng)的信息給B鸯乃,B就可以認為A已經(jīng)不在了鲸阻,從而不再等它,也不建立通道缨睡。

所以應(yīng)該是這樣:

  1. A發(fā)信息給B:你在不在澳胥病?急事=蹦辍遣臼!
  2. B發(fā)信息給A:我在啊,急事拾并?那你快告訴我,我這邊時刻聽著你說鹏浅。
  3. A發(fā)信息給B:事情是這樣的嗅义。你聽我慢慢道來。
    balabala.......
    balabala.......
    balabala.......

然后A和B之間的通道就通了隐砸,然后A這時候可以給B不停的發(fā)信息了之碗。

然后有人會問,TCP 又不會拉肚子季希,那TCP為啥要三次褪那,因為如果規(guī)定二次的話: A 發(fā)給B信息,申請建立通道式塌,因為網(wǎng)絡(luò)延遲博敬,B一直沒收到,這時候A等的不耐煩了峰尝,直接就退出了偏窝,但是過了一會兒B收到了這個信息,B以為A是剛發(fā)的請求武学,所以建立了通道祭往,但是A其實早就已經(jīng)不在了。這樣防止B形成死鎖火窒、浪費資源等硼补。

當(dāng)然上面是我們舉得例子,具體肯定是通過一些值來傳遞:具體的圖是這樣的:

image.png
image.png

四次揮手

我們知道TCP連接之后我們可以互相之間發(fā)消息了熏矿,這里假設(shè)通道里包含了兩個小通道已骇,一個是A發(fā)給B的离钝,一個是B發(fā)給A的,這樣當(dāng)我們斷開連接的時候有兩大步疾捍。

  1. 斷開A發(fā)給B信息的通道
  2. 斷開B發(fā)給A信息的通道

我們先看斷開A發(fā)給B信息的通道:

A發(fā)信息給B:我累了奈辰,我先睡了,88.
B發(fā)信息給A:好的乱豆,那你先睡吧奖恰。

這時候A就睡覺了,A也不會發(fā)信息給B了宛裕。但是這時候B還是可以繼續(xù)給A發(fā)信息瑟啃,B可能深夜突然來個深情告白

B發(fā)信息給A: 其實我XXXXXXXX。

所以單純二次揮手是不夠的揩尸,還要斷開B發(fā)給A信息的通道:

B發(fā)信息給A:不過你說你要睡了蛹屿,我覺得是比較晚了,我也要睡了岩榆,晚安错负。
A發(fā)信息給B: 那你也早點睡。晚安

所以連在一起是:

A發(fā)信息給B:我累了勇边,我先睡了犹撒,88.
B發(fā)信息給A:好的,那你先睡吧
B發(fā)信息給A:不過你說你要睡了粒褒,我覺得是比較晚了识颊,我也要睡了,晚安奕坟。
A發(fā)信息給B: 那你也早點睡祥款。晚安

剛開始是雙向通信,然后二次揮手后月杉,A到B的斷了刃跛,所以這時候變成單向的數(shù)據(jù)傳輸,然后再二次揮手沙合,把這個單向數(shù)據(jù)傳輸也關(guān)閉奠伪。

image.png
image.png

所以我們看到了TCP的連接和斷開都這么多步,多次確認等操作首懈,但是UDP是不需要先建立一個穩(wěn)定的通道绊率,直接就把數(shù)據(jù)發(fā)過去了。所以UDP更快究履,因為不用先去建立連接滤否。

1.2 TCP的無差錯傳輸

TCP為什么傳輸安全,UDP傳輸不安全最仑,TCP傳輸保證了數(shù)據(jù)最終能穩(wěn)定安全的到達目的地藐俺,而UDP只管發(fā)送出去炊甲,不管最終是否收到,具體原因是為啥欲芹?

發(fā)送端

對于發(fā)送端:每收到一個確認幀卿啡,發(fā)送窗口就向前滑動一個幀的距離。當(dāng)發(fā)送窗口內(nèi)無可發(fā)送幀時(即窗口內(nèi)的幀全是已發(fā)送但未收到確認的幀)菱父,發(fā)送方就會停止發(fā)送颈娜,直到接收方發(fā)送確認幀使窗口移動,窗口內(nèi)有可以發(fā)送的幀浙宜,之后才繼續(xù)發(fā)送 具體如下圖:


image.png

接收端:

對于接收端:當(dāng)收到數(shù)據(jù)幀后官辽,將窗口向前移動一個位置,并發(fā)回確認幀粟瞬,若收到的數(shù)據(jù)幀落在接收窗口之外同仆,則一律丟棄。

image.png

滑動窗口協(xié)議的重要特性

  • 只有接收窗口向前滑動裙品、接收方發(fā)送了確認幀時俗批,發(fā)送窗口才有可能(只有發(fā)送方收到確認幀)向前滑動
  • 停止-等待協(xié)議、后退N幀協(xié)議 & 選擇重傳協(xié)議只是在發(fā)送窗口大小和接收窗口大小上有差異市怎。

1.停止等待協(xié)議:發(fā)送窗口大小=1扶镀,接收窗口大小=1;即 單幀滑動窗口 等于 停止-等待協(xié)議
2.后退N幀協(xié)議:發(fā)送窗口大小>1焰轻,接收窗口大小=1。
3.選擇重傳協(xié)議:發(fā)送窗口大小>1昆雀,接收窗口大小>1辱志。

  • 當(dāng)接收窗口的大小為1時,可保證幀有序接收狞膘。
  • 數(shù)據(jù)鏈路層的滑動窗口協(xié)議中揩懒,窗口的大小在傳輸過程中是固定的(注意要與TCP的滑動窗口協(xié)議區(qū)別)

1.3 TCP與 UDP 區(qū)別

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挽封,隨后出現(xiàn)的幾起案子已球,更是在濱河造成了極大的恐慌,老刑警劉巖辅愿,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件智亮,死亡現(xiàn)場離奇詭異,居然都是意外死亡点待,警方通過查閱死者的電腦和手機阔蛉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癞埠,“玉大人状原,你說我怎么就攤上這事聋呢。” “怎么了颠区?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵削锰,是天一觀的道長。 經(jīng)常有香客問我毕莱,道長器贩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任央串,我火速辦了婚禮磨澡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘质和。我一直安慰自己稳摄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布饲宿。 她就那樣靜靜地躺著厦酬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘫想。 梳的紋絲不亂的頭發(fā)上仗阅,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音国夜,去河邊找鬼减噪。 笑死,一個胖子當(dāng)著我的面吹牛车吹,可吹牛的內(nèi)容都是我干的筹裕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼窄驹,長吁一口氣:“原來是場噩夢啊……” “哼朝卒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乐埠,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤抗斤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丈咐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞眼,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年棵逊,在試婚紗的時候發(fā)現(xiàn)自己被綠了负拟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡歹河,死狀恐怖掩浙,靈堂內(nèi)的尸體忽然破棺而出花吟,到底是詐尸還是另有隱情,我是刑警寧澤厨姚,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布衅澈,位于F島的核電站,受9級特大地震影響谬墙,放射性物質(zhì)發(fā)生泄漏今布。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一拭抬、第九天 我趴在偏房一處隱蔽的房頂上張望部默。 院中可真熱鬧,春花似錦造虎、人聲如沸傅蹂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽份蝴。三九已至,卻和暖如春氓轰,著一層夾襖步出監(jiān)牢的瞬間婚夫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工署鸡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留案糙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓靴庆,卻偏偏與公主長得像侍筛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撒穷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容