iOS中的網(wǎng)絡(luò)知識(shí)匯總

1、開(kāi)放系統(tǒng)互連參考模型

833007-5893d17aa64b1043.png

2旺罢、通信協(xié)議詳解

TCP/IP協(xié)議
TCP/IP 是一個(gè)協(xié)議族旷余,也是按照層次劃分绢记。共四層:應(yīng)用層,傳輸層正卧,互連網(wǎng)絡(luò)層蠢熄,網(wǎng)絡(luò)接口層。 OSI網(wǎng)絡(luò)協(xié)議模型七層穗酥,是一個(gè)參考模型护赊,而TCP/IP協(xié)議是事實(shí)上的標(biāo)準(zhǔn)。TCP/IP協(xié)議和OSI模型并不沖突砾跃,TCP/IP協(xié)議中的應(yīng)用層協(xié)議,就對(duì)應(yīng)于OSI中的應(yīng)用層节吮,表示層抽高,會(huì)話(huà)層。TCP/IP中有兩個(gè)重要的協(xié) 議透绩,傳輸層的TCP協(xié)議和互連網(wǎng)絡(luò)層的IP協(xié)議翘骂,因此就拿這兩個(gè)協(xié)議做代表,來(lái)命名整個(gè)協(xié)議族了帚豪,在說(shuō)TCP/IP協(xié)議時(shí)碳竟,是指整個(gè)協(xié)議族。

TCP傳輸控制協(xié)議
1狸臣、建立連接莹桅,形成傳輸數(shù)據(jù)的通道
2、在連接中進(jìn)行大數(shù)據(jù)傳輸(數(shù)據(jù)大小不做限制)
3烛亦、通過(guò)三次握手完成連接铐达,是可靠協(xié)議,安全送到
4檬果、必須連接选脊,效率會(huì)稍低

  • 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ā)三次握手容劳。
1251668-9fac8c3768d0db89.png

注:
SYN(synchronous)是同步標(biāo)志
ACK (Acknowledgement)是確認(rèn)標(biāo)志
Seq是序列號(hào)

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

第二次握手:服務(wù)器發(fā)回確認(rèn)包(ACK)應(yīng)答。即SYN標(biāo)志位和ACK標(biāo)志位均為1同時(shí)咽块,將確認(rèn)序號(hào)設(shè)置為客戶(hù)的序列號(hào)加1以亭罪,即X+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ě)序列號(hào)的+1。

  • TCP的四次揮手
1251668-8c205fbb4d16460c.png

當(dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后惋嚎,可以直接發(fā)送SYN+ACK報(bào)文。其中ACK報(bào)文是用來(lái)應(yīng)答的站刑,SYN報(bào)文是用來(lái)同步的绞旅。但是關(guān)閉連接時(shí)结榄,當(dāng)Server端收到FIN報(bào)文時(shí)绣否,很可能并不會(huì)立即關(guān)閉SOCKET段磨,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴Client端耗绿,”你發(fā)的FIN報(bào)文我收到了”债蜜。只有等到我Server端所有的報(bào)文都

  • TCP客戶(hù)端-服務(wù)器程序設(shè)計(jì)基本框架
1251668-ca38fff914244682.jpg

UDP 用戶(hù)數(shù)據(jù)報(bào)協(xié)議
1、將數(shù)據(jù)及源和目的封裝成數(shù)據(jù)報(bào)究反,不需要建立連接
2寻定、每個(gè)數(shù)據(jù)報(bào)的大小限制在64K之內(nèi)
3、因?yàn)闊o(wú)需連接精耐,所以是不可靠傳輸協(xié)議
4狼速、不需要建立連接,速度快

  • UDP客戶(hù)端-服務(wù)端程序設(shè)計(jì)基本框架
1251668-643de87da155caa2.jpg

UDP是面向無(wú)連接的協(xié)議黍氮,只要知道接收端的IP和端口唐含,且網(wǎng)絡(luò)是可達(dá)的,任何主機(jī)都可以向接收端發(fā)送數(shù)據(jù)沫浆。這時(shí)候捷枯,如果一次能讀取超過(guò)一個(gè)報(bào)文的數(shù)據(jù),則會(huì)亂套专执。比如淮捆,主機(jī)A向發(fā)送了報(bào)文P1,主機(jī)B發(fā)送了報(bào)文P2,如果能夠讀取超過(guò)一個(gè)報(bào)文的數(shù)據(jù)攀痊,那么就會(huì)將P1和P2的數(shù)據(jù)合并在了一起桐腌,這樣的數(shù)據(jù)是沒(méi)有意義的。

端口號(hào)
TCP和UDP都是IP層面的傳輸協(xié)議苟径,是IP與上層之間的處理接口案站。TCP和UDP端口號(hào)被設(shè)計(jì)來(lái)區(qū)分運(yùn)行在單個(gè)設(shè)備上的多重應(yīng)用程序的IP地址。由于同一臺(tái)計(jì)算機(jī)上可能會(huì)運(yùn)行多個(gè)網(wǎng)絡(luò)應(yīng)用程序棘街,所以計(jì)算機(jī)需要確保目標(biāo)計(jì)算機(jī)上接收源主機(jī)數(shù)據(jù)包的軟件應(yīng)用程序的正確性蟆盐,以及響應(yīng)能夠被發(fā)送到源主機(jī)的正確應(yīng)用程序上。該過(guò)程正是通過(guò)使用TCP或UDP端口號(hào)來(lái)實(shí)現(xiàn)的遭殉。

--即每一個(gè)應(yīng)用都會(huì)在網(wǎng)卡上注冊(cè)一個(gè)端口號(hào)用來(lái)區(qū)分同一臺(tái)設(shè)備上應(yīng)用的之間的通信

在TCP和UDP頭部分石挂,有“源端口”和“目標(biāo)端口”段,主要用于顯示發(fā)送和接收過(guò)程中的身份識(shí)別信息险污。IP 地址和端口號(hào)合在一起被稱(chēng)為“套接字”痹愚。TCP端口比較復(fù)雜,其工作方式與UDP端口不同蛔糯。UDP端口對(duì)于基于UDP的通信作為單一消息隊(duì)列和網(wǎng)絡(luò)端點(diǎn)來(lái)操作拯腮,而所有TCP通信的終點(diǎn)都是唯一的連接。每個(gè)TCP連接由兩個(gè)端點(diǎn)唯一識(shí)別蚁飒。由于所有TCP連接由兩對(duì) IP 地址和TCP端口唯一識(shí)別(每個(gè)所連主機(jī)都有一個(gè)地址/端口對(duì))疾瓮,因此每個(gè)TCP服務(wù)器端口都能提供對(duì)多個(gè)連接的共享訪(fǎng)問(wèn)

再看一下IP數(shù)據(jù)包和TCP/UDP的數(shù)據(jù)包:

1156719-749d23000ec36f87.png

http 協(xié)議
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議飒箭。
http協(xié)議規(guī)定了客戶(hù)端和服務(wù)器之間的數(shù)據(jù)傳輸格式.
特點(diǎn):
1、簡(jiǎn)單快速:
http協(xié)議簡(jiǎn)單,通信速度很快;
2蜒灰、靈活:
http協(xié)議允許傳輸任意類(lèi)型的數(shù)據(jù);
3弦蹂、短連接:
http協(xié)議限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器對(duì)客戶(hù)端的請(qǐng)求作出響應(yīng)后,馬上斷開(kāi)連接.這種方式可以節(jié)省傳輸時(shí)間.

  • http請(qǐng)求
    http協(xié)議規(guī)定:一個(gè)完整的http請(qǐng)求包含'請(qǐng)求行','請(qǐng)求頭','請(qǐng)求體'三個(gè)部分;
    1、請(qǐng)求行:包含了請(qǐng)求方法,請(qǐng)求資源路徑,http協(xié)議版本. "GET /resources/images/ HTTP/1.1"
    2强窖、請(qǐng)求頭:包含了對(duì)客戶(hù)端的環(huán)境描述,客戶(hù)端請(qǐng)求的主機(jī)地址等信息.
