TCP和UDP

TCP和UDP的區(qū)別與聯(lián)系

1,TCP為傳輸控制層協(xié)議,為面向連接的,可靠的,點(diǎn)到點(diǎn)的通信。

2,UDP為用戶(hù)數(shù)據(jù)報(bào)協(xié)議,非連接的不可靠的點(diǎn)到點(diǎn)的通信

3,TCP側(cè)重可靠傳輸,UDP側(cè)重快速傳輸

TCP的特性:

1,TCP提供一種面向連接的,可靠的字節(jié)流服務(wù)

2,在一個(gè)TCP連接中,僅有兩方可以彼此通信,廣播和多播不能用于TCP

3,TCP使用校驗(yàn),確認(rèn),和重傳機(jī)制來(lái)保證可靠傳輸。

4,TCP使用累積確認(rèn)

5,TCP使用滑動(dòng)窗口來(lái)實(shí)現(xiàn)流量控制,通過(guò)動(dòng)態(tài)改變窗口的大小進(jìn)行擁堵控制

TCP連接的三次握手

三次握手:(Three-way Handshake),是指建立一個(gè)TCP連接時(shí),需要客戶(hù)端和服務(wù)器總共發(fā)送3個(gè)包。

三次握手的目的是連接服務(wù)器指定端口,建立TCP連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào),交換TCP窗口大小信息,在socket編程中,客戶(hù)端執(zhí)行connect()時(shí),將觸發(fā)三次握手

* 第一次握手(SYN=1, seq=x):

客戶(hù)端發(fā)送一個(gè) TCP 的 SYN 標(biāo)志位置1的包,指明客戶(hù)端打算連接的服務(wù)器的端口,以及初始序號(hào) X,保存在包頭的序列號(hào)(Sequence Number)字段里。

發(fā)送完畢后,客戶(hù)端進(jìn)入 `SYN_SEND` 狀態(tài)。

* 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

服務(wù)器發(fā)回確認(rèn)包(ACK)應(yīng)答。即 SYN 標(biāo)志位和 ACK 標(biāo)志位均為1。服務(wù)器端選擇自己 ISN 序列號(hào),放到 Seq 域里,同時(shí)將確認(rèn)序號(hào)(Acknowledgement Number)設(shè)置為客戶(hù)的 ISN 加1,即X+1。

發(fā)送完畢后,服務(wù)器端進(jìn)入 `SYN_RCVD` 狀態(tài)。

* 第三次握手(ACK=1,ACKnum=y+1)

客戶(hù)端再次發(fā)送確認(rèn)包(ACK),SYN 標(biāo)志位為0,ACK 標(biāo)志位為1,并且把服務(wù)器發(fā)來(lái) ACK 的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方,并且在數(shù)據(jù)段放寫(xiě)ISN的+1

發(fā)送完畢后,客戶(hù)端進(jìn)入 `ESTABLISHED` 狀態(tài),當(dāng)服務(wù)器端接收到這個(gè)包時(shí),也進(jìn)入 `ESTABLISHED` 狀態(tài),TCP 握手結(jié)束。

或者:TCP接通連接要進(jìn)行3次握手過(guò)程

(1)、主機(jī)A通過(guò)向主機(jī)B 發(fā)送一個(gè)含有同步序列號(hào)的標(biāo)志位的數(shù)據(jù)段給主機(jī)B ,向主機(jī)B 請(qǐng)求建立連接,通過(guò)這個(gè)數(shù)據(jù)段,主機(jī)A告訴主機(jī)B 兩件事:我想要和你通信;你可以用哪個(gè)序列號(hào)作為起始數(shù)據(jù)段來(lái)回應(yīng)我.

(2)、主機(jī)B 收到主機(jī)A的請(qǐng)求后,用一個(gè)帶有確認(rèn)應(yīng)答(ACK)和同步序列號(hào)(SYN)標(biāo)志位的數(shù)據(jù)段響應(yīng)主機(jī)A,也告訴主機(jī)A兩件事:我已經(jīng)收到你的請(qǐng)求了,你可以傳輸數(shù)據(jù)了;你要用哪佧序列號(hào)作為起始數(shù)據(jù)段來(lái)回應(yīng)我

(3)、主機(jī)A收到這個(gè)數(shù)據(jù)段后,再發(fā)送一個(gè)確認(rèn)應(yīng)答,確認(rèn)已收到主機(jī)B 的數(shù)據(jù)段:我已收到回復(fù),我現(xiàn)在要開(kāi)始傳輸實(shí)際數(shù)據(jù)了。

這樣3次握手就完成了,主機(jī)A和主機(jī)B 就可以傳輸數(shù)據(jù)了.

三次握手的特點(diǎn):沒(méi)有應(yīng)用層的數(shù)據(jù);SYN這個(gè)標(biāo)志位只有在TCP建立間接時(shí)才會(huì)被置為1;握手完成后SYN標(biāo)志位被置為0;

涉及到的名詞解釋?zhuān)?/h4>

(1)ACK:TCP報(bào)頭的控制位之一,對(duì)數(shù)據(jù)進(jìn)行確認(rèn).確認(rèn)由目的端發(fā)出,用它來(lái)告訴發(fā)送端這個(gè)序列號(hào)之前的數(shù)據(jù)段都收到了.比如,確認(rèn)號(hào)為X,則表示前X-1個(gè)數(shù)據(jù)段都收到了,只有當(dāng)ACK=1時(shí),確認(rèn)號(hào)才有效,當(dāng)ACK=0時(shí),確認(rèn)號(hào)無(wú)效,這時(shí)會(huì)要求重傳數(shù)據(jù),保證數(shù)據(jù)的完整性.

