iOS 網(wǎng)絡(luò)請求(一)網(wǎng)絡(luò)概覽

一脐湾、網(wǎng)絡(luò)概覽

1、OSI七層協(xié)議
image.png

圖片編輯地址:https://kdocs.cn/l/sb9rZCiLcWQA?f=130

2叙淌、TCP/IP四層結(jié)構(gòu):應(yīng)用層、運輸層、網(wǎng)際層和網(wǎng)絡(luò)接口層奔穿。從實質(zhì)上講磷瘤,只有上邊三層,網(wǎng)絡(luò)接口層沒有什么具體的內(nèi)容茂洒。
image.jpeg

image.jpeg
3孟岛、五層七層體系結(jié)構(gòu)概覽:應(yīng)用層、運輸層督勺、網(wǎng)絡(luò)層渠羞、數(shù)據(jù)鏈路層和物理層。五層協(xié)議只是OSI和TCP/IP的綜合智哀,實際應(yīng)用還是TCP/IP的四層結(jié)構(gòu)次询。為了方便可以把下兩層稱為網(wǎng)絡(luò)接口層。

模型結(jié)構(gòu):

image.jpeg

二瓷叫、各層的作用

1屯吊、物理層:

??主要定義物理設(shè)備標準,如網(wǎng)線的接口類型赞辩、光纖的接口類型雌芽、各種傳輸介質(zhì)的傳輸速率等。它的主要作用是傳輸比特流(就是由1辨嗽、0轉(zhuǎn)化為電流強弱來進行傳輸,到達目的地后在轉(zhuǎn)化為1世落、0,也就是我們常說的數(shù)模轉(zhuǎn)換與模數(shù)轉(zhuǎn)換)。這一層的數(shù)據(jù)叫做比特屉佳。

2谷朝、數(shù)據(jù)鏈路層:

??定義了如何讓格式化數(shù)據(jù)以進行傳輸,以及如何讓控制對物理介質(zhì)的訪問武花。這一層通常還提供錯誤檢測和糾正圆凰,以確保數(shù)據(jù)的可靠傳輸。

3体箕、網(wǎng)絡(luò)層:

??在位于不同地理位置的網(wǎng)絡(luò)中的兩個主機系統(tǒng)之間提供連接和路徑選擇专钉。Internet的發(fā)展使得從世界各站點訪問信息的用戶數(shù)大大增加,而網(wǎng)絡(luò)層正是管理這種連接的層累铅。

4跃须、運輸層:

??定義了一些傳輸數(shù)據(jù)的協(xié)議和端口號(WWW端口80等),如:
??TCP(transmission control protocol – 傳輸控制協(xié)議娃兽,傳輸效率低菇民,可靠性強,用于傳輸可靠性要求高投储,數(shù)據(jù)量大的數(shù)據(jù))
??UDP(user datagram protocol–用戶數(shù)據(jù)報協(xié)議第练,與TCP特性恰恰相反,用于傳輸可靠性要求不高玛荞,數(shù)據(jù)量小的數(shù)據(jù)娇掏,如QQ聊天數(shù)據(jù)就是通過這種方式傳輸?shù)模?主要是將從下層接收的數(shù)據(jù)進行分段和傳輸,到達目的地址后再進行重組冲泥。常常把這一層數(shù)據(jù)叫做段驹碍。

5、會話層:

??通過運輸層(端口號:傳輸端口與接收端口)建立數(shù)據(jù)傳輸?shù)耐贩不小V饕谀愕南到y(tǒng)之間發(fā)起會話或者接受會話請求(設(shè)備之間需要互相認識可以是IP也可以是MAC或者是主機名)

6志秃、表示層:

??可確保一個系統(tǒng)的應(yīng)用層所發(fā)送的信息可以被另一個系統(tǒng)的應(yīng)用層讀取。例如嚼酝,PC程序與另一臺計算機進行通信浮还,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符闽巩。如有必要钧舌,表示層會通過使用一種通格式來實現(xiàn)多種數(shù)據(jù)格式之間的轉(zhuǎn)換。

7涎跨、應(yīng)用層:

??是最靠近用戶的OSI層洼冻。這一層為用戶的應(yīng)用程序(例如電子郵件、文件傳輸和終端仿真)提供網(wǎng)絡(luò)服務(wù)隅很。

