http://www.2cto.com/kf/201604/498022.html
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于
传输层协议。
UDP(User Datagram protocol)用户数据报协议,它只提供应用进程寻址和简单的差错检测,并不提供其他功能。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
1.上传数据是怎么和后台服务器交互的;
后台和前端的交互手段是通过网络接口来实现的.上传数据通过http请求上传,iOS9之后是https请求,需要把数据转换成data类型,然后拼接到POST请求体(body)中,通过请求数据一起发送到服务器上。
对于服务器端的返回的格式,一般使用json格式返回。它有优势,传递数据相对小,ios客户端也容易解析。至于服务器端你可以有多种选择,asp.net/" target="_blank">asp.net,java,php均可。
二、两种请求方式的区别:
1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
2、传输数据的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。
9、解释HTTP中Get和Post,它们有什么区别,哪个使用时更加安全?
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
一、原理区别
1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
2.根据HTTP规范,POST表示可能修改变服务器上的资源的请求。
http://blog.csdn.net/redoq/article/details/52807670
http://blog.csdn.net/wangzhilife/article/details/12440089
post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
https://www.zhihu.com/question/31640769
http://blog.csdn.net/heise668/article/details/51725228
http://www.cnblogs.com/dongliu/p/5455331.html
******如何处理多个网络请求并发的情况******
http://www.cnblogs.com/yanhuaxuanlan/p/4683557.html
http://blog.csdn.net/michaelkiven/article/details/49148821
http://blog.csdn.net/dfdfdfdfdfw/article/details/50856336
34. UDP和TCP的区别是什么?
TCP - UDP
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html
http://blog.csdn.net/yipiankongbai/article/details/24435977
TCP面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
35. TCP/IP建立连接的过程?
- 在TCP/IP 协议中,TCP协议提供可靠的连接服务,采用三次握手建立连接;
- 第一次握手:建立连接时,客户端发送连接请求到服务器,并进入SYN_SEND状态,等待服务器确认;
- 第二次握手:服务器收到客户端连接请求,向客户端发送允许连接应答,
此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的允许连接应答,向服务器发送确认,客户端和服务器进入通信状态,
完成三次握手。
(所谓的三次握手,就是要有三次连接信息的发送、接收过程。
TCP连的建立需要进行三次连接信息的发送、接收。)
******APP内部下载和离线下载的实现(像迅雷一样可以离线下载)******
内部下载: 1. 创建NSURLSession 并 根据链接创建一个NSURLRequest
2. 开始下载
3. 在代理中接受数据并根据路径写入到文件夹下
http://www.jianshu.com/p/fafc67475c73
开发只懂 AFN ?搞定 NSURLSession 才是硬道理
http://www.jianshu.com/p/b0ddadd34037
http://www.cnblogs.com/mddblog/p/5134783.html
http://www.cnblogs.com/mddblog/p/5215453.html
iOS网络3—UIWebView与WKWebView使用详解
http://www.cnblogs.com/mddblog/p/5281748.html
http://www.cnblogs.com/mddblog/p/5304346.html
3、使用过哪些网络请求方式?用过哪些第三方框架,有哪些区别?
http协议申明了客户端与服务端交互的方式,即请求方式:
get、post、put、delete
这四种方式可以对网络资源(url描述的内容)进行:查、改、增、删
CLLocationManager实现定位,查询并实时显示周边商户;
常用的是下面两种:
1:get方法:下行/从服务端获得数据
(1)get请求一般只是从服务器获得数据,请求时一般会提交服务器一些请求参数,附加在url上的,参数之间以&分割。
(2)url中英文和数字原样识别,而中文或者一些其他字符需要编码。
(3)get请求提交的数据一般放在http协议的头header中
2:post方法:上传/上传数据改变服务端内容
(1)post请求多用于给服务器提交数据。
(2)post请求提交的数据一般放在http的主体数据包body中
用过的第三发框架有3种,ASIHttpRequest,AFNetWorking,MKNetWork.
三种的区别:ASIHttpRequest比较臃肿,MKNetWork和AFNektwork感觉比较轻量级,本人推荐MKNetWork,比较简单
http://blog.csdn.net/u013087513/article/details/49386707
http://www.jianshu.com/p/47400383dfe0
http://www.jianshu.com/p/5e69e211b161
http://blog.csdn.net/u010165653/article/details/46472487
http://www.jianshu.com/p/3a2fb50961af
http://www.jianshu.com/p/f842286e664d
http://www.jianshu.com/p/ab75b24a11e2
在网络请求中如何提高性能
在网络请求中如何保证安全性
iOS 在数据传输过程中有数据泄露的可能,客户端在进行网络请求时一般都采用加密的方式来保证数据的安全性,在iOS9以后,苹果为了保护数据的安全性,使用了Https协议。
NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0)
@interface NSURLSession : NSObject
http://www.jianshu.com/p/3e4f3de18e3b
http://blog.csdn.net/ch_soft/article/details/7369705/
http://www.cnblogs.com/hissia/p/5687769.html
ios socket第三方框架 AsyncSocket使用简介
http://blog.csdn.net/wlm0813/article/details/51255097
学习使用AsyncSocket 进行iOS socket编程
http://www.jianshu.com/p/eb9505a4e3b8
iOS应用中使用AsyncSocket库处理Socket通信的用法讲解
http://www.jb51.net/article/83941.htm
《ios开发》之CocoaAsyncSocket使用
http://www.jianshu.com/p/321bc95d077f
******socket是什么?******
(1)socket是一套完成tcp,udp协议的接口。
HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的
tcp协议: 对应于传输层
ip协议: 对应于网络层
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。
http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。
(2)建立Socket连接至少需要一对套接字,套接字简单来说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
1。服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
2。客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。3。连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
******网络通信用过哪些方式(100%的人说了AFNetworking...)如何处理多个网络请求并发的情况******
1)、直接使用socket的方式
2)、AFNetworking
使用多线程中的并发队列去处理网络的并发请求
http://www.mahaixiang.cn/internet/1233.html
https://www.wosign.com/faq/faq2016-0301-02.htm
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议、要比http协议安全。
HTTPS对比HTTP可以在很大程度上提供安全的DNS基础设施
http://www.chinaz.com/web/2017/0224/663236.shtml
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
自动化编译打包:
http://www.jianshu.com/p/bd4c22952e01
http://www.cocoachina.com/ios/20160302/15501.html
http://www.jianshu.com/p/1229476fbce4
http://www.cnblogs.com/itlover2013/p/5614195.html 坑
多年iOS开发经验总结
http://www.jianshu.com/p/1ff9e44ccc78
http://www.jianshu.com/p/9fcd37c0ea05
iOS Crash 杀手排名