Android 网络编程

1.HTTP简介

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP协议的主要特点

1.支持C/S(客户/服务器)模式

2.简单快速:客户想服务器请求服务时,只需要传送请求方法和路径。请求方法常用的有GET、POST、HEAD,每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。采用这种方式可以节省传输时间。

5:无状态:HTTP协议是无状态协议,无状态是指协议对事务处理没有记忆功能。缺少状态意味着如果后续处理需要前面的信息,则它必须重新上传,这样可能导致每次连接的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP请求方法有8种,分别是GET、POST、DELETE、PUT、HEAD、CONNECT、TRACE、OPTIONS。其中PUT、DELETE、POST、GET分别对应着增删改查,移动开发最常用的就是POST和GET。

服务器返回的响应状态码,有五种可能取值:

1)100-199:指示信息,表示请求已接收,继续处理。

2)200-299:请求成功,表示请求已经被成功接收。

3)300-399:重定向,要完成请求必须进行更进一步的操作。

4)400-499:客户端错误,请求有语法错误或者请求无法实现

5)500-599:服务器错误,服务器未能实现合法的请求。

常见的状态码如下:

200:OK:客户端请求成功。

400: Bad Request:客户端请求有语法错误,不能被服务器理解。

401:Unauthorized:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用

403::Forbidden:服务器收到请求,但是拒绝提供服务。

404:Not-Found:请求资源不存在。

500:Internal Server Error:服务器发生不可预期的错误。

503:Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

TCP/IP协议-三次握手:

三次握手:建立一个TCP连接时,需要客户端和服务器端总共发送3个包确认连接的建立,在Socket编程中,这一过程有客户端执行connect来触发,具体流程如下:


第一次握手:Client将标志位SYN设置为1,随机产生一个值seq=j,并将该数据包发送给Service,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1直到Client请求建立连接,Server将标志位SYN和ACK都设置为1,ack=j+1,随机产生一个值seq=k,并将该数据包发送给Client来确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为j+1,ack是否为1,并将该数据包发送给Server,server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以传输数据了。

你可能感兴趣的:(Android 网络编程)