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 均可。

 
二、两种请求方式的差别:
、GET请求,请求的数据会附加在URL之后,以?

切割URL和数据传输,多个參数用&连接。URL的编码格式採用的是ASCII编码,而不是uniclde。即是说全部的非ASCII字符都要编码之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的数据传输。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
 
、数据传输的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。可是在实际开发过程中,对于GET,特定的浏览器和server对URL的长度有限制。

因此,在使用GET请求时。数据传输会受到URL长度的限制。

对于POST,因为不是URL传值,理论上是不会受限制的,可是实际上各个server会规定对POST提交数据大小进行限制。Apache、IIS都有各自的配置。
 
、安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全。上面提到的安全不过不改动server的数据。

比方,在进行登录操作,通过GET请求,username和password都会暴露再URL上。由于登录页面有可能被浏览器缓存以及其它人查看浏览器的历史记录的原因。此时的username和password就非常easy被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site
request frogery攻击

 
9、解释HTTP中Get和Post,它们有什么差别,哪个使用时更加安全?
Http定义了与server交互的不同方法。最主要的方法有4种,各自是GET,POST,PUT。DELETE。URL全称是资源描写叙述符。我们能够这样觉得:一个URL地址。它用于描写叙述一个网络上的资源,而HTTP中的GET。POST,PUT,DELETE就相应着对这个资源的查,改。增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息。而POST一般用于更新资源信息。
一、原理差别
1.依据HTTP规范。GET用于信息获取,并且应该是安全的和幂等的。
2.依据HTTP规范。POST表示可能改动变server上的资源的请求。

 
3、怎样处理多个网络请求并发的情况
 
通过GCD和NSOperationQueue来控制并发

 
92.TCP和UDP的差别是什么?
TCP面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接须要开销较多(时间。系统资源)。

UDP面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

 
82.网络通信用过哪些方式(100%的人说了AFNetworking...)怎样处理多个网络请求并发的情况
1)、直接使用socket的方式
2)、AFNetworking
使用多线程中的并发队列去处理网络的并发请求。
 
83.在网络请求中怎样提高性能
在网络请求中怎样保证安全性
 iOS  在传输数据过程中有数据泄露的可能。client在进行网络请求时一般都採用加密的方式来保证数据的安全性,在iOS9以后,苹果为了保护数据的安全性。使用了Https协议。

11、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连接就是所谓的短连接,即client向server端发送一次请求,server端响应后连接即会断掉;
socket连接:socket连接就是所谓的长连接。理论上client和server端一旦建立起连接将不会主动断掉。可是因为各种环境因素可能会是连接断开,比方说:server端或client主机down了,网络故障,或者两者之间长时间没有传输数据,网络防火墙可能会断开该连接以释放网络资源。
 
(2)建立Socket连接至少须要一对套接字,套接字简单来说就是通信的双方的一种约定,用套接字中的相关函数来完毕通信过程。当中一个执行于client。称为ClientSocket 。还有一个执行于server端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:server监听。client请求,连接确认。
1。

server监听:server端套接字并不定位详细的client套接字。而是处于等待连接的状态。实时监控网络状态,等待client的连接请求。

2。client请求:指client的套接字提出连接请求。要连接的目标是server端的套接字。

为此,client的套接字必须首先描写叙述它要连接的server的套接字。指出server端套接字的地址和port号,然后就向server端套接字提出连接请求。

3。

连接确认:当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。
 
6、无网情况下。从本地数据库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协议。
 
 
2、载入大量图片时。假设网络较差会出现什么情况?怎样处理?
 
可能会出现数据请求缓慢。图像载入不出来的情况 ,严重的会导致程序崩溃
处理方法:
1.做好数据缓存。程序使用时先从缓存读取,假设相应缓存没有。再请求数据。
2.控制请求次数和数据量
 
3、使用过哪些网络请求方式?用过哪些第三方框架。有哪些差别?
 
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. 在代理中接受数据并依据路径写入到目录下