Accept: text/html ( 客戶(hù)端所能接收的數(shù)據(jù)類(lèi)型 )
Accept-Language: zh-cn ( 客戶(hù)端的語(yǔ)言環(huán)境 )
Accept-Encoding: gzip( 客戶(hù)端支持的數(shù)據(jù)壓縮格式 )
Host: m.baidu.com( 客戶(hù)端想訪(fǎng)問(wèn)的服務(wù)器主機(jī)地址 )
User-Agent: Mozilla/5.0(Macintosh;Intel Mac OS X10.10 rv:37.0) Gecko/20100101Firefox/37.0( 客戶(hù)端的類(lèi)型,客戶(hù)端的軟件環(huán)境 )

3凸椿、請(qǐng)求體:客戶(hù)端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件/圖片等.

  • http響應(yīng):服務(wù)器返回客戶(hù)端想要的數(shù)據(jù)
    http協(xié)議規(guī)定:一個(gè)完整的http響應(yīng)包含'狀態(tài)行','響應(yīng)頭','實(shí)體內(nèi)容'三個(gè)部分;
    1、狀態(tài)行:包含了http協(xié)議版本,狀態(tài)嗎,狀態(tài)英文名稱(chēng).
    "HTTP/1.1 200 OK"
    2翅溺、響應(yīng)頭:包含了對(duì)服務(wù)器的描述,對(duì)返回?cái)?shù)據(jù)的描述.
Content-Encoding: gzip(服務(wù)器支持的數(shù)據(jù)壓縮格式) Content-Length: 1528(返回?cái)?shù)據(jù)的長(zhǎng)度)
Content-Type:application/xhtml+xml;charset=utf-8(返回?cái)?shù)據(jù)的類(lèi)型)
Date: Mon,15Jun201509:06:46GMT(響應(yīng)的時(shí)間) Server: apache (服務(wù)器類(lèi)型)

3脑漫、實(shí)體內(nèi)容:服務(wù)器返回給客戶(hù)端的具體數(shù)據(jù)(圖片/html/文件...).

  • http方法
    http協(xié)議定義了很多方法對(duì)應(yīng)不同的資源操作,其中最常用的是GET和POST方法。
    eg:GET咙崎、POST优幸、OPTIONS、HEAD褪猛、PUT网杆、DELETE、TRACE、CONNECT碳却、PATCH
    增:PUT
    刪:DELETE
    改:POST
    查:GET
    因?yàn)镚ET和POST可以實(shí)現(xiàn)上述所有操作,所以,在現(xiàn)實(shí)開(kāi)發(fā)中,GET和POST方法使用的最為廣泛队秩,除此以外HEAD請(qǐng)求使用頻率也比較高;
    1昼浦、GET請(qǐng)求
    在請(qǐng)求URL后面以?的形式跟上發(fā)給服務(wù)器的參數(shù),參數(shù)以"參數(shù)名"="參數(shù)值"的形式拼接,多個(gè)參數(shù)之間用&分隔;
    GET的本質(zhì)是從服務(wù)器得到數(shù)據(jù),效率更高.并且GET請(qǐng)求可以被緩存.
    注意:GET的長(zhǎng)度是有限制的,不同的瀏覽器有不同的長(zhǎng)度限制,一般在2~8K之間;

    2馍资、POST請(qǐng)求
    POST的本質(zhì)是向服務(wù)器發(fā)送數(shù)據(jù),也可以獲得服務(wù)器處理之后的結(jié)果,效率不如GET.POST請(qǐng)求不可以被緩存,每次刷新之后都需要重新提交表單.
    發(fā)送給服務(wù)器的參數(shù)全部放在'請(qǐng)求體'中;
    理論上,POST傳遞的數(shù)據(jù)量沒(méi)有限制.
    注意:所有涉及到用戶(hù)隱私的數(shù)據(jù)(密碼/銀行卡號(hào)等...)都要用POST的方式傳遞.

    3、HEAD請(qǐng)求
    HEAD方法通常用在下載文件之前,獲取遠(yuǎn)程服務(wù)器的文件信息!相比于GET請(qǐng)求,不會(huì)下載文件數(shù)據(jù),只獲得響應(yīng)頭信息!
    一般,使用HEAD方法的目的是提前告訴用戶(hù)下載文件的信息,由用戶(hù)確定是否下載文件!所以, HEAD方法,最好發(fā)送同步請(qǐng)求!

