零碎知識(shí)點(diǎn)

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

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

2晌纫,UDP為用戶數(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ī)制來保證可靠傳輸懈词。

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

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

TCP連接的三次握手

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

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

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

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

發(fā)送完畢后灶体,客戶端進(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è)置為客戶的 ISN 加1樟结,即X+1。

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

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

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

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

TCP斷開的四次揮手

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

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

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

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

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

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

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

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

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

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

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

客戶端接收到來自服務(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)蘸际。

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

Scoket連接和HTTP連接的區(qū)別

HTTP協(xié)議是基于TCP連接的坛掠,是應(yīng)用層協(xié)議赊锚,主要解決如何包裝數(shù)據(jù)。Socket是對(duì)TCP/IP協(xié)議的封裝屉栓,Socket本身并不是協(xié)議舷蒲,而是一個(gè)調(diào)用接口(API),通過Socket系瓢,我們才能使用TCP/IP協(xié)議阿纤。

HTTP連接:短連接,客戶端向服務(wù)器發(fā)送一次請(qǐng)求夷陋,服務(wù)器響應(yīng)后連接斷開欠拾,節(jié)省資源。服務(wù)器不能主動(dòng)給客戶端響應(yīng)(除非采用HTTP長(zhǎng)連接技術(shù))骗绕,iPhone主要使用類NSURLConnection藐窄。

Socket連接:長(zhǎng)連接,客戶端跟服務(wù)器端直接使用Socket進(jìn)行連接酬土,沒有規(guī)定連接后斷開荆忍,因此客戶端和服務(wù)器端保持連接通道,雙方可以主動(dòng)發(fā)送數(shù)據(jù)撤缴,一般多用于游戲.Socket默認(rèn)連接超時(shí)時(shí)間是30秒刹枉,默認(rèn)大小是8K(理解為一個(gè)數(shù)據(jù)包大小)

類別與匿名類別的比較

類別作用:對(duì)原有類(官方類屈呕,第三方類微宝,自定義類等)增補(bǔ)方法,不會(huì)對(duì)原有類產(chǎn)生影響

1,增加成員方法或類方法虎眨,不能增加成員變量蟋软。

2,在類別中可以訪問原類中的成員方法嗽桩,可以訪問原類中的成員變量

類別的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):1岳守,不需要通過增加子類而增加現(xiàn)有類的方法,且類別中的方法與原始類方法基本沒有區(qū)別

2碌冶,通過類別可以將龐大的一個(gè)類的方法進(jìn)行劃分湿痢,便于代碼的日后維護(hù),更新等

缺點(diǎn):1种樱,無法向類別添加實(shí)例變量蒙袍,如果需要增加實(shí)例變量俊卤,之恩給你通過定義子類的形式

2,類別中的方法與原始類及父類方法相比具有更高的優(yōu)先級(jí)害幅,如果覆蓋父類的方法消恍,可能導(dǎo)致super消息的斷裂,因此以现,最好不要付費(fèi)原始類中的方法

匿名類別:匿名類別中可以有屬性和方法狠怨,成員變量,在類外不能直接調(diào)用邑遏,只可以在類內(nèi)調(diào)用佣赖。子類中不能直接訪問匿名類別中生命的方法和成員變量

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

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

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

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

關(guān)于OC中的字符串生成及內(nèi)存管理

一,創(chuàng)建字符串

1纪吮,不需要內(nèi)存管理:NSString *str = @“你好俩檬,我是一個(gè)不需要內(nèi)存管理的字符串,我是存儲(chǔ)在數(shù)據(jù)段的碾盟,系統(tǒng)管我”;

NSLog([NSString stringWithFormat:@"一個(gè)NS字符串"]);

//這種快速方法返回的是一個(gè)retain為1棚辽,autorelease的對(duì)象,不需要操心它的內(nèi)存管理

2冰肴,需要內(nèi)存管理:NSString *str1 =[ [NSString alloc] initWithFormat:@“我是一個(gè)需要內(nèi)存管理的字符串”];

//從一個(gè)文件名中讀取所需要的內(nèi)容

- (id)initWithContentsOfFile:(NSString*)path encoding:(NSStringEncoding)enc error:(NSError**)error;

//從一個(gè)地址讀取需要的內(nèi)容

- (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屈藐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熙尉,更是在濱河造成了極大的恐慌联逻,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件检痰,死亡現(xiàn)場(chǎng)離奇詭異遣妥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攀细,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱态,“玉大人谭贪,你說我怎么就攤上這事〗醯#” “怎么了俭识?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)洞渔。 經(jīng)常有香客問我套媚,道長(zhǎng)缚态,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任堤瘤,我火速辦了婚禮玫芦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘本辐。我一直安慰自己桥帆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布慎皱。 她就那樣靜靜地躺著老虫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茫多。 梳的紋絲不亂的頭發(fā)上祈匙,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音天揖,去河邊找鬼夺欲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宝剖,可吹牛的內(nèi)容都是我干的洁闰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼万细,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扑眉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赖钞,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤腰素,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雪营,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弓千,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年献起,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洋访。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谴餐,死狀恐怖姻政,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岂嗓,我是刑警寧澤汁展,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響食绿,放射性物質(zhì)發(fā)生泄漏侈咕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一器紧、第九天 我趴在偏房一處隱蔽的房頂上張望耀销。 院中可真熱鬧,春花似錦品洛、人聲如沸树姨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帽揪。三九已至,卻和暖如春辅斟,著一層夾襖步出監(jiān)牢的瞬間转晰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工士飒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留查邢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓酵幕,卻偏偏與公主長(zhǎng)得像扰藕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芳撒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理邓深,服務(wù)發(fā)現(xiàn),斷路器笔刹,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 1. 基礎(chǔ)知識(shí) 1.1 3種常見的計(jì)算機(jī)體系結(jié)構(gòu)劃分 OSI分層(7層):物理層芥备、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層舌菜、傳輸層萌壳、會(huì)話...
    Mr希靈閱讀 19,847評(píng)論 6 120
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 20,817評(píng)論 24 176
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記日月,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的袱瓮,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,037評(píng)論 6 174