网络基本知识
2016-01-01 17:36
447 查看
学习网络, 首先要了解几个基本概念:
客户端(Client):移动应用(iOS、android等应用)
服务器(Server):为客户端提供服务、提供数据、提供资源的机器
请求(Request):客户端向服务器索取数据的一种行为
响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端
URL格式: 协议头://主机地址/路径
协议头: 不同的协议,表示不同的资源查找及传输方式(http:)
主机地址: 存放资源主机的 IP 地址(域名)(baidu.com)
路径: 资源在主机中的具体位置(qutu.jpg)
让客户端和服务器能有效地进行数据沟通
HTTP 协议是网络编程使用最为广泛的协议
特点:
1> 简单快速
协议简单, 所以 HTTP 服务器的程序规模小,通信速度快
2> 灵活
HTTP 允许传输任意类型的数据
3>短连接 (http 0.9/1.0)
每次连接处理一个请求后断开, 节省传输时间
4> 长连接 (http 1.1)
一个连接传送多个对象
通信过程
// 请求
一个完整的由客户端发给服务器的 HTTP 请求 需要包含请求行, 请求头和请求体
// 响应
一个完整的 HTTP 响应包含状态行, 响应头和实体内容
NSURLConnection: IOS2.0推出
NSURLSession: IOS7推出, 功能比NSURLConnection更加强大
第三方框架
ASIHttpRequest: 基于CFNetwork, HTTP终结者, 停止更新
AFNetworking: 基于NSURLConnection&NSURLSession, 目前最常用
Alarmfire: Swift版本, 轻量级
NSURL:确定要访问的资源
NSURLRequest:根据 URL 建立请求,向服务器索要数据
NSURLConnection:建立网络连接,将请求(异步)发送给服务器
代码
超时时长
默认网络时长是 60 s
建议超时时长 15~30 秒之间
SDWebImage 的默认超时时长是 15 秒
AFN 的默认超时时长是 60 秒
IP地址
端口号
传输协议(TCP传输控制协议/UDP数据报文协议)
// 通过IP找机器, 通过端口找程序, 通过 协议 确定如何传输数据
网络模型
TCP & UDP
UDP(用户数据报协议)
只管发送, 不确认对方是否接收到
将数据封装到数据包中, 不需要建立连接
因为无需建立连接, 为不可靠协议, 速度快
应用场景: 多媒体教室, 网络流媒体
TCP(传输控制协议)
建立连接形成传输数据通道
在连接中数据传输的大小无限制
通过三次握手完成连接, 是可靠协议安全送达
效率低
Socket(套接字层、插座)
Socket就是为网络服务提供的一种机制
通信的两端都是 Socket
网络通信其实就是 Socket 间的通信
数据在两个 Socket 间通过 IO 传输
Socket 是纯C语言的,是跨平台的
长/短连接 & 心跳包
短连接
数据请求结束后,立即断开连接
能够及时释放服务器资源
让服务器能够为更多的用户提供服务
长连接
一旦连接建立之后,始终保持连接状态
后续只需发送和接收数据即可,数据响应更及时
长连接对服务器资源占用比较大
对交互响应要求快的应用,例如即时通讯,需要使用长连接
心跳包
是检测长连接的重要技术手段
可以由服务器发送—>定时向客户端发送小数据,根据回执判断客户端是否在线
也可以由客户端发送—>定时向服务器发送小数据,报告客户端当前在线
客户端(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语言的,是跨平台的
长/短连接 & 心跳包
短连接
数据请求结束后,立即断开连接
能够及时释放服务器资源
让服务器能够为更多的用户提供服务
长连接
一旦连接建立之后,始终保持连接状态
后续只需发送和接收数据即可,数据响应更及时
长连接对服务器资源占用比较大
对交互响应要求快的应用,例如即时通讯,需要使用长连接
心跳包
是检测长连接的重要技术手段
可以由服务器发送—>定时向客户端发送小数据,根据回执判断客户端是否在线
也可以由客户端发送—>定时向服务器发送小数据,报告客户端当前在线
相关文章推荐
- HttpUrlConnection 自动上传文件
- HTTP协议入门——1.1版本
- 神经网络浅讲:从神经元到深度学习
- 如何一步步拿到伐册 book申请http://www.bosshr.com/shownews_47767.html
- 全站 HTTPS 来了
- Linux网络相关命令小结
- Android开发之使用URL訪问网络资源
- win7系统关闭“window安全网络身份验证”窗口的设置方法
- 错误消息: 为了配置 TCP/IP,必须安装并启用的网络适配器
- [CSAPP] 第三部分 第11章 网络 IP地址
- Linux内核工程导论——网络:Filter(LSF、BPF)
- 转帖不会乱码的,powershell网络蜘蛛
- Http状态码(apache解析php的403错误)
- CentOS下拨号上网(网络转载)
- 用开源软件建垂直搜索引擎 转载 http://news.cnblogs.com/n/60041/
- 深入理解TCP(二)
- okhttp使用入门
- Web端为什么不会发送http请求给服务器的原因
- QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址
- Linux虚拟机桥接网络