网络基本知识

学习网络, 首先要了解几个基本概念:

  • 客户端(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语言的,是跨平台的

长/短连接 & 心跳包


  • 短连接

数据请求结束后,立即断开连接
能够及时释放服务器资源
让服务器能够为更多的用户提供服务

  • 长连接

一旦连接建立之后,始终保持连接状态
后续只需发送和接收数据即可,数据响应更及时
长连接对服务器资源占用比较大
对交互响应要求快的应用,例如即时通讯,需要使用长连接

  • 心跳包

是检测长连接的重要技术手段
可以由服务器发送—>定时向客户端发送小数据,根据回执判断客户端是否在线
也可以由客户端发送—>定时向服务器发送小数据,报告客户端当前在线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值