(2)SYN:同步序列號(hào),TCP建立連接時(shí)將這個(gè)位置1

(3)FIN:發(fā)送端完成發(fā)送任務(wù)位,當(dāng)TCP完成數(shù)據(jù)傳輸需要斷開(kāi)時(shí),提出斷開(kāi)連接的一方將這位置1

TCP和UDP的區(qū)別

TCP(傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說(shuō)在收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的間接;這種協(xié)議可以提供面向連接的、可靠的、點(diǎn)到點(diǎn)的通信。

UDP(用戶(hù)數(shù)據(jù)包協(xié)議)是非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它向傳送時(shí)就簡(jiǎn)單的去抓取來(lái)自應(yīng)用程序的數(shù)據(jù),并盡可能快的吧它扔到網(wǎng)絡(luò)上;它可以提供非連接的不可靠的點(diǎn)到多點(diǎn)的通信。


TCP斷開(kāi)的四次揮手

TCP的連接的拆除需要發(fā)送四個(gè)包,因此稱(chēng)為四次揮手(Four-way handshake),也叫做改進(jìn)的三次握手。客戶(hù)端或服務(wù)器均可主動(dòng)發(fā)起揮手動(dòng)作,在 socket 編程中,任何一方執(zhí)行 close() 操作即可產(chǎn)生揮手操作。

第一次揮手(FIN=1,seq=x)

假設(shè)客戶(hù)端想要關(guān)閉連接,客戶(hù)端發(fā)送一個(gè) FIN 標(biāo)志位置為1的包,表示自己已經(jīng)沒(méi)有數(shù)據(jù)可以發(fā)送了,但是仍然可以接受數(shù)據(jù)。

發(fā)送完畢后,客戶(hù)端進(jìn)入 FIN_WAIT_1 狀態(tài)。

第二次揮手(ACK=1,ACKnum=x+1)

服務(wù)器端確認(rèn)客戶(hù)端的 FIN 包,發(fā)送一個(gè)確認(rèn)包,表明自己接受到了客戶(hù)端關(guān)閉連接的請(qǐng)求,但還沒(méi)有準(zhǔn)備好關(guān)閉連接。

發(fā)送完畢后,服務(wù)器端進(jìn)入 CLOSE_WAIT 狀態(tài),客戶(hù)端接收到這個(gè)確認(rèn)包之后,進(jìn)入 FIN_WAIT_2 狀態(tài),等待服務(wù)器端關(guān)閉連接。

第三次揮手(FIN=1,seq=y)

服務(wù)器端準(zhǔn)備好關(guān)閉連接時(shí),向客戶(hù)端發(fā)送結(jié)束連接請(qǐng)求,F(xiàn)IN 置為1。

發(fā)送完畢后,服務(wù)器端進(jìn)入 LAST_ACK 狀態(tài),等待來(lái)自客戶(hù)端的最后一個(gè)ACK。

第四次揮手(ACK=1,ACKnum=y+1)

客戶(hù)端接收到來(lái)自服務(wù)器端的關(guān)閉請(qǐng)求,發(fā)送一個(gè)確認(rèn)包,并進(jìn)入 TIME_WAIT狀態(tài),等待可能出現(xiàn)的要求重傳的 ACK 包。

服務(wù)器端接收到這個(gè)確認(rèn)包之后,關(guān)閉連接,進(jìn)入 CLOSED 狀態(tài)。

客戶(hù)端等待了某個(gè)固定時(shí)間(兩個(gè)最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,沒(méi)有收到服務(wù)器端的 ACK ,認(rèn)為服務(wù)器端已經(jīng)正常關(guān)閉連接,于是自己也關(guān)閉連接,進(jìn)入 CLOSED 狀態(tài)。


isMemberOfClass 和 isKindOfClass 聯(lián)系與區(qū)別

聯(lián)系:兩者都能檢測(cè)一個(gè)對(duì)象是否是某個(gè)類(lèi)的成員

區(qū)別:isKindOfClass不僅用來(lái)確定一個(gè)對(duì)象是否是一個(gè)類(lèi)的成員,也可用來(lái)確定一個(gè)對(duì)象是否派生自該類(lèi)的類(lèi)的成員,而isMemberOfClass只能做到第一點(diǎn)

例如:如 ClassA派 生 自NSObject 類(lèi) , ClassA *a = [ClassA alloc] init];,[a isKindOfClass:[NSObject class]] 可以檢查出 a 是否是 NSObject派生類(lèi) 的成員,但 isMemberOfClass 做不到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,202評(píng)論 3 426
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,742評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,580評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,297評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,688評(píng)論 1 327
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,875評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,438評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,183評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,384評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,612評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,022評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,297評(píng)論 1 292
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,093評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,330評(píng)論 2 377

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

  • 1 運(yùn)輸層協(xié)議概述 1.1 進(jìn)程之間的通信 網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信,而運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯...
    Mr希靈閱讀 8,147評(píng)論 0 34
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,473評(píng)論 0 11
  • 最近在惡補(bǔ)計(jì)算機(jī)網(wǎng)絡(luò)方面的知識(shí),之前對(duì)于TCP的三次握手和四次分手也是模模糊糊,對(duì)于其中的細(xì)節(jié)更是渾然不知,最近看...
    微醺歲月閱讀 9,552評(píng)論 4 128
  • 參考http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493...
    魚(yú)仔_1625閱讀 512評(píng)論 0 0
  • TCP和UDP的區(qū)別(轉(zhuǎn)) TCP****協(xié)議與UDP協(xié)議的區(qū)別 首先咱們弄清楚, TCP 協(xié)議和 UCP ...
    清隱道人閱讀 424評(píng)論 0 0