我爱编程

初识Http

2016-11-24  本文已影响31人  求闲居士

1,简介

作为一个安卓开发者,从安卓开发的角度学习下HTTP。先来对HTTP有个大概的印象吧,一步一步慢慢了解。

Http:HyperText Transfer Protocol,即是超文本传输协议,是一个基于TCP/IP通信协议来传递数据。最新版本 HTTP/2 更是让它成为技术热点。

2,工作流程

简单介绍下工作流程,下面一章开始简单介绍,每个点都能详细说上一本书了,下面的介绍并不钻入细节研究。

  1. 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
  2. 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。

3,详解

一,URL

Http请求第一步肯定是要知道请求地址啊,地址都错了还玩蛋啊!404什么的多蛋疼。

URL是寻找信息时所需要的资源位置。通过URL客户端才能找到网络中的大量数据资源。

URL语法:<方案>://<用户名>:<密码>@主机:端口/路径;参数?查询#片段,几乎没有几个URL包含了所有这些组件。如:https://www.qycloud.com.cn/notice/index

二. 发送请求:

HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。——>请求 <——确认 连接——>。一个重要的概念是面向连接,既HTTP在传输完成之间并不断开TCP连接,默认都开启了Keep-Alive。

http请求由三部分组成,分别是:请求行消息报头请求正文
请求报文的格式:

<方法><资源路径><协议版本>
<报文头信息>
<报文体信息>

如:

GET /notice/index  HTTP/1.1 
Host:www.qycloud.com.cn
1. 请求行

请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 。

看上面那个请求报文,表示从/notice目录下请求index这个文件,这个请求行和消息报头的可以看出请求的URL:https://www.qycloud.com.cn/notice/index

其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

2. 消息报头

请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。上面那个例子中的Host就是。

简单介绍几个请求报头:

3. 请求正文

就是我们Post请求传递的请求内容放在报文体信息中。

三. 返回响应信息

响应报文会将请求的结果返回给客户端。请求报文和响应报文的结构基本相同。
响应报文格式:

<协议版本><状态码><原因短语>
<报文头信息>
<报文体信息>

如:

HTTP/1.1 200 OK
Content-Type:image/gif
Conetnt-Length4567

可以看出请求报文和响应报文只有起始行的语法不同。

1. 状态行

格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值.

状态码取值:

2. 响应报头:

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

4. HTTPS

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。可以说HTTPS = HTTP + SSL。

1. HTTPS通信过程

(来源)

image
2. HTTP 和 HTTPS 的不同之处

HTTPS 和 HTTP 唯一不同的只是一个协议头(https)的说明,其他都是一样的。

HTTPS 跟 HTTP 一样,只不过增加了 SSL。

HTTP 包含如下动作:
SSL 包含如下动作:
3. Https解决的问题
4. SSL协议的握手协议

结合前面那张通信图看,这里只是详细解释。

参考:
Http协议
HTTP协议详解(真的很经典)
HTTP协议详解

上一篇 下一篇

猜你喜欢

热点阅读