三撞牢、UDP

??定義:UDP協(xié)議全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議屋彪。在OSI模型中所宰,在第四層——傳輸層,處于IP協(xié)議的上一層畜挥。UDP有不提供數(shù)據(jù)包分組仔粥、組裝和不能對數(shù)據(jù)包進行排序的缺點,也就是說蟹但,當報文發(fā)送之后躯泰,是無法得知其是否安全完整到達的。他有如下特點:

1矮湘、面向無連接

??首先 UDP 是不需要和 TCP一樣在發(fā)送數(shù)據(jù)前進行三次握手建立連接的斟冕,想發(fā)數(shù)據(jù)就可以開始發(fā)送了。并且也只是數(shù)據(jù)報文的搬運工缅阳,不會對數(shù)據(jù)報文進行任何拆分和拼接操作。
??具體來說就是:
?? * 在發(fā)送端景描,應(yīng)用層將數(shù)據(jù)傳遞給傳輸層的 UDP 協(xié)議十办,UDP 只會給數(shù)據(jù)增加一個 UDP 頭標識下是 UDP 協(xié)議,然后就傳遞給網(wǎng)絡(luò)層了
?? * 在接收端超棺,網(wǎng)絡(luò)層將數(shù)據(jù)傳遞給傳輸層向族,UDP 只去除 IP 報文頭就傳遞給應(yīng)用層,不會任何拼接操作

2棠绘、有單播件相,多播,廣播的功能

??UDP 不止支持一對一的傳輸方式氧苍,同樣支持一對多夜矗,多對多,多對一的方式让虐,也就是說 UDP 提供了單播紊撕,多播,廣播的功能赡突。

3对扶、UDP是面向報文的

??發(fā)送方的UDP對應(yīng)用程序交下來的報文,在添加首部后就向下交付IP層惭缰。UDP對應(yīng)用層交下來的報文浪南,既不合并,也不拆分漱受,而是保留這些報文的邊界络凿。因此,應(yīng)用程序必須選擇合適大小的報文

4、不可靠性

??首先不可靠性體現(xiàn)在無連接上喷众,通信都不需要建立連接各谚,想發(fā)就發(fā),這樣的情況肯定不可靠到千。
??并且收到什么數(shù)據(jù)就傳遞什么數(shù)據(jù)昌渤,并且也不會備份數(shù)據(jù),發(fā)送數(shù)據(jù)也不會關(guān)心對方是否已經(jīng)正確接收到數(shù)據(jù)了憔四。
??再者網(wǎng)絡(luò)環(huán)境時好時壞膀息,但是 UDP 因為沒有擁塞控制,一直會以恒定的速度發(fā)送數(shù)據(jù)了赵。即使網(wǎng)絡(luò)條件不好潜支,也不會對發(fā)送速率進行調(diào)整。這樣實現(xiàn)的弊端就是在網(wǎng)絡(luò)條件不好的情況下可能會導(dǎo)致丟包柿汛,但是優(yōu)點也很明顯冗酿,在某些實時性要求高的場景(比如電話會議)就需要使用 UDP 而不是 TCP。

image.jpeg

??從上面的動態(tài)圖可以得知络断,UDP只會把想發(fā)的數(shù)據(jù)報文一股腦的丟給對方裁替,并不在意數(shù)據(jù)有無安全完整到達。

5貌笨、頭部開銷小弱判,傳輸數(shù)據(jù)報文時是很高效的。
image.jpeg

UDP 頭部包含了以下幾個數(shù)據(jù):

  • 兩個十六位的端口號锥惋,分別為源端口(可選字段)和目標端口
  • 整個數(shù)據(jù)報文的長度
  • 整個數(shù)據(jù)報文的檢驗和(IPv4 可選 字段)昌腰,該字段用于發(fā)現(xiàn)頭部信息和數(shù)據(jù)中的錯誤

??因此 UDP 的頭部開銷小,只有八字節(jié)膀跌,相比 TCP 的至少二十字節(jié)要少得多遭商,在傳輸數(shù)據(jù)報文時是很高效的

三、TCP

