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.上传数据是怎么和后台server交互的。
后台和前端的交互手段是经过网络接口来实现的.上传数据经过http请求上传,iOS9以后是https请求,需要把数据转换成data类型,而后拼接到POST请求体(body)中。经过请求数据一块儿发送到server上。
对于server端的返回的格式,通常使用json格式返回。它有优点,传递数据相对小,iosclient也easy解析。
至于server端你可以有多种选择, asp.net ,java, php 都可。php
2、两种请求方式的差异:
1
、
GET
请求,请求的数据会附加在
URL
以后,以
?切割URL和数据传输,多个參数用&链接。URL的编码格式採用的是ASCII编码,而不是uniclde。便是说所有的非ASCII字符都要编码以后再传输。html
POST
请求:
POST
请求会把请求的数据放置在
HTTP
请求包的包体中。上面的
item=bandsaw
就是实际的数据传输。
所以,
GET
请求的数据会暴露在地址栏中,而
POST
请求则不会。
2
、数据传输的大小
在
HTTP
规范中,没有对
URL
的长度和传输的数据大小进行限制。但是在实际开发过程当中,对于
GET
,特定的浏览器和server对
URL
的长度有限制。所以,在使用GET请求时。数据传输会受到URL长度的限制。前端
对于
POST
,由于不是
URL
传值,理论上是不会受限制的,但是实际上各个server会规定对
POST
提交数据大小进行限制。
Apache
、
IIS
都有各自的配置。
3
、安全性
POST
的安全性比
GET
的高。这里的安全是指真正的安全,而不一样于上面
GET
提到的安全方法中的安全。上面提到的安全不过不改动server的数据。比方,在进行登陆操做,经过GET请求,username和password都会暴露再URL上。因为登陆页面有可能被浏览器缓存以及其它人查看浏览器的历史记录的缘由。此时的username和password就很是easy被他人拿到了。除此以外,GET请求提交的数据还可能会形成Cross-site request frogery攻击java
九、解释HTTP中Get和Post,它们有什么差异,哪一个使用时更加安全?
Http定义了与server交互的不一样方法。最主要的方法有4种,各自是GET,POST,PUT。DELETE。URL全称是资源描写叙述符。咱们可以这样以为:一个URL地址。它用于描写叙述一个网络上的资源,而HTTP中的GET。POST,PUT,DELETE就相应着对这个资源的查,改。增,删4个操做。到这里,你们应该有个大概的了解了,GET通常用于获取/查询资源信息。而POST通常用于更新资源信息。
1、原理差异
1.依据HTTP规范。GET用于信息获取,而且应该是安全的和幂等的。
2.依据HTTP规范。POST表示可能改动变server上的资源的请求。
三、怎样处理多个网络请求并发的状况
经过GCD和NSOperationQueue来控制并发
92.TCP和UDP的差异是什么?
TCP面向链接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,创建链接需要开销较多(时间。系统资源)。
UDP面向非链接、传输不可靠、用于传输少许数据(数据包模式)、速度快。
82.网络通讯用过哪些方式(100%的人说了AFNetworking...)怎样处理多个网络请求并发的状况
1)、直接使用socket的方式
2)、AFNetworking
使用多线程中的并发队列去处理网络的并发请求。
83.在网络请求中怎样提升性能
在网络请求中怎样保证安全性
iOS 在传输数据过程当中有数据泄露的可能。client在进行网络请求时通常都採用加密的方式来保证数据的安全性,在iOS9之后,苹果为了保护数据的安全性。使用了Https协议。
十一、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协议的抽象。从而造成了咱们知道的一些最主要的函数接口。ios
http链接:http链接就是所谓的短链接,即client向server端发送一次请求,server端响应后链接即会断掉;
socket链接:socket链接就是所谓的长链接。理论上client和server端一旦创建起链接将不会主动断掉。但是由于各类环境因素可能会是链接断开,比方说:server端或client主机down了,网络故障,或者二者之间长时间没有传输数据,网络防火墙可能会断开该链接以释放网络资源。
(2)创建Socket链接至少需要一对套接字,套接字简单来讲就是通讯的双方的一种约定,用套接字中的相关函数来完毕通讯过程。当中一个执行于client。称为ClientSocket 。还有一个执行于server端,称为ServerSocket 。
套接字之间的链接过程分为三个步骤:server监听。client请求,链接确认。
1。
server监听:server端套接字并不定位详细的client套接字。而是处于等待链接的状态。实时监控网络状态,等待client的链接请求。sql
2。client请求:指client的套接字提出链接请求。要链接的目标是server端的套接字。
为此,client的套接字必须首先描写叙述它要链接的server的套接字。指出server端套接字的地址和port号,而后就向server端套接字提出链接请求。数据库
3。json
链接确认:当server端套接字监听到或者说接收到client套接字的链接请求时。就响应client套接字的请求。创建一个新的线程,把server端套接字的描写叙述发给client,一旦client确认了此描写叙述,两方就正式创建链接。浏览器
而server端套接字继续处于监听状态,继续接收其它client套接字的链接请求。缓存
AFHTTPRequestOperation 核心代码
与NSURLConnection对象不一样,每个共享应用范围的设置如会话管理、缓存策略、Cookie存储以及URL协议等,这些NSURLSession对象都可以单独进行配置。
使用特定的配置来初始化会话,它可以发送任务来获取数据。并上传或下载文件。
在AFNetworking 2.0中。使用AFHTTPRequestOperation。有可能建立一个没有额外开销的独立的网络请求来获取数据。NSURLSession则需要不少其它的开销。为了得到所要请求的数据。
41.AFNetworking新版本号和曾经版本号的差异。NSURLSession使用
(1)NSURLConnection的API已废弃
弃用的类
如下的类已从AFNetworking 3.0中废弃:
• AFURLConnectionOperation
• AFHTTPRequestOperation
• AFHTTPRequestOperationManager
改动的类
如下的类包括基于NSURLConnection的API的内部实现。
他们已经被使用NSURLSession重构:
• UIImageView+AFNetworking
• UIWebView+AFNetworking
• UIButton+AFNetworking
(2)AFHTTPRequestOperation 核心代码
与NSURLConnection对象不一样。每个共享应用范围的设置如会话管理、缓存策略、Cookie存储以及URL协议等,这些NSURLSession对象都可以单独进行配置。使用特定的配置来初始化会话,它可以发送任务来获取数据,并上传或下载文件。
在AFNetworking 2.0中,使用AFHTTPRequestOperation,有可能建立一个没有额外开销的独立的网络请求来获取数据。NSURLSession则需要不少其它的开销,为了得到所要请求的数据。
(3)UIKit的迁移
图片下载已经被重构,以遵循AlamofireImage架构与新的AFImageDownloader类。
这个类的图片下载职责的代理人是UIButton与UIImageView的类目,并且提供了一些方法,在必要时可以本身定义。类别中,下载远程图片的实际方法没有改变。
UIWebView的类目被重构为使用AFHTTPSessionManager做为其网络请求。
UIAlertView的类目被废弃
从AFNetworking 3.0后UIAlertView的类目因过期而被废弃。并无提供UIAlertController类目的计划,因为这是应用程序应处理的逻辑,而不是这个库。
NSURLSession使用
NSURLSession是IOS SDK提供的一组相对easy使用的网络API。它包含几个部分NSURLRequest。NSURLCache,NSURLSession,NSURLSessionConfiguration。NSURLSessionTask。
六、无网状况下。从本地数据库sqlite上拉载入时,每次取10条,怎样实现?
推断网络状况,在无网络状况下,上拉载入的时候,经过谓词设置从数据库中取出数据10条数据,刷新界面。
20.http与https的差异,https的优势有哪些?
http是超⽂文本传输协议,信息是明⽂文传输,https 则是具备安全性的ssl加密传输 协议。
https相⽐比http更安全。
https协议需要到ca申请证书,⼀通常免费证书很是少,需要交费。
http和https使⽤用的是全然不一样的链接⽅方式⽤用的端⼜⼝口也不⼀同样,前者是80,后者是 443。
http的链接很是easy,是⽆无状态的 HTTPS协议是由SSL+HTTP协议构建的可进⾏行加密传输、⾝身份认证的⽹网络协议 要⽐比http协议安全
41.
网络通讯用过哪些方式(
100%
的人说了
AFNetworking...
)怎样处理多个网络请求并发的状况
1)
、直接使用
socket
的方式
2)
、
AFNetworking
使用多线程中的并发队列去处理网络的并发请求
42.
在网络请求中怎样提升性能
在网络请求中怎样保证安全性
iOS
在传输数据过程当中有数据泄露的可能,client在进行网络请求时通常都採用加密的方式来保证数据的安全性,在
iOS9
之后,苹果为了保护数据的安全性,使用了
Https
协议。
二、载入大量图片时。假设网络较差会出现什么状况?怎样处理?
可能会出现数据请求缓慢。图像载入不出来的状况 ,严重的会致使程序崩溃
处理方法:
1.作好数据缓存。程序使用时先从缓存读取,假设相应缓存没有。再请求数据。
2.控制请求次数和数据量
三、使用过哪些网络请求方式?用过哪些第三方框架。有哪些差异?
http协议申明了client与服务端交互的方式,即请求方式:
get、post、put、delete
这四种方式可以对网络资源(url描写叙述的内容)进行:查、改、增、删
CLLocationManager实现定位,查询并实时显示周边商户;
常用的是如下两种:
1:get方法:下行/从服务端得到数据
(1)get请求通常仅仅是从server得到数据。请求时一般会提交server一些请求參数。附加在url上的,參数之间以&切割。
(2)url中英文和数字原样识别,而中文或者一些其它字符需要编码。
(3)get请求提交的数据通常放在http协议的头header中
2:post方法:上传/上传数据改变服务端内容
(1)post请求多用于给server提交数据。
(2)post请求提交的数据通常放在http的主体数据包body中
用过的第三发框架有3种,ASIHttpRequest,AFNetWorking,MKNetWork.
三种的差异:ASIHttpRequest比較臃肿,MKNetWork和AFNektwork感受比較轻量级,本人推荐MKNetWork,比較简单
4.APP内部下载和离线下载的实现(像迅雷同样可以离线下载)
内部下载: 1. 建立NSURLSession 并 依据连接建立一个NSURLRequest
2. 開始下载
3. 在代理中接受数据并依据路径写入到目录下