https協(xié)議
簡(jiǎn)單來(lái)說(shuō)关噪,HTTPS就是安全版的HTTP鸟蟹,并且由于當(dāng)今時(shí)代對(duì)安全性要求更高,chrome和firefox都大力支持網(wǎng)站使用HTTPS色洞,蘋(píng)果也在ios 10系統(tǒng)中強(qiáng)制app使用HTTPS來(lái)傳輸數(shù)據(jù)

  • http和https的區(qū)別
    1戏锹、HTTPS協(xié)議需要到CA申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少火诸,需要交費(fèi)锦针。
    2、HTTP協(xié)議運(yùn)行在TCP之上置蜀,所有傳輸?shù)膬?nèi)容都是明文奈搜,HTTPS運(yùn)行在SSL/TLS之上,SSL/TLS運(yùn)行在TCP之上盯荤,所有傳輸?shù)膬?nèi)容都經(jīng)過(guò)加密的馋吗。
    3、HTTP和HTTPS使用的是完全不同的連接方式秋秤,用的端口也不一樣宏粤,前者是80,后者是443灼卢。
    4绍哎、HTTPS可以有效的防止運(yùn)營(yíng)商劫持,解決了防劫持的一個(gè)大問(wèn)題鞋真。
e6c41c02a9b4a29a7ee504ea7587de55.png

https認(rèn)證過(guò)程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末崇堰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涩咖,更是在濱河造成了極大的恐慌海诲,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檩互,死亡現(xiàn)場(chǎng)離奇詭異特幔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)闸昨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)敬辣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雪标,“玉大人,你說(shuō)我怎么就攤上這事溉跃〈迮伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵撰茎,是天一觀的道長(zhǎng)嵌牺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)龄糊,這世上最難降的妖魔是什么逆粹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮炫惩,結(jié)果婚禮上僻弹,老公的妹妹穿的比我還像新娘。我一直安慰自己他嚷,他們只是感情好蹋绽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著筋蓖,像睡著了一般卸耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粘咖,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天蚣抗,我揣著相機(jī)與錄音,去河邊找鬼瓮下。 笑死翰铡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讽坏。 我是一名探鬼主播两蟀,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼震缭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起战虏,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拣宰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后烦感,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體巡社,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年手趣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晌该。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥荔。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朝群,靈堂內(nèi)的尸體忽然破棺而出燕耿,到底是詐尸還是另有隱情,我是刑警寧澤姜胖,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布誉帅,位于F島的核電站,受9級(jí)特大地震影響右莱,放射性物質(zhì)發(fā)生泄漏蚜锨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一慢蜓、第九天 我趴在偏房一處隱蔽的房頂上張望亚再。 院中可真熱鬧,春花似錦晨抡、人聲如沸氛悬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)圆雁。三九已至,卻和暖如春帆谍,著一層夾襖步出監(jiān)牢的瞬間伪朽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工汛蝙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烈涮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓窖剑,卻偏偏與公主長(zhǎng)得像坚洽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子西土,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • 個(gè)人認(rèn)為讶舰,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的聚假,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,068評(píng)論 6 174
  • 1. 基礎(chǔ)知識(shí) 1.1 3種常見(jiàn)的計(jì)算機(jī)體系結(jié)構(gòu)劃分 OSI分層(7層):物理層瓣俯、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層鹅颊、傳輸層、會(huì)話(huà)...
    Mr希靈閱讀 19,877評(píng)論 6 120
  • 網(wǎng)絡(luò)概念第一天 兩臺(tái)電腦怎么通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù)墓造?怎樣才能知道傳輸?shù)氖菙?shù)據(jù)堪伍?誰(shuí)摸過(guò)網(wǎng)線(xiàn)锚烦? 看電影,怎么看的帝雇?通過(guò)電流涮俄,...
    小吖朱閱讀 1,555評(píng)論 0 1
  • 今天對(duì)六年級(jí)的志愿數(shù)據(jù)弄了一天,真的感覺(jué)很累摊求,整個(gè)人都很疲勞禽拔。而我又受到批評(píng),說(shuō)我做事沒(méi)有以前認(rèn)真室叉,我真的有點(diǎn)不開(kāi)...
    噯寧閱讀 154評(píng)論 0 0