??定義:當一臺計算機想要與另一臺計算機通訊時淹父,兩臺計算機之間的通信需要暢通且可靠株婴,這樣才能保證正確收發(fā)數(shù)據(jù)。例如暑认,當你想查看網(wǎng)頁或查看電子郵件時困介,希望完整且按順序查看網(wǎng)頁,而不丟失任何內(nèi)容蘸际。當你下載文件時座哩,希望獲得的是完整的文件,而不僅僅是文件的一部分粮彤,因為如果數(shù)據(jù)丟失或亂序根穷,都不是你希望得到的結(jié)果姜骡,于是就用到了TCP。
??TCP協(xié)議全稱是傳輸控制協(xié)議是一種面向連接的屿良、可靠的圈澈、基于字節(jié)流的傳輸層通信協(xié)議,由 IETF 的RFC 793定義尘惧。TCP 是面向連接的康栈、可靠的流協(xié)議。流就是指不間斷的數(shù)據(jù)結(jié)構(gòu)喷橙,你可以把它想象成排水管中的水流啥么。

1、TCP連接過程

如下圖所示贰逾,可以看到建立一個TCP連接的過程為(三次握手的過程):

image.jpeg
(1)第一次握手:客戶端向服務(wù)端發(fā)送連接請求報文段悬荣。該報文段中包含自身的數(shù)據(jù)通訊初始序號。請求發(fā)送后疙剑,客戶端便進入 SYN-SENT 狀態(tài)氯迂。
(2)第二次握手:服務(wù)端收到連接請求報文段后,如果同意連接言缤,則會發(fā)送一個應(yīng)答囚戚,該應(yīng)答中也會包含自身的數(shù)據(jù)通訊初始序號,發(fā)送完成后便進入 SYN-RECEIVED 狀態(tài)轧简。
(3)第三次握手:當客戶端收到連接同意的應(yīng)答后,還要向服務(wù)端發(fā)送一個確認報文匾二∠溃客戶端發(fā)完這個報文段后便進入 ESTABLISHED 狀態(tài),服務(wù)端收到這個應(yīng)答后也進入 ESTABLISHED 狀態(tài)察藐,此時連接建立成功皮璧。

這里可能大家會有個疑惑:為什么 TCP 建立連接需要三次握手,而不是兩次分飞?這是因為這是為了防止出現(xiàn)失效的連接請求報文段被服務(wù)端接收的情況悴务,從而產(chǎn)生錯誤。


image.jpeg
2譬猫、TCP斷開鏈接
image.jpeg

TCP 是全雙工的讯檐,在斷開連接時兩端都需要發(fā)送 FIN 和 ACK。

(1)第一次握手:若客戶端 A 認為數(shù)據(jù)發(fā)送完成染服,則它需要向服務(wù)端 B 發(fā)送連接釋放請求别洪。
(2)第二次握手:B 收到連接釋放請求后,會告訴應(yīng)用層要釋放 TCP 鏈接柳刮。然后會發(fā)送 ACK 包挖垛,并進入 CLOSE_WAIT 狀態(tài)痒钝,此時表明 A 到 B 的連接已經(jīng)釋放,不再接收 A 發(fā)的數(shù)據(jù)了痢毒。但是因為 TCP 連接是雙向的送矩,所以 B 仍舊可以發(fā)送數(shù)據(jù)給 A。
(3)第三次握手:B 如果此時還有沒發(fā)完的數(shù)據(jù)會繼續(xù)發(fā)送哪替,完畢后會向 A 發(fā)送連接釋放請求栋荸,然后 B 便進入 LAST-ACK 狀態(tài)。
(4)第四次握手:A 收到釋放請求后夷家,向 B 發(fā)送確認應(yīng)答蒸其,此時 A 進入 TIME-WAIT 狀態(tài)。該狀態(tài)會持續(xù) 2MSL(最大段生存期库快,指報文段在網(wǎng)絡(luò)中生存的時間摸袁,超時會被拋棄) 時間,若該時間段內(nèi)沒有 B 的重發(fā)請求的話义屏,就進入 CLOSED 狀態(tài)靠汁。當 B 收到確認應(yīng)答后,也便進入 CLOSED 狀態(tài)闽铐。
3蝶怔、TCP協(xié)議的特點
(1)面向連接:面向連接,是指發(fā)送數(shù)據(jù)之前必須在兩端建立連接兄墅。建立連接的方法是“三次握手”踢星,這樣能建立可靠的連接。建立連接隙咸,是為數(shù)據(jù)的可靠傳輸打下了基礎(chǔ)沐悦。 
(2)僅支持單播傳輸:每條TCP傳輸連接只能有兩個端點,只能進行點對點的數(shù)據(jù)傳輸五督,不支持多播和廣播傳輸方式藏否。 
(3)面向字節(jié)流:TCP不像UDP一樣那樣一個個報文獨立地傳輸,而是在不保留報文邊界的情況下以字節(jié)流方式進行傳輸充包。 
(4)可靠傳輸:對于可靠傳輸副签,判斷丟包,誤碼靠的是TCP的段編號以及確認號基矮。TCP為了保證報文傳輸?shù)目煽肯ⅲ徒o每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收愈捅。然后接收端實體對已成功收到的字節(jié)發(fā)回一個相應(yīng)的確認(ACK)遏考;如果發(fā)送端實體在合理的往返時延(RTT)內(nèi)未收到確認,那么對應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會被重傳蓝谨。 
(5)提供擁塞控制:當網(wǎng)絡(luò)出現(xiàn)擁塞的時候灌具,TCP能夠減小向網(wǎng)絡(luò)注入數(shù)據(jù)的速率和數(shù)量青团,緩解擁塞 
(6)TCP提供全雙工通信:TCP允許通信雙方的應(yīng)用程序在任何時候都能發(fā)送數(shù)據(jù),因為TCP連接的兩端都設(shè)有緩存咖楣,用來臨時存放雙向通信的數(shù)據(jù)督笆。當然,TCP可以立即發(fā)送一個數(shù)據(jù)段诱贿,也可以緩存一段時間以便一次發(fā)送更多的數(shù)據(jù)段(最大的數(shù)據(jù)段大小取決于MSS)

四娃肿、TCP和UDP的比較

1、圖片展示對比
image.jpeg

文檔地址:https://kdocs.cn/l/slRZYAOmuhqT?f=130

2珠十、UDP 和 TCP 的應(yīng)用
2484924-4303b18393fe07a9.jpeg

文檔地址:https://kdocs.cn/l/slRZYAOmuhqT?f=130

參考博客:
https://segmentfault.com/a/1190000021815671
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html
https://www.cnblogs.com/wxd0108/p/7597216.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末料扰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子焙蹭,更是在濱河造成了極大的恐慌晒杈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孔厉,死亡現(xiàn)場離奇詭異拯钻,居然都是意外死亡,警方通過查閱死者的電腦和手機撰豺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門粪般,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亩歹,你說我怎么就攤上這事》渤鳎” “怎么了捆憎?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長梭纹。 經(jīng)常有香客問我,道長致份,這世上最難降的妖魔是什么变抽? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮氮块,結(jié)果婚禮上绍载,老公的妹妹穿的比我還像新娘。我一直安慰自己滔蝉,他們只是感情好击儡,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝠引,像睡著了一般阳谍。 火紅的嫁衣襯著肌膚如雪蛀柴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天矫夯,我揣著相機與錄音鸽疾,去河邊找鬼。 笑死训貌,一個胖子當著我的面吹牛制肮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播递沪,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豺鼻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了款慨?” 一聲冷哼從身側(cè)響起儒飒,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎樱调,沒想到半個月后约素,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡笆凌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年圣猎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乞而。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡送悔,死狀恐怖爪模,靈堂內(nèi)的尸體忽然破棺而出欠啤,到底是詐尸還是另有隱情,我是刑警寧澤屋灌,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布洁段,位于F島的核電站,受9級特大地震影響共郭,放射性物質(zhì)發(fā)生泄漏祠丝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一除嘹、第九天 我趴在偏房一處隱蔽的房頂上張望写半。 院中可真熱鬧,春花似錦尉咕、人聲如沸叠蝇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悔捶。三九已至铃慷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炎功,已是汗流浹背枚冗。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛇损,地道東北人赁温。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像淤齐,于是被迫代替她去往敵國和親股囊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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