聊聊iOS中TCP / UDP 协议的更多相关文章

  1. 聊聊iOS中网络编程长连接的那些事

    1.长连接在iOS开发中的应用 常见的短连接应用场景:一般的App的网络请求都是基于Http1.0进行的,使用的是NSURLConnection.NSURLSession或者是AFNetworking ...

  2. iOS的TCP/IP协议族剖析&&Socket

    原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有S ...

  3. 深入浅出--iOS的TCP/IP协议族剖析&&Socket

    深入浅出--iOS的TCP/IP协议族剖析&&Socket   简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久! ...

  4. QQ--基于TCP/UDP协议的通讯原理

    QQ是一个基于TCP/UDP协议的通讯软件  发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服 务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!   一 ...

  5. java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端

    java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端 启动界面如下图: 首先启动服务器: 客户端登陆,登陆成功后为: 默认发送是全部用户,是多人发送. 当在边列 ...

  6. 网络编程—网络基础概览、socket,TCP/UDP协议

    网络基础概览 socket概览 socket模块—TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网 ...

  7. TCP/UDP协议简要梳理

    TCP/UDP协议简要梳理 TCP TCP,Transmission Control Protocol,传输控制协议是一种面向连接的.可靠的.基于字节流的传输层通信协议.在因特网协议族中,TCP所在的 ...

  8. Java中的UDP协议编程

    一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...

  9. TwinCAT 3中基于UDP协议通讯的C++实现

    因为项目需要,学习了TwinCAT3中使用UDP协议进行通讯的基本知识.这个做个简单的笔记,方便以后查询. 1 概述 倍福为了实现从实时环境中直接访问网卡(network cards)专门提供了一个函 ...

随机推荐

  1. Python中赋值、浅拷贝与深拷贝

    python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

  2. Python socket聊天室程序

    http://blog.csdn.net/calling_wisdom/article/details/42524745 今天用python的socket模块实现了一个聊天室的程序 虽然功能比较简单, ...

  3. .net安装部署“Error 1001 在初始化安装时发生异常” 的解决方法

    状况描述:打包安装后,如果删除安装目录中的某个文件,这时从桌面快捷方式启动软件系统会自动运行修复程序,此时因为路径问题会报出“错误 1001 在初始化安装时发生异常xxx”的异常.(前提是你的安装部署 ...

  4. 通过buildroot 移植 libsocketcan.so 以及 can 工具

    进入buildroot make menuconfig Target packages ---> Networking applications ---> [*] can-utils // ...

  5. USB 转LAN AX88772B 模块驱动添加记录

    使用 AX88772B 模块进行扩展百兆网口. 资料地址: http://www.asix.com.tw/cs/products.php?op=pItemdetail&PItemID=105; ...

  6. BusyBox rcS&fstab配置

    rcS为系统初始化脚本,完成最开始的一些配置工作,可开启应用程序. #!/bin/shmount -a      ;mount文件,要mount的文件有fstab指定. . /etc/profile ...

  7. Cygwin镜像使用帮助

    Cygwin镜像使用帮助 收录架构 x86 x86_64 收录版本 所有版本 更新时间 每12小时更新一次   使用说明 选择从互联网安装, 在"User URL"处输入以下地址 ...

  8. 关于Unity中UI中的Slider,Toggle和InputField等节点

    一.Slider节点 1.创建一个Canvas 2.对Canvas进行一些初始化操作 3.创建一个Image的UI节点在Canvas下面作为子节点 4.把Image铺满整个Canvas,把宽高设置为6 ...

  9. 一遍记住Java常用的八种排序算法与代码实现

    1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数……直 ...

  10. javascript中字符串拼接详解

    字符串拼接是所有程序设计语言都需要的操作.当拼接结果较长时,如何保证效率就成为一个很重要的问题.本文介绍的是Javascript中的字符串拼接,希望对你有帮助,一起来看.   最近在研究<jav ...