HTTP請求報文:請求行(包括http協(xié)議版本,請求方法等),消息報頭(連接情況潮尝,接收的數(shù)據(jù)類型榕吼,接收數(shù)據(jù)范圍等),請求正文(post才有衍锚,存放請求的數(shù)據(jù))
HTTP響應(yīng)報文包括:狀態(tài)行(http協(xié)議版本友题,狀態(tài)代碼),消息報頭(連接情況戴质,返回數(shù)據(jù)長度等)度宦,響應(yīng)正文(響應(yīng)的數(shù)據(jù))
TCP是面向連接的協(xié)議,必須和對方經(jīng)過三次握手建立可靠的連接告匠,然后雙方就可以正式發(fā)送數(shù)據(jù)戈抄。
UDP是一個非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接后专,當(dāng)它想傳送數(shù)據(jù)時只需要發(fā)送到網(wǎng)絡(luò)上划鸽。在發(fā)送端;接收端戚哎,UDP把每個消息段放在隊列中裸诽,應(yīng)用程序每次從隊列中讀一個消息段。
1.基于連接與無連接型凳;
2.對系統(tǒng)資源的要求(TCP較多丈冬,UDP少);
3.UDP程序結(jié)構(gòu)較簡單甘畅;
4.TCP保證數(shù)據(jù)正確性埂蕊,UDP可能丟包,TCP保證數(shù)據(jù)順序疏唾,UDP不保證蓄氧。
HTTP:基于TCP連接的網(wǎng)絡(luò)協(xié)議,短連接
Socket:對TCP/IP協(xié)議的封裝槐脏,是一組調(diào)用接口喉童,長連接
POST GET區(qū)別:
1.從請求的數(shù)據(jù)來說,post請求參數(shù)是放在request body里的顿天,而GET請求參數(shù)放在URL里泄朴,請求的數(shù)據(jù)就相對比較限制重抖。
2.在效率方面GET請求要快點
3.而在ios我們使用GET請求,只需要設(shè)置好緩存策略祖灰,系統(tǒng)的NSURLCache就會幫助我們對數(shù)據(jù)進行緩存(HTTP,HTTPS都可以)。
HTTPS
TLS是建立在SSL協(xié)議規(guī)范之上畔规,兩者差別極小局扶,可以理解為SSL ,因此把這兩者并列稱呼(SSL/TLS),因為這兩者可以視作同一個東西的不同階段叁扫。
Https是Http的安全版本三妈,是使用SSL / STL進行加密的Http協(xié)議。
Http是基于TCP協(xié)議的莫绣,在傳輸?shù)拿恳粋€節(jié)點數(shù)據(jù)包都可能被篡改畴蒲。而Https有自己獨特的握手,建立連接对室,數(shù)據(jù)校驗機制模燥。一旦在數(shù)據(jù)傳輸過程中發(fā)生篡改,則校驗失敗掩宜,請求直接被拋棄蔫骂。
HTTPS客戶端與服務(wù)器交互過程:
1.服務(wù)器必須要有一套數(shù)字證書,證書其實就是一對公鑰和私鑰(相當(dāng)于一把鑰匙和一個鎖頭)
2牺汤、客戶端第一次請求時辽旋,服務(wù)器會返回一個包含公鑰的數(shù)字證書給客戶端;
2檐迟、客戶端在判斷證書可信任后补胚,產(chǎn)生一段隨機數(shù),這個隨機數(shù)就作為通信的密鑰追迟,我們稱之為對稱密鑰溶其,用公鑰加密這段隨機數(shù),然后發(fā)送到服務(wù)器
3怔匣、客戶端服務(wù)器雙方通過的對稱密鑰對傳輸?shù)臄?shù)據(jù)進行加密握联,保證了數(shù)據(jù)的私密性和完整性。