您的位置:首页 > 理论基础 > 计算机网络

网络基本知识

2016-01-01 17:36 447 查看
学习网络, 首先要了解几个基本概念:

客户端(Client):移动应用(iOS、android等应用)

服务器(Server):为客户端提供服务、提供数据、提供资源的机器

请求(Request):客户端向服务器索取数据的一种行为

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

URL

URL统一资源定位符, 通过 1 个 URL,能找到互联网上唯一的 1 个资源

URL格式: 协议头://主机地址/路径

协议头: 不同的协议,表示不同的资源查找及传输方式(http:)

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

路径: 资源在主机中的具体位置(qutu.jpg)

HTTP协议

规定客户端和服务器之间的数据传输格式

让客户端和服务器能有效地进行数据沟通

HTTP 协议是网络编程使用最为广泛的协议

特点:

1> 简单快速

协议简单, 所以 HTTP 服务器的程序规模小,通信速度快

2> 灵活

HTTP 允许传输任意类型的数据

3>短连接 (http 0.9/1.0)

每次连接处理一个请求后断开, 节省传输时间

4> 长连接 (http 1.1)

一个连接传送多个对象

通信过程

// 请求

一个完整的由客户端发给服务器的 HTTP 请求 需要包含请求行, 请求头和请求体

// 响应

一个完整的 HTTP 响应包含状态行, 响应头和实体内容

IOS中常见的发送HTTP请求方案

苹果官方

NSURLConnection: IOS2.0推出

NSURLSession: IOS7推出, 功能比NSURLConnection更加强大

第三方框架

ASIHttpRequest: 基于CFNetwork, HTTP终结者, 停止更新

AFNetworking: 基于NSURLConnection&NSURLSession, 目前最常用

Alarmfire: Swift版本, 轻量级

NSURLConnection

步骤

NSURL:确定要访问的资源

NSURLRequest:根据 URL 建立请求,向服务器索要数据

NSURLConnection:建立网络连接,将请求(异步)发送给服务器

代码

// 1. `NSURL`:确定要访问的资源
NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];

// 2. `NSURLRequest`:根据 `URL` 建立请求,向服务器索要数据
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3. `NSURLConnection`:建立网络连接,将请求(异步)发送给服务器
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

NSLog(@"%@", data);
}];


超时时长

默认网络时长是 60 s

建议超时时长 15~30 秒之间

SDWebImage 的默认超时时长是 15 秒

AFN 的默认超时时长是 60 秒

NSURLSession

Socket

网络通讯三要素

IP地址

端口号

传输协议(TCP传输控制协议/UDP数据报文协议)

// 通过IP找机器, 通过端口找程序, 通过 协议 确定如何传输数据

网络模型



TCP & UDP

UDP(用户数据报协议)

只管发送, 不确认对方是否接收到

将数据封装到数据包中, 不需要建立连接

因为无需建立连接, 为不可靠协议, 速度快

应用场景: 多媒体教室, 网络流媒体

TCP(传输控制协议)

建立连接形成传输数据通道

在连接中数据传输的大小无限制

通过三次握手完成连接, 是可靠协议安全送达

效率低

Socket(套接字层、插座)

Socket就是为网络服务提供的一种机制

通信的两端都是 Socket

网络通信其实就是 Socket 间的通信

数据在两个 Socket 间通过 IO 传输

Socket 是纯C语言的,是跨平台的

长/短连接 & 心跳包

短连接

数据请求结束后,立即断开连接

能够及时释放服务器资源

让服务器能够为更多的用户提供服务

长连接

一旦连接建立之后,始终保持连接状态

后续只需发送和接收数据即可,数据响应更及时

长连接对服务器资源占用比较大

对交互响应要求快的应用,例如即时通讯,需要使用长连接

心跳包

是检测长连接的重要技术手段

可以由服务器发送—>定时向客户端发送小数据,根据回执判断客户端是否在线

也可以由客户端发送—>定时向服务器发送小数据,报告客户端当前在线
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: