学习笔记-从互联网协议到ios中http协议

mac2022-06-30  84

1、简单说明 

 ios中的客户端需要和后台服务器进行网络通信,这样才可以获得实时的数据,如新浪微博。而不管是移动端还是PC端,访问远程的网络资源使用最多的是HTTP协议。

2、互联网协议

   互联网可以看作分层的结构,通常使用OSI七层模型或者使用TCP/IP四层模型来描述。这里分为五层,更容易理解些。

如上所示,上一层依赖于下一层。一句话概括每一层的作用,可以说:

  实体层实现了物理上的链接。

  链接层可以在同一个子网内根据MAC地址主机到主机的连接。

  网络层使用IP协议实现不同子网内主机到主机的链接。

  传输层则根据通信的具体需求使用TCP/UDP实现端口到端口的连接。

  应用层是最上层,具体应用使用不同的通信协议,如http、ftp。

 

 在PC(ios上应用类似)上访问网页的整个过程如下:

  —>1、打开浏览器,想要访问google,在地址栏输入网址www.google.com

这样,浏览器发送了一个网页请求的数据包。

—>2、DNS协议

我们知道,不在同一个子网内的两个主机进行数据通信,必须要知道对方的IP地址,但是,现在只知道网址www.google.com,不知道它的IP地址。

DNS协议可以帮助我们,将网址转换成IP地址。我们向DNS服务器发送一个数据包,然后DNS服务器做出响应,告诉我们这个网址对应的IP地址是172.194.72.105.

—>3、网关转发

使用子网掩码,判断目的主机是不是在当前子网内,如果不在进行转发,一直找到所在的那个子网。

—>4、服务器端响应

经过多个网关的转发,google的服务器172.194.72.105收到了数据包。此时数据包包括4个部分

  浏览网页用的是http协议。

  TCP部分,包括了收发双方的端口。实现端到端的通信。

  IP部分,是双方的IP地址。

  以太网协议,包括双方的MAC地址。

  根据IP标头的序号,服务器端将四个包拼起来,取出完整的TCP数据包,然后读出里面的HTTP请求,接着做出HTTP响应,再用TCP协议发送回来。

本机收到HTTP响应以后就可以将网页显示出来,完成了一次完整的网络通信。

 

3、HTTP协议

  所以http协议是由应用层发出的,在ios上可由客户端一次点击视频播放或者刷新操作发起。整个过程简单看成如下:

     1)请求

        i)客户端——>服务器

        ii)请求的内容:

           a:请求行(请求方法\http协议版本\请求资源路径)如

                 GET /MJServer/resources/images/1.jpg HTTP/1.1

    b:请求头(描述客户端的信息)

      Host: 192.168.1.105:8080 // 客户端想访问的服务器主机地址

      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0// 客户端的类型,客户端的软件环境

      Accept: text/html, */*// 客户端所能接收的数据类型

      Accept-Language: zh-cn // 客户端的语言环境

      Accept-Encoding: gzip // 客户端支持的数据压缩格式

 

    c:请求体(只有post请求才需要有,存放具体的数据)

      2)响应

        i)服务器——>客户端

    ii)响应的内容

    a:状态行(响应行,状态码、状态英文名称)

      HTTP/1.1 200 OK

           b:响应头(服务器信息,返回数据的类型,返回数据的长度)

      Server: Apache-Coyote/1.1 // 服务器的类型

      Content-Type: image/jpeg // 返回数据的类型

      Content-Length: 56811 // 返回数据的长度

      Date: Mon, 23 Jun 2014 12:54:52 GMT // 响应的时间

    c:实体内容(响应体,返回给客户端的具体内容)

 

 4、ios中发送HTTP请求的方案

   在iOS中,常见的发送HTTP请求(GET和POST)的解决方案有

  (1)苹果原生(自带)

  NSURLConnection:用法简单,最古老最经典最直接的一种方案

  NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大

  CFNetwork:NSURL*的底层,纯C语言

  (2)第三方框架

  ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新

  AFNetworking:简单易用,提供了基本够用的常用功能

建议:

  为了提高开发效率,企业开发用的基本是第三方框架

参考:

http://kb.cnblogs.com/page/144577/

http://www.cnblogs.com/wendingding/p/3813466.html

转载于:https://www.cnblogs.com/harrytien/p/4066140.html

最新回复(0)