Android中的Http通信(一)之Http协议基本知识
一、什么是Http?
超文本协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。Http定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎么把文档传给浏览器。Http是万维网可靠的交换文件(包括文本、图像、声音、以及视频等)的基础。
工作流程:一次的Http请求成为一次事务,其工作流程可以分为四步:
1、首先客户端和服务器需要建立连接。这个是从客户端发起的。
2、建立连接之后,客户端发送一个请求给服务器,请求方式的格式为:统一资源定位符(URL)、协议版本号、后边是MIME的信息(请求的是文本、图像、声音、视频.....)包括请求修饰符、客户端的信息以及可能的内容。
3、服务器接到请求后,基于相应的响应信息,其格式为一个状态行、包括信息的协议版本号、一个成功或者错误的代码、后边是MIME信息包括服务器信息,实体信息以及一些可能的内容。
4、客户端接受到服务器端返回的信息之后,根据需要将信息展示出来,然后断开与服务器的连接。
Http协议永远是客户端发起,服务器端响应。
二、什么是URL?
统一资源定位符(Uniform Resource Locator),是因特网上标准的资源地址。URL格式主要分为三个部分:
1、协议,如Http、Https。
2、存有该资源的IP地址,有时候也包括端口号。如:192.168.1.112(现在基本使用域名代替,如:www.baidu.com)
3、主机资源的具体地址。如文件和目录名。如:index.jsp或aaa.doc
1和2之间用“://”隔开,2和3用“/”分开。1和2是不可缺少的,3是可以缺少的。
三、什么是TCP三次握手?
SYN(synchronous)是TCP/IP建立连接时的握手信号。ACK(acknowledgement)为确认符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接受。
过程如下图所示:
在客户端和服务器建立正常的TCP网络连接的时候,客户端首先会向服务器发送一个SYN信息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户端再以ACK消息响应,这样一来,客户端和服务器之间就建立了一种可靠的TCP连接,数据可以在客户端和服务器之间进行传递。
四、Http请求方式?GET:请求获取Request-Uri所标识的资源
POST:在Request-Uri所标识的资源后附加新的数据
Get和Post是比较常见的Http请求方式,另外还有HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS。
五、Http响应码信息?200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态码必须和WWW-Authenticate报头一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,大多是输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器不能处理当前客户端的请求,一段时间后可能会恢复正常
六、Http协议的特点?1、支持客户端/服务器模式:就是客户端请求,服务器做出响应。
2、简单快速:客户端向服务器请求服务时,是需要传入请求方法和路径。请求方法常用的有GET、POST。每种方法都规定了客户端与服务器联系的类型不同。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、无连接:无连接的含义就是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答之后,即立即断开连接。
5、无状态:HTTP协议是无状态的协议。无状态就是指协议对于事务的处理是没有记忆能力的。缺少状态就意味着如果后续处理需要前面的信息,则必须重新传送,这样会导致每次连接传送的数据量大。另一方面,在服务器不需要先前信息时,它的应答就会较快。
七、OSI七层协议
OSI七层参考模型每一层都有哪些协议
第七层应用层