APP开发必须懂的网络常识

不忘初心,方得始终。 最近很多客户都在咨询APP 定制开发,但对于一些基本的网络常识缺少认识,其实APP 开发是一件很严谨的事情,不管是需求分析还是场景演示,对开发环境和开发人员的要求都比较高,了解基本的网络常识对于开发方案的理解会更深入透彻,有助于产品定位和服务品质的提升,同时,对网络公司有一个基本的判断准则,避免陷入低价所带来的恶性产品循环和不必要的成本开支,也避免后期运营中出现的初期愿景和现实产品的分离。

1、网络常用概念

网络是应用的灵魂, 是所有应用的数据来源. 离开了网络, 我们的应用就是一潭死水,网络是数据交互的媒介, 我们通过网络得到服务器上的数据, 也是通过网络给服务器传递数据. 也就是说, 网络的实质就 是是交互数据,而数据交互的媒介就是在网络中传输二进制数据流(包括html/图片/视频数据)。

互联网开发的常用概念:

客户端(Client):移动设备(手机/iPad等手持设备) ,客户端一般就是前端/前台等等.iOS,android 开发都是前端开发.

服务器(Server):为客户端提供服务(比如数据/资源等) 的机器---本质也是一台计算机(+服务器软件) ,服务器开发就是后端/后台开发.java/php/.net等.

请求(Request):客户端向服务器索取数据.

响应(Response):服务器对客户端请求做出的反应, 一般就是返回数据给客户端.

服务器:按开发阶段来分, 分为两种:

远程服务器: 外网服务器. 应用上线之后供全体用户使用的服务器. 速度取决于用户的网速和服务器的性能.

本地服务器: 内网服务器, 测试服务器. 开发测试阶段使用的服务器. 供内部开发测试人员使用. 速度飞快.

2. 什么是IP 地址

静态IP 地址:固定不变的IP 地址, 需要用户自己手动设置.

动态IP 地址:打开计算机后,自动生成的IP 地址,不用人为设置。动态的IP 地址是通过DHCP 协议实现自动获取的。

子网掩码:与IP 地址配合使用判断两台计算机是否位于同一个子网络.

DNS 服务器:可以将域名(网址) 转换成IP 地址.

DHCP 协议:每一个子网络中, 有一台计算机负责管理本网络的所有IP 地址, 它叫做“DHCP 服务器”. 当新的计算机加入网络, 必须向“DHCP 服务器”发

送一个“DHCP 请求”数据包, 申请IP 地址和相关的网络参数. 然后DHCP 协议会赋予本机一些参数,如动态IP 地址, 子网掩码, 网关,DNS 服务器等.

以太网标头:设置发出方(本机) 的MAC 地址和接收方(DHCP服务器) 的MAC 地址.

IP 标头:设置发出方(本机) 的IP 地址和接收方(DHCP服务器) 的IP 地址

UDP 标头:设置发出方(本机) 的端口和接收方(DHCP服务器) 的端口. 这一部分是DHCP 协议规定好的, 发出方是68端口, 接收方是67端口.

所以电脑想要上网, 都需要确定这四个参数:本机IP 地址, 子网掩码, 网关的IP 地址, DNS 的IP 地址。

3.HTTP 请求

通俗地说,网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能进行信息的沟通与交流。这就好比人与人之间交流所使用的各种语言一样,只有使用相同语言才能正常、顺利地进行交流。从专业角度定义,网络协议是计算机在网络中实现通信时必须遵守的约定,也就是通信协议。主要是对信息传输的速率、传输代码、代码结构、传输控制步骤、出错控制等作出规定并制定出标准。

3.1. URL(Uniform Resource Locator):

统一资源定位符.URL 就是资源的地址, 位置. 通过一个URL 能够找到互联网上唯一的一个资源.

URL 的基本格式: 协议://主机地址/路径

协议:不同的协议代表不同的资源查找方式, 资源传输方式.

URL 中的常见协议:

HTTP:超文本传输协议, 在网络开发中最常用的协议. 访问的是远程的网络资源. 格式:http://...

IP协议:

TCP 数据包嵌入IP 数据包.IP 数据包标头需要设置双方的IP 地址. 发送方(本机) 是:192.168.2.6 , 接收方(百度) 是:119.75.218.70

IP 数据包的标头长度为20字节. 加上嵌入的TCP 数据包, 现在总长度是5000字节

file:访问的时本地计算机上的资源. 格式:file://(不要再加主机地址了)

FTP:访问的是共享主机的文件资源. 格式:ftp://

TCP协议:

TCP 数据包标头需要设置端口, 接收方(Baidu)的HTTP 端口默认是80, 发送方(本机) 的端口是一个随机生成的1024~65535之间的整数.

TCP 数据包的标头长度是20字节. 加上嵌入的HTTP 数据包, 现在总长度是4980字节.

以太网协议

IP 数据包嵌入以太网数据包的数据部分. 以太网数据包的标头需要设置双方的MAC 地址. 发送方为本机的网卡MAC 地址, 接收方为网关192.168.2.1的MAC 地址

(通过ARP 协议得到), 以太网数据包的数据部分, 最大长度为1500字节, 而现在的IP 数据包长度为5000字节. 因此,IP 数据包必须分割成四个包, 因为每个包都有自己的IP 标头(20字节), 所以四个包的IP 数据包的长度分别为1500 ,1500, 1500,560 字节.

mailto:访问的是电子邮件地址. 格式:mailto:

主机地址:存放资源的主机IP 地址(域名).

路径:资源在主机中得具体位置.

3.2. HTTP 请求的完整过程:

请求: 客户端发出请求. 向服务器索要数据(操作数据).

响应: 服务器对客户端的请求做出响应. 返回客户端所需要的数据.

3.3. 包装一个HTTP 请求

用 NSURLRequest 来包装一个HTTP 请求. 可以指定缓存策略和超时时间, 缓存策略的选择:NSURLRequestCachePolicy

NSURLRequestUseProtocolCachePolicy = 0, // 默认的缓存策略, 使用协议定义. NSURLRequestReloadIgnoringLocalCacheData = 1, // 忽略本地缓存, 直接从原始服务器地址下载. NSURLRequestReturnCacheDataElseLoad = 2, // 只有在缓存中不存在数据时, 才从原始地址下

载 NSURLRequestReturnCacheDataDontLoad = 3, // 只使用缓存数据, 如果不存在缓存, 则请求失败. 用于没有网络连接的离线模式 NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // 忽略远程和本地的数据缓存, 直接从原始地址下载 NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnorin gLocalCacheData = 1, // 忽略缓存, 直接从原始服务器地址下载. NSURLRequestReloadRevalidatingCacheData = 5, // 验证本地数据和远程数据是否相同, 如果不同则下载远程数据, 否则使用本地数据

网络缓存数据, 保存在SQLite 的数据库中(NSHomeDirectory),

网络缓存数据, 保存在SQLite 的数据库中(NSHomeDirectory),

3.4. 发送请求

用 NSURLConnection 发送请求.

同步方法:

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request return ingResponse:(NSURLResponse **)response error:(NSError **)error;

异步方法:

+ (void)sendAsynchronousRequest:(NSURLRequest*) request queue:(NSOperationQueue*) queue

completionHandler:(void (^)(NSURLResponse* response, NSData* data , NSError* connectionError)) handler

4.Socket 介绍

网络上的两个程序通过一个双向的通信连接实现数据的交换, 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听,继续接收其他客户端套接字的连接请求。

分步骤创建Socket

1. 创建客户端Socket socket(, , );

2. 创建服务器Socket struct sockaddr_in serverAddress;

3. 连接到服务器(Socket编

程) connect(, , );

4. 发送数据给服务

器 send(, , , )

5. 接收服务器返回的数

据 recv(, , , )

6. 关闭 Socket close(socketNumber)

不忘初心,方得始终。 最近很多客户都在咨询APP 定制开发,但对于一些基本的网络常识缺少认识,其实APP 开发是一件很严谨的事情,不管是需求分析还是场景演示,对开发环境和开发人员的要求都比较高,了解基本的网络常识对于开发方案的理解会更深入透彻,有助于产品定位和服务品质的提升,同时,对网络公司有一个基本的判断准则,避免陷入低价所带来的恶性产品循环和不必要的成本开支,也避免后期运营中出现的初期愿景和现实产品的分离。

1、网络常用概念

网络是应用的灵魂, 是所有应用的数据来源. 离开了网络, 我们的应用就是一潭死水,网络是数据交互的媒介, 我们通过网络得到服务器上的数据, 也是通过网络给服务器传递数据. 也就是说, 网络的实质就 是是交互数据,而数据交互的媒介就是在网络中传输二进制数据流(包括html/图片/视频数据)。

互联网开发的常用概念:

客户端(Client):移动设备(手机/iPad等手持设备) ,客户端一般就是前端/前台等等.iOS,android 开发都是前端开发.

服务器(Server):为客户端提供服务(比如数据/资源等) 的机器---本质也是一台计算机(+服务器软件) ,服务器开发就是后端/后台开发.java/php/.net等.

请求(Request):客户端向服务器索取数据.

响应(Response):服务器对客户端请求做出的反应, 一般就是返回数据给客户端.

服务器:按开发阶段来分, 分为两种:

远程服务器: 外网服务器. 应用上线之后供全体用户使用的服务器. 速度取决于用户的网速和服务器的性能.

本地服务器: 内网服务器, 测试服务器. 开发测试阶段使用的服务器. 供内部开发测试人员使用. 速度飞快.

2. 什么是IP 地址

静态IP 地址:固定不变的IP 地址, 需要用户自己手动设置.

动态IP 地址:打开计算机后,自动生成的IP 地址,不用人为设置。动态的IP 地址是通过DHCP 协议实现自动获取的。

子网掩码:与IP 地址配合使用判断两台计算机是否位于同一个子网络.

DNS 服务器:可以将域名(网址) 转换成IP 地址.

DHCP 协议:每一个子网络中, 有一台计算机负责管理本网络的所有IP 地址, 它叫做“DHCP 服务器”. 当新的计算机加入网络, 必须向“DHCP 服务器”发

送一个“DHCP 请求”数据包, 申请IP 地址和相关的网络参数. 然后DHCP 协议会赋予本机一些参数,如动态IP 地址, 子网掩码, 网关,DNS 服务器等.

以太网标头:设置发出方(本机) 的MAC 地址和接收方(DHCP服务器) 的MAC 地址.

IP 标头:设置发出方(本机) 的IP 地址和接收方(DHCP服务器) 的IP 地址

UDP 标头:设置发出方(本机) 的端口和接收方(DHCP服务器) 的端口. 这一部分是DHCP 协议规定好的, 发出方是68端口, 接收方是67端口.

所以电脑想要上网, 都需要确定这四个参数:本机IP 地址, 子网掩码, 网关的IP 地址, DNS 的IP 地址。

3.HTTP 请求

通俗地说,网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能进行信息的沟通与交流。这就好比人与人之间交流所使用的各种语言一样,只有使用相同语言才能正常、顺利地进行交流。从专业角度定义,网络协议是计算机在网络中实现通信时必须遵守的约定,也就是通信协议。主要是对信息传输的速率、传输代码、代码结构、传输控制步骤、出错控制等作出规定并制定出标准。

3.1. URL(Uniform Resource Locator):

统一资源定位符.URL 就是资源的地址, 位置. 通过一个URL 能够找到互联网上唯一的一个资源.

URL 的基本格式: 协议://主机地址/路径

协议:不同的协议代表不同的资源查找方式, 资源传输方式.

URL 中的常见协议:

HTTP:超文本传输协议, 在网络开发中最常用的协议. 访问的是远程的网络资源. 格式:http://...

IP协议:

TCP 数据包嵌入IP 数据包.IP 数据包标头需要设置双方的IP 地址. 发送方(本机) 是:192.168.2.6 , 接收方(百度) 是:119.75.218.70

IP 数据包的标头长度为20字节. 加上嵌入的TCP 数据包, 现在总长度是5000字节

file:访问的时本地计算机上的资源. 格式:file://(不要再加主机地址了)

FTP:访问的是共享主机的文件资源. 格式:ftp://

TCP协议:

TCP 数据包标头需要设置端口, 接收方(Baidu)的HTTP 端口默认是80, 发送方(本机) 的端口是一个随机生成的1024~65535之间的整数.

TCP 数据包的标头长度是20字节. 加上嵌入的HTTP 数据包, 现在总长度是4980字节.

以太网协议

IP 数据包嵌入以太网数据包的数据部分. 以太网数据包的标头需要设置双方的MAC 地址. 发送方为本机的网卡MAC 地址, 接收方为网关192.168.2.1的MAC 地址

(通过ARP 协议得到), 以太网数据包的数据部分, 最大长度为1500字节, 而现在的IP 数据包长度为5000字节. 因此,IP 数据包必须分割成四个包, 因为每个包都有自己的IP 标头(20字节), 所以四个包的IP 数据包的长度分别为1500 ,1500, 1500,560 字节.

mailto:访问的是电子邮件地址. 格式:mailto:

主机地址:存放资源的主机IP 地址(域名).

路径:资源在主机中得具体位置.

3.2. HTTP 请求的完整过程:

请求: 客户端发出请求. 向服务器索要数据(操作数据).

响应: 服务器对客户端的请求做出响应. 返回客户端所需要的数据.

3.3. 包装一个HTTP 请求

用 NSURLRequest 来包装一个HTTP 请求. 可以指定缓存策略和超时时间, 缓存策略的选择:NSURLRequestCachePolicy

NSURLRequestUseProtocolCachePolicy = 0, // 默认的缓存策略, 使用协议定义. NSURLRequestReloadIgnoringLocalCacheData = 1, // 忽略本地缓存, 直接从原始服务器地址下载. NSURLRequestReturnCacheDataElseLoad = 2, // 只有在缓存中不存在数据时, 才从原始地址下

载 NSURLRequestReturnCacheDataDontLoad = 3, // 只使用缓存数据, 如果不存在缓存, 则请求失败. 用于没有网络连接的离线模式 NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // 忽略远程和本地的数据缓存, 直接从原始地址下载 NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnorin gLocalCacheData = 1, // 忽略缓存, 直接从原始服务器地址下载. NSURLRequestReloadRevalidatingCacheData = 5, // 验证本地数据和远程数据是否相同, 如果不同则下载远程数据, 否则使用本地数据

网络缓存数据, 保存在SQLite 的数据库中(NSHomeDirectory),

网络缓存数据, 保存在SQLite 的数据库中(NSHomeDirectory),

3.4. 发送请求

用 NSURLConnection 发送请求.

同步方法:

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request return ingResponse:(NSURLResponse **)response error:(NSError **)error;

异步方法:

+ (void)sendAsynchronousRequest:(NSURLRequest*) request queue:(NSOperationQueue*) queue

completionHandler:(void (^)(NSURLResponse* response, NSData* data , NSError* connectionError)) handler

4.Socket 介绍

网络上的两个程序通过一个双向的通信连接实现数据的交换, 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听,继续接收其他客户端套接字的连接请求。

分步骤创建Socket

1. 创建客户端Socket socket(, , );

2. 创建服务器Socket struct sockaddr_in serverAddress;

3. 连接到服务器(Socket编

程) connect(, , );

4. 发送数据给服务

器 send(, , , )

5. 接收服务器返回的数

据 recv(, , , )

6. 关闭 Socket close(socketNumber)


相关文章

  • App开发者须知:中国移动市场7件事
  • 当我和App开发者讨论这个话题的时候,七个主要的观点在我脑海里浮现. 中国有着比其他任何单一国家多得多的智能手机用户,而且这一数量优势将继续扩大.多数西方App开发者认识到中国移动市场的巨大,但是并不清楚这意味着什么.是否应当在中国发布本地 ...查看


  • 2代WiFi遥控智能小车使用说明书
  • 深圳四博智联科技 技有限公司 Shenzhen Doctors of Inttelligence && Technologgy (DOIT) Tel:T 186 7666 2425, QQ:1234333772 深圳四博深智 ...查看


  • APP产品经理的工作原则
  • 悦兑科技 www.enjoyday.com.cn 杭州 APP开发 移动办公 企业移动信息化 一个APP产品经理的工作原则 1.击中用户的痛点 APP发展时期不同,获得用户洞察的方式也会随之变化. 任何一个成功的APP必然能够击中用户的某一 ...查看


  • 校园APP创业计划书
  • 河北工程技术学院 作品名称:河工校园搜索APP 创业团队: 二○一五年十月 目 录 一.项目摘要 1.1市场背景 1.2产品简介 1.3实施计划 二.业务描述 2.1业务简介 2.2发展前景 三.产品与服务 3.1APP 的设计 3.2AP ...查看


  • 2016年薪资涨幅最快的岗位,请问你在列么?
  • 2016年薪资涨幅最快的岗位依次是:1 手机app开发人员 APP的创富神话远远超过当年的网站,不少APP一夜成名.一方面是资本的推高,另一方面是开发成本的增加,直接导致了APP开发的费用水涨船高. 在这种求大于供的情况下,iOS开发工程师 ...查看


  • 移动app测试项目实践
  • 移动互联网APP 测试流程及测试点 1 APP测试基本流程 1.1流程图 仍然为测试环境 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正 ...查看


  • 社交APP计划书
  • 强粘性关系社交建议计划书 当前的社交关系从角色定义出发 亲人的粘性关键词是-关心 关爱. 从爱的觉度出发,一家人需要什么方式能够联系的更紧密?我的答案就是---爱.从爱的 觉度出发,到了关键的地方,建立这种爱的粘性需要有打破爱的寄托的预期存 ...查看


  • 云计算在谷歌的创新应用 - 副本
  • 云计算在谷歌的创新应用 摘要:云计算是当前信息技术发展的一个趋势,与传统的软件构架相比较,云计算是一种新型的运用Internet 网络以服务的方式提供可伸缩的网络虚拟的资源管理的计算机运行模式,云计算主要提供基础设施即(IasS ).平台即 ...查看


  • 什么样的网站或者应用适合做成微信小程序
  • 什么样的网站或者应用适合做成微信小程序 相信今天大家都在微信收微信小程序正式发布的推送信息,微信小程序做为一个新事物,还未被市场所验证,那么大家对他的理解又有多少呢?什么样的网站或者应用适合做成微信小程序?方维网络为下面为大家详细分析. 小 ...查看


热门内容