iOS-網(wǎng)絡(luò)相關(guān)知識(shí)點(diǎn)整理

網(wǎng)絡(luò)相關(guān).png

一、HTTP協(xié)議

超文本傳輸協(xié)議

  • 請求/響應(yīng)報(bào)文

  • 連接簡歷流程

  • HTTP的特點(diǎn)

1.1 請求/響應(yīng)報(bào)文

image.png

image.png

HTTP的請求方式都有哪些翅睛?

GET、POST、HEAD址儒、DELETE、PUT衅疙、OPTIONS等

GET和POST方式的區(qū)別莲趣?
從使用場景的角度回答


image.png
從語義的角度來回答
GET:獲取資源,安全的饱溢,冪等的喧伞,可緩存的
POST:處理資源,非安全的绩郎,非冪等的潘鲫,不可緩存的
?
安全性:不引起Server端的任何狀態(tài)變化。get肋杖、head溉仑、options
冪等性:同一個(gè)請求方法執(zhí)行多次和執(zhí)行一次的效果完全相同。put状植、delete
可緩存性:請求是否可以被緩存浊竟。get、head

你都了解哪些狀態(tài)碼津畸,他們的含義是什么振定?

1xx、2xx肉拓、3xx吩案、4xx、5xx
200: 響應(yīng)成功
301帝簇、302:發(fā)生網(wǎng)絡(luò)重定向
404:發(fā)送請求有問題
502:Server端有問題

1.2 連接建立流程

image.png

連接建立流程

三次握手:建立連接徘郭;四次揮手:斷開連接

為什么進(jìn)行三次握手而不是兩次呢?
要保證TCP的可靠傳輸丧肴,防止超時(shí)残揉,報(bào)文丟失,報(bào)文遲到的情況芋浮,下面會(huì)做詳細(xì)解釋
為什么斷開連接需要雙向斷開呢抱环?
因?yàn)門CP的客戶端和服務(wù)端都是以全雙工的形式工作的壳快,首先客戶端向服務(wù)端發(fā)送關(guān)閉寫操作,服務(wù)端回應(yīng)客戶端關(guān)閉讀操作镇草,再服務(wù)端向客戶端關(guān)閉寫操作眶痰,客服端回應(yīng)關(guān)閉寫操作。由客戶端發(fā)起是因?yàn)檎l發(fā)起誰等待的原則梯啤,這樣可以避免服務(wù)端的資源浪費(fèi)竖伯。

1.3 HTTP的特點(diǎn)

HTTP 是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,HTTP 協(xié)議一共有五大特點(diǎn):

1因宇、支持客戶/服務(wù)器模式七婴;
2、簡單快速察滑;
3打厘、靈活;
4贺辰、無連接户盯;如何建立持久連接(Connection: Keep-Alive)
5、無狀態(tài): Cookie/Session

1.3.1 無連接

無連接的含義是限制每次連接只處理一個(gè)請求饲化。服務(wù)器處理完客戶的請求莽鸭,并收到客戶的應(yīng)答后,即斷開連接滓侍。采用這種方式可以節(jié)省傳輸時(shí)間蒋川,解決資源占用問題。

當(dāng)HTTP請求較多時(shí)撩笆,重復(fù)的建立和斷開連接導(dǎo)致效率很低捺球。Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請求時(shí)夕冲,Keep-Alive功能避免了建立或者重新建立連接氮兵。

HTTP持久連接HTTP persistent connection ,也稱作 HTTP keep-aliveHTTP connection reuse)是使用同一個(gè)TCP連接來發(fā)送和接收多個(gè)HTTP請求/應(yīng)答歹鱼,而不是為每一個(gè)新的請求/應(yīng)答打開新的連接的方法泣栈。 —— 《維基百科》

優(yōu)點(diǎn):提升網(wǎng)絡(luò)訪問的效率。較少的CPU和內(nèi)存的使用弥姻,降低擁塞控制南片,減少后續(xù)請求的延遲。

1庭敦、HTTP如何建立持久連接呢疼进? 2、建立持久連接涉及哪些頭部字段秧廉?

Connection: Keep-Alive
time: 20 // 該條連接持續(xù)時(shí)間
max: 10 // 最多可以發(fā)生多少個(gè)請求/響應(yīng)對(duì)

怎么判斷一個(gè)請求是否結(jié)束伞广?

兩種判斷方式:
Content-length: 1024 根據(jù)傳輸數(shù)據(jù)的大小
chunked: 最后一個(gè)空的chunked 

1.3.2 無狀態(tài)

HTTP是一種無狀態(tài)協(xié)議拣帽,意味著每個(gè)請求都是獨(dú)立的,Keep-Alive沒有改變這個(gè)特點(diǎn)嚼锄。缺少狀態(tài)意味著后續(xù)處理需要前面的信息减拭,就必須重新傳輸,這導(dǎo)致每次傳輸數(shù)據(jù)量增大区丑。

