OSI網(wǎng)絡(luò)七層協(xié)議
- 物理層:
負責(zé)將機器語言的0.1轉(zhuǎn)化為電壓高低,脈沖光的閃滅輸出給物理的傳輸介質(zhì)(光纖)缝裤。 - 數(shù)據(jù)鏈路層:
負責(zé)物理層上的通信傳輸,把0.1序列化為有意義的數(shù)據(jù)幀傳給對端杨赤。通過Mac地址雹顺,目的是識別鏈接到同一傳輸介質(zhì)上的設(shè)備。因此厕鹃,這一把分層中mac地址信息的首部附加到網(wǎng)絡(luò)層轉(zhuǎn)發(fā)過來的數(shù)據(jù)上兢仰,發(fā)送到網(wǎng)絡(luò)。 - 網(wǎng)絡(luò)層:
將數(shù)據(jù)傳輸?shù)侥繕说刂芳敛辏繕说刂房梢允怯啥鄠€網(wǎng)路或路由連接而成的某個地址把将,因此改層主要是尋找地址和路由的選擇。 - 傳輸層:
主要是用戶負責(zé)建立兩端節(jié)點的通信關(guān)系忆矛,保證數(shù)據(jù)傳輸安全察蹲,傳輸是直接連接雙方節(jié)點的ip地址,不經(jīng)過路由處理催训。如果A發(fā)送給B消息洽议,傳輸過程中出現(xiàn)數(shù)據(jù)丟失或者網(wǎng)絡(luò)出現(xiàn)異常只發(fā)送了部分信息到達B端,B端會反饋消息漫拭,告訴A绞铃,只收到了部分消息,A會將未發(fā)送的消息重新發(fā)送到B嫂侍,比如迅雷下載資源的時候儿捧,可以暫停荚坞,下次繼續(xù)按照上一次的進度下載 - 會話層:負責(zé)網(wǎng)絡(luò)通信的建立和斷開,選擇網(wǎng)絡(luò)通信的連接方式菲盾,是GET,POST,長連接颓影,短連接。當(dāng)負責(zé)傳輸數(shù)據(jù)發(fā)送請求時懒鉴,把表示層的數(shù)據(jù)按照一定規(guī)律和標準拆分成數(shù)據(jù)塊(每個數(shù)據(jù)庫都有一個單獨的附加首部信息诡挂,標記接收端和發(fā)送端ip)。當(dāng)負責(zé)接收數(shù)據(jù)響應(yīng)請求時:負責(zé)把比特流數(shù)據(jù)根據(jù)數(shù)據(jù)的每個節(jié)點拼接成完整的數(shù)據(jù)临谱,會話層會在接收到接收到的數(shù)據(jù)前端附加首部信息璃俗,記錄數(shù)據(jù)的傳輸順序信息。
- 表示層: 數(shù)據(jù)的轉(zhuǎn)化層悉默。當(dāng)負責(zé)傳送數(shù)據(jù)發(fā)送請求時: 會將應(yīng)用層封裝的數(shù)據(jù)轉(zhuǎn)化成網(wǎng)絡(luò)通用的標準數(shù)據(jù)格式進行傳遞城豁,當(dāng)負責(zé)接收數(shù)據(jù)響應(yīng)請求時: 會將會話層傳入的網(wǎng)絡(luò)通用標準格式數(shù)據(jù)轉(zhuǎn)換為對應(yīng)設(shè)備的數(shù)據(jù)。不同設(shè)備對同一比特流數(shù)據(jù)的解析可能會有不同的結(jié)果抄课,表示層與表層之間為了識別編碼格式唱星,也會附加首部信息。
- 應(yīng)用層:
當(dāng)負責(zé)傳送數(shù)據(jù)發(fā)送請求時: 把需要發(fā)送的數(shù)據(jù)跟磨,按照應(yīng)用的格式標準協(xié)議等封裝成對應(yīng)數(shù)據(jù)间聊。當(dāng)負責(zé)接收數(shù)據(jù)響應(yīng)請求時:把數(shù)據(jù)按照應(yīng)用的標準格式進行解析。例如在HTTP協(xié)議中抵拘,發(fā)送請求前要封裝請求頭哎榴,這些解析過程方式是根據(jù)應(yīng)用層的協(xié)議而定的,每個協(xié)議格式不一樣僵蛛。如果不同應(yīng)用標準格式不一樣尚蝌,會解析失敗,無法正確顯示數(shù)據(jù)內(nèi)容墩瞳,
例如: A電腦是Mac電腦用的pages軟件寫一個文本驼壶,然后傳給Bwindows電腦氏豌,B電腦接收到的是A電腦的數(shù)據(jù)喉酌,數(shù)據(jù)格式完全跟A電腦一樣,但是B電腦上沒有能解析A電腦pages軟件數(shù)據(jù)的工具泵喘。所以B電腦用戶無法讀取該文件泪电,文件之所以無法解析不是因為電腦端不一樣,而是因為沒有乳尖解析對象數(shù)據(jù)格式的應(yīng)用纪铺,實際上數(shù)據(jù)格式的基本封裝是應(yīng)用層自身完成的相速,還沒有到應(yīng)用層這一步。拿HTTP說鲜锚,當(dāng)應(yīng)用封裝好需要傳輸?shù)臄?shù)據(jù)進行傳輸時(例如我們平時應(yīng)用中把數(shù)據(jù)封裝在字典里然后轉(zhuǎn)成json字符串突诬,這一步驟就是應(yīng)用本身的封裝)苫拍,應(yīng)用層會根據(jù)HTTP協(xié)議對數(shù)據(jù)進行處理(封裝成HTTP的請求頭),該協(xié)議會在傳輸?shù)臄?shù)據(jù)前端附加一個首部標簽旺隙,該首部標簽表明了發(fā)送數(shù)據(jù)內(nèi)容和發(fā)送的地址
iOS中把上三層應(yīng)用層
對于我們而言理解上也就主要是4個層绒极,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層蔬捷,傳輸層垄提,應(yīng)用層
TCP/UDP協(xié)議
TCP協(xié)議是面向連接、保證高可靠性(數(shù)據(jù)無丟失周拐、數(shù)據(jù)無失序铡俐、數(shù)據(jù)無錯誤、數(shù)據(jù)無重復(fù)到達)傳輸層協(xié)議妥粟。
三次握手
- 首先客戶端向服務(wù)器發(fā)起一個建立連接的同步請求(SYN)請求
- 服務(wù)器在收到這個請求后向客戶端回復(fù)一個同步/確認(SYN/ACK)的應(yīng)答
-
客戶端在收到應(yīng)答回應(yīng)之后再向服務(wù)端發(fā)送一個確認(ACK),此時TCP連接成功
四次揮手
首先客戶端發(fā)送一個FIN消息給服務(wù)端审丘,客戶端進入FIN_WAIT_1狀態(tài)
接著服務(wù)器收到FIN后,發(fā)送一個ACK給客戶端罕容,確認序號為收到序號+1(與SYN相同备恤,一個FIN占一個序號), 服務(wù)端進入CLOSE_WAIT狀態(tài)。
服務(wù)端在回復(fù)完客戶端的TCP斷開請求后锦秒,不會馬上進行TCP斷開露泊,服務(wù)器會先確保斷開前,所有的傳輸?shù)臄?shù)據(jù)是否已經(jīng)傳輸完畢旅择,一旦確認數(shù)據(jù)傳輸完成惭笑,服務(wù)端發(fā)送一個FIN消息給客戶端,服務(wù)端進入LAST_ACK狀態(tài)生真。
最后客戶端收到FIN消息后沉噩,進入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給Server柱蟀,確認序號為收到序號+1川蒙,
服務(wù)端進入CLOSE轉(zhuǎn)臺,完成四次揮手长已。
UDP協(xié)議
UDP被稱之為用戶數(shù)據(jù)報協(xié)議位于傳輸層畜眨。提供非面向連接的網(wǎng)絡(luò)服務(wù),傳送數(shù)據(jù)不需要和服務(wù)端建立連接术瓮,只需要知道數(shù)據(jù)需要發(fā)送到哪一個IP地址和監(jiān)聽端口即可康聂,該服務(wù)傳輸?shù)臄?shù)據(jù)是不可靠的、可以由一點發(fā)送到到多點胞四。這意味著它不保證數(shù)據(jù)報的到達只負責(zé)發(fā)送恬汁,也不保證所傳送數(shù)據(jù)包的順序是否正確。
HTTP協(xié)議
基本概念客戶端(Client):移動應(yīng)用(iOS辜伟、android等應(yīng)用)
服務(wù)器(Server):為客戶端提供服務(wù)氓侧、提供數(shù)據(jù)脊另、提供資源的機器
請求(Request):客戶端向服務(wù)器索取數(shù)據(jù)的一種行為
響應(yīng)(Response):服務(wù)器對客戶端的請求做出的反應(yīng),一般指返回數(shù)據(jù)給客戶端
HTTP協(xié)議的特點
HTTP協(xié)議永遠都是客戶端發(fā)起請求约巷,服務(wù)器回送響應(yīng)尝蠕。這樣就限制了使用HTTP協(xié)議,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候载庭,服務(wù)器將消息推送給客戶端看彼。
GET和POST對比和區(qū)別
GET和POST的主要區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上
GET:在請求URL后面以?的形式拼接發(fā)給服務(wù)器的參數(shù),多個參數(shù)之間用&隔開囚聚。
比如http://www.test.com/login?username=123&pwd=234&type=JSON由于瀏覽器和服務(wù)器對URL長度有限制靖榕,因此在URL后面附帶的參數(shù)是有限制的,通常不能超過1KB
POST:發(fā)給服務(wù)器的參數(shù)全部放在請求體中顽铸,理論上茁计,POST傳遞的數(shù)據(jù)量沒有限制(具體還得看服務(wù)器的處理能力)
HTTPS
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer):是以安全為目標的HTTP通道,簡單講是HTTP的安全版谓松。即HTTP下加入SSL層星压,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細內(nèi)容就需要SSL
HTTPS和HTTP的區(qū)別主要為以下四點:
https協(xié)議需要到ca申請證書鬼譬,一般免費證書很少娜膘,需要交費。
http是超文本傳輸協(xié)議优质,信息是明文傳輸竣贪,https 則是具有安全性的ssl加密傳輸協(xié)議。
http和https使用的是完全不同的連接方式巩螃,用的端口也不一樣演怎,前者是80,后者是443避乏。
http的連接很簡單爷耀,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸拍皮、身份認證的網(wǎng)絡(luò)協(xié)議歹叮,比http協(xié)議安全。
參考鏈接