http://www.2cto.com/kf/201604/498022.html
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于
傳輸層協(xié)議。
UDP(User Datagram protocol)用戶數(shù)據(jù)報(bào)協(xié)議,它只提供應(yīng)用進(jìn)程尋址和簡(jiǎn)單的差錯(cuò)檢測(cè),并不提供其他功能。
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接。一個(gè)TCP連接必須要經(jīng)過三次“對(duì)話”才能建立起來,其中的過程非常復(fù)雜,只簡(jiǎn)單的描述下這三次對(duì)話的簡(jiǎn)單過程:主機(jī)A向主機(jī)B發(fā)出連接請(qǐng)求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù),可以嗎?”,這是第一次對(duì)話;主機(jī)B向主機(jī)A發(fā)送同意連接和要求同步(同步就是兩臺(tái)主機(jī)一個(gè)在發(fā)送,一個(gè)在接收,協(xié)調(diào)工作)的數(shù)據(jù)包:“可以,你什么時(shí)候發(fā)?”,這是第二次對(duì)話;主機(jī)A再發(fā)出一個(gè)數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步:“我現(xiàn)在就發(fā),你接著吧!”,這是第三次對(duì)話。三次“對(duì)話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次“對(duì)話”之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù)據(jù)。
1.上傳數(shù)據(jù)是怎么和后臺(tái)服務(wù)器交互的;
后臺(tái)和前端的交互手段是通過網(wǎng)絡(luò)接口來實(shí)現(xiàn)的.上傳數(shù)據(jù)通過http請(qǐng)求上傳,iOS9之后是https請(qǐng)求,需要把數(shù)據(jù)轉(zhuǎn)換成data類型,然后拼接到POST請(qǐng)求體(body)中,通過請(qǐng)求數(shù)據(jù)一起發(fā)送到服務(wù)器上。
對(duì)于服務(wù)器端的返回的格式,一般使用json格式返回。它有優(yōu)勢(shì),傳遞數(shù)據(jù)相對(duì)小,ios客戶端也容易解析。至于服務(wù)器端你可以有多種選擇,asp.net/" target="_blank">asp.net,java,php均可。
二、兩種請(qǐng)求方式的區(qū)別:
1、GET請(qǐng)求,請(qǐng)求的數(shù)據(jù)會(huì)附加在URL之后,以?分割URL和傳輸數(shù)據(jù),多個(gè)參數(shù)用&連接。URL的編碼格式采用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸。
POST請(qǐng)求:POST請(qǐng)求會(huì)把請(qǐng)求的數(shù)據(jù)放置在HTTP請(qǐng)求包的包體中。上面的item=bandsaw就是實(shí)際的傳輸數(shù)據(jù)。
因此,GET請(qǐng)求的數(shù)據(jù)會(huì)暴露在地址欄中,而POST請(qǐng)求則不會(huì)。
2、傳輸數(shù)據(jù)的大小
在HTTP規(guī)范中,沒有對(duì)URL的長(zhǎng)度和傳輸?shù)臄?shù)據(jù)大小進(jìn)行限制。但是在實(shí)際開發(fā)過程中,對(duì)于GET,特定的瀏覽器和服務(wù)器對(duì)URL的長(zhǎng)度有限制。因此,在使用GET請(qǐng)求時(shí),傳輸數(shù)據(jù)會(huì)受到URL長(zhǎng)度的限制。
對(duì)于POST,由于不是URL傳值,理論上是不會(huì)受限制的,但是實(shí)際上各個(gè)服務(wù)器會(huì)規(guī)定對(duì)POST提交數(shù)據(jù)大小進(jìn)行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。這里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改服務(wù)器的數(shù)據(jù)。比如,在進(jìn)行登錄操作,通過GET請(qǐng)求,用戶名和密碼都會(huì)暴露再URL上,因?yàn)榈卿涰?yè)面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時(shí)的用戶名和密碼就很容易被他人拿到了。除此之外,GET請(qǐng)求提交的數(shù)據(jù)還可能會(huì)造成Cross-site request frogery攻擊。
9、解釋HTTP中Get和Post,它們有什么區(qū)別,哪個(gè)使用時(shí)更加安全?
Http定義了與服務(wù)器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認(rèn)為:一個(gè)URL地址,它用于描述一個(gè)網(wǎng)絡(luò)上的資源,而HTTP中的GET,POST,PUT,DELETE就對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。到這里,大家應(yīng)該有個(gè)大概的了解了,GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。
一、原理區(qū)別
1.根據(jù)HTTP規(guī)范,GET用于信息獲取,而且應(yīng)該是安全的和冪等的。
2.根據(jù)HTTP規(guī)范,POST表示可能修改變服務(wù)器上的資源的請(qǐng)求。
http://blog.csdn.net/redoq/article/details/52807670
HTTP 協(xié)議中GET和POST到底有哪些區(qū)別
http://blog.csdn.net/wangzhilife/article/details/12440089
post 相比get 有很多優(yōu)點(diǎn),為什么現(xiàn)在的HTTP通信中大多數(shù)請(qǐng)求還是使用get?
https://www.zhihu.com/question/31640769
http://blog.csdn.net/heise668/article/details/51725228
iOS網(wǎng)絡(luò)HTTP、TCP、UDP、Socket 知識(shí)總結(jié)
http://www.cnblogs.com/dongliu/p/5455331.html
******如何處理多個(gè)網(wǎng)絡(luò)請(qǐng)求并發(fā)的情況******
http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html
iOS開發(fā)系列--并行開發(fā)(處理多個(gè)網(wǎng)絡(luò)請(qǐng)求并發(fā)的情況)
http://blog.csdn.net/michaelkiven/article/details/49148821
iOS 多個(gè)網(wǎng)絡(luò)請(qǐng)求并行/并發(fā)處理
http://blog.csdn.net/dfdfdfdfdfw/article/details/50856336
34. UDP和TCP的區(qū)別是什么?
TCP - UDP
1.基于連接與無(wú)連接;
2.對(duì)系統(tǒng)資源的要求(TCP較多,UDP少);
3.UDP程序結(jié)構(gòu)較簡(jiǎn)單;
4.流模式與數(shù)據(jù)報(bào)模式 ;
5.TCP保證數(shù)據(jù)正確性,UDP可能丟包,TCP保證數(shù)據(jù)順序,UDP不保證
TCP:面向連接、傳輸可靠(保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)、用于傳輸大量數(shù)據(jù)(流模式)、速度慢,建立連接需要開銷較多(時(shí)間,系統(tǒng)資源)。
UDP:面向非連接、傳輸不可靠、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快。
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html
http://blog.csdn.net/yipiankongbai/article/details/24435977
TCP面向連接、傳輸可靠(保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)、用于傳輸大量數(shù)據(jù)(流模式)、速度慢,建立連接需要開銷較多(時(shí)間,系統(tǒng)資源)。
UDP面向非連接、傳輸不可靠、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快。
35. TCP/IP建立連接的過程?
- 在TCP/IP 協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立連接;
- 第一次握手:建立連接時(shí),客戶端發(fā)送連接請(qǐng)求到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
- 第二次握手:服務(wù)器收到客戶端連接請(qǐng)求,向客戶端發(fā)送允許連接應(yīng)答,
此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
- 第三次握手:客戶端收到服務(wù)器的允許連接應(yīng)答,向服務(wù)器發(fā)送確認(rèn),客戶端和服務(wù)器進(jìn)入通信狀態(tài),
完成三次握手。
(所謂的三次握手,就是要有三次連接信息的發(fā)送、接收過程。
TCP連的建立需要進(jìn)行三次連接信息的發(fā)送、接收。)
******APP內(nèi)部下載和離線下載的實(shí)現(xiàn)(像迅雷一樣可以離線下載)******
內(nèi)部下載: 1. 創(chuàng)建NSURLSession 并 根據(jù)鏈接創(chuàng)建一個(gè)NSURLRequest
2. 開始下載
3. 在代理中接受數(shù)據(jù)并根據(jù)路徑寫入到文件夾下
http://www.itdecent.cn/p/fafc67475c73
開發(fā)只懂 AFN ?搞定 NSURLSession 才是硬道理
http://www.itdecent.cn/p/b0ddadd34037
iOS網(wǎng)絡(luò)1——NSURLConnection使用詳解
http://www.cnblogs.com/mddblog/p/5134783.html
iOS網(wǎng)絡(luò)2——NSURLSession使用詳解
http://www.cnblogs.com/mddblog/p/5215453.html
iOS網(wǎng)絡(luò)3—UIWebView與WKWebView使用詳解
http://www.cnblogs.com/mddblog/p/5281748.html
iOS網(wǎng)絡(luò)4——Reachability檢測(cè)網(wǎng)絡(luò)狀態(tài)
http://www.cnblogs.com/mddblog/p/5304346.html
3、使用過哪些網(wǎng)絡(luò)請(qǐng)求方式?用過哪些第三方框架,有哪些區(qū)別?
http協(xié)議申明了客戶端與服務(wù)端交互的方式,即請(qǐng)求方式:
get、post、put、delete
這四種方式可以對(duì)網(wǎng)絡(luò)資源(url描述的內(nèi)容)進(jìn)行:查、改、增、刪
CLLocationManager實(shí)現(xiàn)定位,查詢并實(shí)時(shí)顯示周邊商戶;
常用的是下面兩種:
1:get方法:下行/從服務(wù)端獲得數(shù)據(jù)
(1)get請(qǐng)求一般只是從服務(wù)器獲得數(shù)據(jù),請(qǐng)求時(shí)一般會(huì)提交服務(wù)器一些請(qǐng)求參數(shù),附加在url上的,參數(shù)之間以&分割。
(2)url中英文和數(shù)字原樣識(shí)別,而中文或者一些其他字符需要編碼。
(3)get請(qǐng)求提交的數(shù)據(jù)一般放在http協(xié)議的頭header中
2:post方法:上傳/上傳數(shù)據(jù)改變服務(wù)端內(nèi)容
(1)post請(qǐng)求多用于給服務(wù)器提交數(shù)據(jù)。
(2)post請(qǐng)求提交的數(shù)據(jù)一般放在http的主體數(shù)據(jù)包body中
用過的第三發(fā)框架有3種,ASIHttpRequest,AFNetWorking,MKNetWork.
三種的區(qū)別:ASIHttpRequest比較臃腫,MKNetWork和AFNektwork感覺比較輕量級(jí),本人推薦MKNetWork,比較簡(jiǎn)單
http://blog.csdn.net/u013087513/article/details/49386707
http://www.itdecent.cn/p/47400383dfe0
http://www.itdecent.cn/p/5e69e211b161
http://blog.csdn.net/u010165653/article/details/46472487
iOS網(wǎng)絡(luò)-優(yōu)化網(wǎng)絡(luò)請(qǐng)求性能
http://www.itdecent.cn/p/3a2fb50961af
http://www.itdecent.cn/p/f842286e664d
網(wǎng)絡(luò)請(qǐng)求和性能優(yōu)化
http://www.itdecent.cn/p/ab75b24a11e2
在網(wǎng)絡(luò)請(qǐng)求中如何提高性能
在網(wǎng)絡(luò)請(qǐng)求中如何保證安全性
iOS 在數(shù)據(jù)傳輸過程中有數(shù)據(jù)泄露的可能,客戶端在進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí)一般都采用加密的方式來保證數(shù)據(jù)的安全性,在iOS9以后,蘋果為了保護(hù)數(shù)據(jù)的安全性,使用了Https協(xié)議。
NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0)
@interface NSURLSession : NSObject
http://www.itdecent.cn/p/3e4f3de18e3b
http://blog.csdn.net/ch_soft/article/details/7369705/
iOS開發(fā)網(wǎng)絡(luò)篇—Socket編程
http://www.cnblogs.com/hissia/p/5687769.html
ios socket第三方框架 AsyncSocket使用簡(jiǎn)介
http://blog.csdn.net/wlm0813/article/details/51255097
學(xué)習(xí)使用AsyncSocket 進(jìn)行iOS socket編程
http://www.itdecent.cn/p/eb9505a4e3b8
iOS應(yīng)用中使用AsyncSocket庫(kù)處理Socket通信的用法講解
http://www.jb51.net/article/83941.htm
《ios開發(fā)》之CocoaAsyncSocket使用
http://www.itdecent.cn/p/321bc95d077f
******socket是什么?******
(1)socket是一套完成tcp,udp協(xié)議的接口。
HTTP協(xié)議:簡(jiǎn)單對(duì)象訪問協(xié)議,對(duì)應(yīng)于應(yīng)用層,HTTP協(xié)議是基于TCP連接的
tcp協(xié)議: 對(duì)應(yīng)于傳輸層
ip協(xié)議: 對(duì)應(yīng)于網(wǎng)絡(luò)層
TCP/IP是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸;而HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)。
Socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API),通過Socket,我們才能使用TCP/IP協(xié)議。Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,是對(duì)TCP/IP協(xié)議的抽象,從而形成了我們知道的一些最基本的函數(shù)接口。
http連接:http連接就是所謂的短連接,即客戶端向服務(wù)器端發(fā)送一次請(qǐng)求,服務(wù)器端響應(yīng)后連接即會(huì)斷掉;
socket連接:socket連接就是所謂的長(zhǎng)連接,理論上客戶端和服務(wù)器端一旦建立起連接將不會(huì)主動(dòng)斷掉;但是由于各種環(huán)境因素可能會(huì)是連接斷開,比如說:服務(wù)器端或客戶端主機(jī)down了,網(wǎng)絡(luò)故障,或者兩者之間長(zhǎng)時(shí)間沒有數(shù)據(jù)傳輸,網(wǎng)絡(luò)防火墻可能會(huì)斷開該連接以釋放網(wǎng)絡(luò)資源。
(2)建立Socket連接至少需要一對(duì)套接字,套接字簡(jiǎn)單來說就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來完成通信過程。其中一個(gè)運(yùn)行于客戶端,稱為ClientSocket ,另一個(gè)運(yùn)行于服務(wù)器端,稱為ServerSocket 。
套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請(qǐng)求,連接確認(rèn)。
1。服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求。
2??蛻舳苏?qǐng)求:指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。3。連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。
******網(wǎng)絡(luò)通信用過哪些方式(100%的人說了AFNetworking...)如何處理多個(gè)網(wǎng)絡(luò)請(qǐng)求并發(fā)的情況******
1)、直接使用socket的方式
2)、AFNetworking
使用多線程中的并發(fā)隊(duì)列去處理網(wǎng)絡(luò)的并發(fā)請(qǐng)求
http與https的區(qū)別,https的好處有哪些?
http://www.mahaixiang.cn/internet/1233.html
https://www.wosign.com/faq/faq2016-0301-02.htm
https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的。
HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議、要比http協(xié)議安全。
HTTPS對(duì)比HTTP可以在很大程度上提供安全的DNS基礎(chǔ)設(shè)施
HTTPS優(yōu)缺點(diǎn)、原理解析:我們的網(wǎng)站該不該做HTTPS
http://www.chinaz.com/web/2017/0224/663236.shtml
為什么更安全的 HTTPS 協(xié)議沒有在互聯(lián)網(wǎng)上全面采用?
https://www.zhihu.com/question/19580839
https://www.zhihu.com/question/25119364
http://www.chinaz.com/web/2015/0320/391752.shtml
YYModel:
http://blog.csdn.net/u012946824/article/details/51788527
線程:
http://blog.csdn.net/u013488229/article/details/48165569
http://www.cnblogs.com/apem/p/4340484.html

刨根問底Objective-C Runtime
http://www.cocoachina.com/ios/20141224/10740.html
http://www.cnblogs.com/yswdarren/p/3619303.html
自動(dòng)化編譯打包:
http://www.itdecent.cn/p/bd4c22952e01
http://www.cocoachina.com/ios/20160302/15501.html
http://www.itdecent.cn/p/1229476fbce4
http://www.cnblogs.com/itlover2013/p/5614195.html? 坑
多年iOS開發(fā)經(jīng)驗(yàn)總結(jié)
http://www.itdecent.cn/p/1ff9e44ccc78
http://www.itdecent.cn/p/9fcd37c0ea05
iOS Crash 殺手排名