1、网络七层协议
网络协议分为7层,从下至上分别为。高层定义了应用程序的功能,底层只要面向通过网络的端到端的数据流
物理层 | 下层(比特流) | 1 |
数据链路层 | 下层(数据帧) | 2 |
网络层 | 下层(数据包) | 3 |
传输层 | 高层(数据段) | 4 |
会话层 | 高层(数据) | 5 |
表示层 | 高层(数据) | 6 |
应用层 | 高层(数据) | 7 |
物理层:物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。它关心的问题有:多少伏电压代表1?多少伏电压代表0?时钟速率是多少?采用全双工还是半双工传输?总的来说物理层关心的是链路的机械、电气、功能和规程特性。主要有:
以太网 ·
调制解调器 · 电力线通信(PLC) ·
SONET/SDH · G.709 ·
光导纤维 · 同轴电缆 · 双绞线等
数据链路层:数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为
数据帧。只要协议有:Wi-Fi(
IEEE 802.11) · WiMAX(
IEEE 802.16) ·ATM · DTM ·
令牌环 ·
以太网 ·FDDI ·
帧中继 · GPRS · EVDO ·HSPA · HDLC ·
PPP · L2TP ·PPTP · ISDN·STP 等
网络层:网络层是为传输层提供服务的,传送的协议数据单元称为
数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过
路径选择算法(
路由)将数据包送到目的地。另外,为避免
通信子网中出现过多的数据包而造成
网络阻塞,需要对流入的数据包数量进行控制(
拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP等
传输层:TCP · UDP · TLS ·
DCCP · SCTP · RSVP · OSPF 等
会话层:会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话。会话层得名的原因是它很类似于两个实体间的会话概念。例如,一个交互的用户会话以登录到计算机开始,以注销结束。
表示层:表示层处理流经结点的
数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种
数据表示格式转换成
网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
应用层:应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如
文件传输、收发电子邮件等。
表示层,会话层,应用层我统一理解为应用层,管理、控制传输(http、socket等协议)。
2、ios http
2、1 http理解
http(Hypertext Transfer protocol),超文本传输协议
(1)规定客户端和服务器之间的数据传输格式
(2)让客户端和服务器能有效的进行数据沟通
(3)http好处:简单快速,比较灵活,允许传输任意类型的数据,http使用非连续链接,限制每次链接只处理一个请求,响应结束后,马上断开链接,节省传输时间,减少消耗
(4)过程:
1、请求:客户端向服务器端请求数据
http协议规定,1个完整的由客户端发送给服务器的http请求中包括以下内容
请求行:包含了请求方式,请求资源路径,http协议版本
// GET/Sercer/resources/image.1.jpg HTTP/1.1
请求头:包含了客户端的环境描述,客户端请求的主机地址等信息
// Host:IP:Port
//User-Agent
//Accept type (e.g. text/html)
// Accept-Language:zh-cn
//Accept-Encoding;gizp
请求体:客户端发给服务器的具体数据,比如文件数据图片数据等
2、响应:服务器返回客户端相应的数据
http协议规定,一个完整的http响应,应包括以下内容
状态行:包含了http协议版本,状态码,状态英文名称
响应头:包含了对服务器的描述,返回数据的描述
Server:~
//服务器的类型
Content-Type:text/html
//返回数据类型
Content_Length:51222
//数据长度
Date:Mon,23Jun 2016 14:12:12 GMT //响应时间
(5)错误码
http常见的响应码
200 -- OK -- 请求成功
400 -- Bad Request -- 客户端请求的语法错误,服务器无法解析
404 -- Not Found -- 服务器无法根据客户端的请求找到资源
500 -- Internal Server Error -- 服务器内部错误,无法完成请求
2.2 http请求方式
1、8种发送http请求的方法
一般来说,http一共有八种请求方式:分别为GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH其中最为常用的为GET,POST方法
2、iOS中发送HTTP请求的方案
在iOS中,常见的发送HTTP请求(GET和POST)的解决方案有
(1)苹果原生(自带)
NSURLConnection:用法简单,最古老最经典最直接的一种方案
NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大
CFNetwork:NSURL*的底层,纯C语言
(2)第三方框架
ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新
AFNetworking:简单易用,提供了基本够用的常用功能