為了解決這個(gè)問題拧粪,出現(xiàn)了兩種解決方案:

Cookie可以保持登錄信息到用戶下次與服務(wù)器的會(huì)話,換句話說刊苍,下次訪問同一網(wǎng)站時(shí)既们,用戶會(huì)發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了濒析。與 Cookie相對(duì)的一個(gè)解決方案是Session正什,它是通過服務(wù)器來保持狀態(tài)的。當(dāng)有客戶端訪問服務(wù)器時(shí)号杏,服務(wù)器根據(jù)需求設(shè)置Session婴氮,將會(huì)話信息保存在服務(wù)器上,并返回一個(gè)SessionID給客戶端盾致,客戶端保存到內(nèi)存中主经,稱之為無過期時(shí)間的Cookie⊥ハВ客戶端關(guān)閉后Cookie被清除罩驻,他并沒有存在于用戶的Cookie臨時(shí)文件中。

1.4 中間人攻擊

Charles抓包原理是怎樣的护赊?

中間人攻擊


image.png

中間人攻擊 (英語:Man-in-the-middleattack惠遏,縮寫:MITM)在密碼學(xué)計(jì)算機(jī)安全領(lǐng)域中,是指攻擊者與通訊的兩端分別創(chuàng)建獨(dú)立的聯(lián)系骏啰,并交換其所收到的數(shù)據(jù)节吮,使通訊的兩端認(rèn)為他們正在通過一個(gè)私密的連接與對(duì)方直接對(duì)話,但事實(shí)上整個(gè)會(huì)話都被攻擊者完全控制判耕⊥讣ǎ——《維基百科》

https

image.png

htttps建立連接的過程


image.png

https通訊過程中都使用了那些加密手段?


image.png
image.png
image.png

TCP和UDP

UDP,用戶數(shù)據(jù)報(bào)協(xié)議

特點(diǎn):無連接葫松,盡最大努力交付紫皇,面向報(bào)文


image.png

功能:復(fù)用,分用狸臣,差錯(cuò)檢測


image.png

差錯(cuò)檢測的思路可以用于開發(fā)過程中的IM信息的傳遞的正確性

TCP,傳輸控制協(xié)議

TCP的特點(diǎn)
面向連接:數(shù)據(jù)傳輸開始之前方仿,需要建立連接固棚,三次握手统翩。數(shù)據(jù)傳輸結(jié)束之后,需要釋放連接此洲,四次揮手厂汗。
可靠傳輸:無差錯(cuò),不丟失呜师,不重復(fù)娶桦,按序到達(dá)
面向字節(jié)流:
流量控制:*滑動(dòng)窗口協(xié)議
*擁塞控制:慢開始、擁塞避免汁汗,快恢復(fù)衷畦、快重傳

無差錯(cuò)


image.png

超時(shí)重傳


image.png

確認(rèn)丟失
image.png

確認(rèn)遲到


image.png

面向字節(jié)流
image.png

滑動(dòng)窗口協(xié)議


image.png

可以通過控制接收窗口的大小控制發(fā)送窗口的大小,保證數(shù)據(jù)按序到達(dá)知牌。

慢開始祈争、擁塞避免


image.png

快恢復(fù)、快重傳是基于慢開始角寸、擁塞避免的菩混,是將報(bào)文的發(fā)送個(gè)數(shù)直接從新的閾值開始擁塞避免的

DNS解析

什么是DNS解析?

域名到IP地址的映射扁藕,DNS解析請求采用UDP數(shù)據(jù)報(bào)且明文的沮峡。解析過程,客戶端向DNS服務(wù)發(fā)送域名請求亿柑,DNS服務(wù)根據(jù)域名返回對(duì)應(yīng)的IP地址邢疙,客戶端根據(jù)IP地址請求Server端服務(wù)器。

DNS查詢方式?

遞歸查詢望薄、迭代查詢


image.png

image.png

DNS解析常見問題疟游?

DNS劫持問題:因?yàn)镈NS解析使用UDP數(shù)據(jù)報(bào)且是明文的∈浇茫客戶端發(fā)送域名請求時(shí)乡摹,容易被釣魚DNS劫持返回錯(cuò)誤的IP地址。


image.png

DNS轉(zhuǎn)發(fā)


image.png

DNS劫持與HTTP有什么關(guān)系采转?

沒有關(guān)系聪廉,DNS劫持是在HTTP建立連接之前。 DNS解析通過UDP數(shù)據(jù)報(bào)故慈,訪問53端口板熊。

DNS 劫持解決方案

HTTPDNS、長連接察绷。


image.png

image.png

image.png

Session / Cookie

Session和Cookie是對(duì)HTTP協(xié)議無狀態(tài)特點(diǎn)的補(bǔ)償干签。在之前提到過Session和Cookie的作用。

Cookie

Cookie主要用來記錄用戶狀態(tài)拆撼,區(qū)分用戶容劳; 狀態(tài)保存在客戶端喘沿。客戶端向服務(wù)器發(fā)送請求竭贩,服務(wù)生成Cookie同響應(yīng)數(shù)據(jù)一同返回給客戶端蚜印,客戶端保存Cookie。

image.png

客戶端發(fā)送的Cookie是在HTTP請求報(bào)文的Cookie首部字段中留量。 服務(wù)端設(shè)置HTTP響應(yīng)報(bào)文的Set-Cookie首部字段窄赋。

修改Cookie?

新Cookie覆蓋舊Cookie楼熄。 覆蓋時(shí)新Cookie字段要與原Cookie一致忆绰。 設(shè)置Cookie的expires=過去的時(shí)間點(diǎn),或者maxAge=0可岂,可以刪除Cookie错敢。

Cookie安全


image.png

Session

Session主要用來記錄用戶狀態(tài),區(qū)分用戶青柄; 狀態(tài)保存在服務(wù)器端伐债。它是通過服務(wù)器來保持狀態(tài)的预侯。當(dāng)有客戶端訪問服務(wù)器時(shí)致开,服務(wù)器根據(jù)需求設(shè)置Session,將會(huì)話信息保存在服務(wù)器上萎馅,并返回一個(gè)SessionID給客戶端双戳,客戶端保存到內(nèi)存中,稱之為無過期時(shí)間的Cookie糜芳§酰客戶端關(guān)閉后Cookie被清除,他并沒有存在于用戶的Cookie臨時(shí)文件中峭竣。

image.png

小結(jié)

HTTP中GET和POST方式有什么區(qū)別塘辅?
HTTPS連接建立流程是怎樣的?
TCP和UDP有什么區(qū)別皆撩?
請簡述TCP的慢啟動(dòng)過程扣墩?
客戶端怎樣避免DNS劫持?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扛吞,一起剝皮案震驚了整個(gè)濱河市呻惕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滥比,老刑警劉巖亚脆,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盲泛,居然都是意外死亡濒持,警方通過查閱死者的電腦和手機(jī)键耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柑营,“玉大人郁竟,你說我怎么就攤上這事∮删常” “怎么了棚亩?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長虏杰。 經(jīng)常有香客問我讥蟆,道長,這世上最難降的妖魔是什么纺阔? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任瘸彤,我火速辦了婚禮,結(jié)果婚禮上笛钝,老公的妹妹穿的比我還像新娘质况。我一直安慰自己,他們只是感情好玻靡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布结榄。 她就那樣靜靜地躺著,像睡著了一般囤捻。 火紅的嫁衣襯著肌膚如雪臼朗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天蝎土,我揣著相機(jī)與錄音视哑,去河邊找鬼。 笑死誊涯,一個(gè)胖子當(dāng)著我的面吹牛挡毅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暴构,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼跪呈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丹壕?” 一聲冷哼從身側(cè)響起庆械,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菌赖,沒想到半個(gè)月后缭乘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年堕绩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了策幼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奴紧,死狀恐怖特姐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黍氮,我是刑警寧澤唐含,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站沫浆,受9級(jí)特大地震影響捷枯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜专执,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一淮捆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧本股,春花似錦攀痊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凿叠,卻和暖如春涩笤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盒件。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舱禽,地道東北人炒刁。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像誊稚,于是被迫代替她去往敵國和親翔始。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 一.HTTP HTTP是超文本傳輸協(xié)議 1.請求報(bào)文的格式 請求行:方法(get里伯、post)城瞎、url(請求的地址)...
    蔚尼閱讀 656評(píng)論 0 2
  • http協(xié)議有http0.9,http1.0疾瓮,http1.1和http2三個(gè)版本脖镀,但是現(xiàn)在瀏覽器使用的是htt...
    一現(xiàn)_閱讀 1,855評(píng)論 0 3
  • 1、100狀態(tài)碼 1xx:臨時(shí)響應(yīng)狼电,表示臨時(shí)相應(yīng)并需要請求者繼續(xù)操作的狀態(tài)碼 100 (繼續(xù)) 請求者應(yīng)當(dāng)繼續(xù)提...
    ypxx閱讀 417評(píng)論 0 1
  • 今夜回客棧蜒灰,因?yàn)橥鼛ц€匙弦蹂,所以索性就在大理古城閑逛。也準(zhǔn)備再體驗(yàn)一下在戶外流浪的日子强窖。 帶著興奮的步伐凸椿,從...
    霄世閱讀 194評(píng)論 0 2
  • 2018年4月24日教練父母《啟蒙力量》百日功課第十四天[愉快]一遍規(guī)畫已讀?教練父母的身份:圓滿的踐行者、愛的使...
    玉髓心動(dòng)閱讀 109評(píng)論 0 0