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)程尋址和簡單的差錯(cuò)檢測彤守,并不提供其他功能孵坚。
TCP(Transmission Control Protocol养交,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前骗污,必須和對(duì)方建立可靠的連接着撩。一個(gè)TCP連接必須要經(jīng)過三次“對(duì)話”才能建立起來诅福,其中的過程非常復(fù)雜,只簡單的描述下這三次對(duì)話的簡單過程:主機(jī)A向主機(jī)B發(fā)出連接請求數(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請求上傳演侯,iOS9之后是https請求姿染,需要把數(shù)據(jù)轉(zhuǎn)換成data類型,然后拼接到POST請求體(body)中,通過請求數(shù)據(jù)一起發(fā)送到服務(wù)器上悬赏。
對(duì)于服務(wù)器端的返回的格式狡汉,一般使用json格式返回。它有優(yōu)勢闽颇,傳遞數(shù)據(jù)相對(duì)小盾戴,ios客戶端也容易解析。至于服務(wù)器端你可以有多種選擇兵多,asp.net/" target="_blank">asp.net,java,php均可尖啡。
二、兩種請求方式的區(qū)別:
1剩膘、GET請求衅斩,請求的數(shù)據(jù)會(huì)附加在URL之后,以?分割URL和傳輸數(shù)據(jù)怠褐,多個(gè)參數(shù)用&連接畏梆。URL的編碼格式采用的是ASCII編碼,而不是uniclde奈懒,即是說所有的非ASCII字符都要編碼之后再傳輸奠涌。
POST請求:POST請求會(huì)把請求的數(shù)據(jù)放置在HTTP請求包的包體中。上面的item=bandsaw就是實(shí)際的傳輸數(shù)據(jù)磷杏。
因此溜畅,GET請求的數(shù)據(jù)會(huì)暴露在地址欄中,而POST請求則不會(huì)极祸。
2慈格、傳輸數(shù)據(jù)的大小
在HTTP規(guī)范中,沒有對(duì)URL的長度和傳輸?shù)臄?shù)據(jù)大小進(jìn)行限制贿肩。但是在實(shí)際開發(fā)過程中峦椰,對(duì)于GET龄寞,特定的瀏覽器和服務(wù)器對(duì)URL的長度有限制汰规。因此,在使用GET請求時(shí)物邑,傳輸數(shù)據(jù)會(huì)受到URL長度的限制溜哮。
對(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請求,用戶名和密碼都會(huì)暴露再URL上茅逮,因?yàn)榈卿涰撁嬗锌赡鼙粸g覽器緩存以及其他人查看瀏覽器的歷史記錄的原因璃赡,此時(shí)的用戶名和密碼就很容易被他人拿到了。除此之外献雅,GET請求提交的數(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ù)器上的資源的請求梭依。
淺談HTTP中GET挣柬、POST用法以及它們的區(qū)別
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ù)請求還是使用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ò)請求并發(fā)的情況******
http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html
iOS開發(fā)系列--并行開發(fā)(處理多個(gè)網(wǎng)絡(luò)請求并發(fā)的情況)
http://blog.csdn.net/michaelkiven/article/details/49148821
iOS 多個(gè)網(wǎng)絡(luò)請求并行/并發(fā)處理
http://blog.csdn.net/dfdfdfdfdfw/article/details/50856336
34. UDP和TCP的區(qū)別是什么侧到?
TCP - UDP
1.基于連接與無連接;
2.對(duì)系統(tǒng)資源的要求(TCP較多淤击,UDP少)匠抗;
3.UDP程序結(jié)構(gòu)較簡單;
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ā)送連接請求到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài)计贰,等待服務(wù)器確認(rèn)钦睡;
- 第二次握手:服務(wù)器收到客戶端連接請求,向客戶端發(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.reibang.com/p/fafc67475c73
開發(fā)只懂 AFN ?搞定 NSURLSession 才是硬道理
http://www.reibang.com/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檢測網(wǎng)絡(luò)狀態(tài)
http://www.cnblogs.com/mddblog/p/5304346.html
3汪厨、使用過哪些網(wǎng)絡(luò)請求方式逻族?用過哪些第三方框架,有哪些區(qū)別骄崩?
http協(xié)議申明了客戶端與服務(wù)端交互的方式聘鳞,即請求方式:
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請求一般只是從服務(wù)器獲得數(shù)據(jù),請求時(shí)一般會(huì)提交服務(wù)器一些請求參數(shù)拉一,附加在url上的采盒,參數(shù)之間以&分割。
(2)url中英文和數(shù)字原樣識(shí)別蔚润,而中文或者一些其他字符需要編碼磅氨。
(3)get請求提交的數(shù)據(jù)一般放在http協(xié)議的頭header中
2:post方法:上傳/上傳數(shù)據(jù)改變服務(wù)端內(nèi)容
(1)post請求多用于給服務(wù)器提交數(shù)據(jù)。
(2)post請求提交的數(shù)據(jù)一般放在http的主體數(shù)據(jù)包body中
用過的第三發(fā)框架有3種嫡纠,ASIHttpRequest,AFNetWorking,MKNetWork.
三種的區(qū)別:ASIHttpRequest比較臃腫烦租,MKNetWork和AFNektwork感覺比較輕量級(jí)延赌,本人推薦MKNetWork,比較簡單
http://blog.csdn.net/u013087513/article/details/49386707
http://www.reibang.com/p/47400383dfe0
http://www.reibang.com/p/5e69e211b161
http://blog.csdn.net/u010165653/article/details/46472487
iOS網(wǎng)絡(luò)-優(yōu)化網(wǎng)絡(luò)請求性能
http://www.reibang.com/p/3a2fb50961af
http://www.reibang.com/p/f842286e664d
http://www.reibang.com/p/ab75b24a11e2
在網(wǎng)絡(luò)請求中如何提高性能
在網(wǎng)絡(luò)請求中如何保證安全性
iOS 在數(shù)據(jù)傳輸過程中有數(shù)據(jù)泄露的可能,客戶端在進(jìn)行網(wǎng)絡(luò)請求時(shí)一般都采用加密的方式來保證數(shù)據(jù)的安全性叉橱,在iOS9以后挫以,蘋果為了保護(hù)數(shù)據(jù)的安全性,使用了Https協(xié)議窃祝。
NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0)
@interface NSURLSession : NSObject
http://www.reibang.com/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使用簡介
http://blog.csdn.net/wlm0813/article/details/51255097
學(xué)習(xí)使用AsyncSocket 進(jìn)行iOS socket編程
http://www.reibang.com/p/eb9505a4e3b8
iOS應(yīng)用中使用AsyncSocket庫處理Socket通信的用法講解
http://www.jb51.net/article/83941.htm
《ios開發(fā)》之CocoaAsyncSocket使用
http://www.reibang.com/p/321bc95d077f
******socket是什么掐松?******
(1)socket是一套完成tcp,udp協(xié)議的接口粪小。
HTTP協(xié)議:簡單對(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ā)送一次請求姨丈,服務(wù)器端響應(yīng)后連接即會(huì)斷掉;
socket連接:socket連接就是所謂的長連接擅腰,理論上客戶端和服務(wù)器端一旦建立起連接將不會(huì)主動(dòng)斷掉蟋恬;但是由于各種環(huán)境因素可能會(huì)是連接斷開,比如說:服務(wù)器端或客戶端主機(jī)down了趁冈,網(wǎng)絡(luò)故障歼争,或者兩者之間長時(shí)間沒有數(shù)據(jù)傳輸,網(wǎng)絡(luò)防火墻可能會(huì)斷開該連接以釋放網(wǎng)絡(luò)資源渗勘。
(2)建立Socket連接至少需要一對(duì)套接字沐绒,套接字簡單來說就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來完成通信過程旺坠。其中一個(gè)運(yùn)行于客戶端乔遮,稱為ClientSocket ,另一個(gè)運(yùn)行于服務(wù)器端价淌,稱為ServerSocket 申眼。
套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽瞒津,客戶端請求蝉衣,連接確認(rèn)括尸。
1。服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字病毡,而是處于等待連接的狀態(tài)濒翻,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請求啦膜。
2有送。客戶端請求:指客戶端的套接字提出連接請求僧家,要連接的目標(biāo)是服務(wù)器端的套接字雀摘。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字八拱,指出服務(wù)器端套接字的地址和端口號(hào)阵赠,然后就向服務(wù)器端套接字提出連接請求。3肌稻。連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求時(shí)清蚀,就響應(yīng)客戶端套接字的請求,建立一個(gè)新的線程爹谭,把服務(wù)器端套接字的描述發(fā)給客戶端枷邪,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接诺凡。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài)东揣,繼續(xù)接收其他客戶端套接字的連接請求。
******網(wǎng)絡(luò)通信用過哪些方式(100%的人說了AFNetworking...)如何處理多個(gè)網(wǎng)絡(luò)請求并發(fā)的情況******
1)腹泌、直接使用socket的方式
2)嘶卧、AFNetworking
使用多線程中的并發(fā)隊(duì)列去處理網(wǎng)絡(luò)的并發(fā)請求
http與https的區(qū)別,https的好處有哪些真屯?
http://www.mahaixiang.cn/internet/1233.html
https://www.wosign.com/faq/faq2016-0301-02.htm
https協(xié)議需要到ca申請證書,一般免費(fèi)證書很少绑蔫,需要交費(fèi)运沦。
http是超文本傳輸協(xié)議,信息是明文傳輸配深,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443携添。
http的連接很簡單,是無狀態(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有什么區(qū)別瘾蛋?HTTPS的七個(gè)誤解
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.reibang.com/p/bd4c22952e01
http://www.cocoachina.com/ios/20160302/15501.html
http://www.reibang.com/p/1229476fbce4
http://www.cnblogs.com/itlover2013/p/5614195.html? 坑
多年iOS開發(fā)經(jīng)驗(yàn)總結(jié)
http://www.reibang.com/p/1ff9e44ccc78
http://www.reibang.com/p/9fcd37c0ea05
iOS Crash 殺手排名