网络协议(Http,TCP/IP Socket)相关知识
2017-12-21 00:47
711 查看
网络协议(Http,TCP/IP Socket)相关知识
Android主要有两种客户端与服务器通信方式,一种是Http方式,该方式是无连接,无状态的,是请求-响应方式 客户端向服务器端主动发送请求,服务器才发送数据给客户端另一种方式是Socket方式,该方式是通过客户端与服务器端建立连接,就可以实现服务器与客户端直接通信,不需要客户端先发送请求
Http协议:
应用层
无状态 不记忆之前的,因此好处是应答快
缺点是若要处理前面的信息,则要重传,数据量增大
无连接:每次连接只处理一个请求
HTTP两种报文
一、请求报文
1 请求行
包括: 请求方法 Url http 协议版本
请求方法:Get Post
GET请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为”GET”,实质上,GET和POST只是发送机制不同,并不是一个取一个发
2 请求报头(请求头)
请求数据 post方法才有
3 请求体
可以参考该博客更好理解请求行 请求头 请求体的概念,内容:
http://blog.csdn.net/u010256388/article/details/68491509
二、响应报文1 状态行:服务器HTTP协议的版本
服务器发回的响应状态代码
100~199:指示信息,表示请求已接收,继续处理
200~299:请求成功,表示请求已被成功接收、理解、接受
300~399:重定向,要完成请求必须进行更进一步的操作
400~499:客户端错误,请求有语法错误或请求无法实现
500~599:服务器端错误,服务器未能实现合法的请求
常见的状态码如下:
200 OK:客户端请求成功
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden:服务器收到请求,但是拒绝提供服务
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
2 消息报头
3 空行
4 响应正文
Socket
socket又称套接字,是建立在端口基础上的通信,因此又是端口通信。在程序内部通过建立端口与外界端口进行通信Socket通信特点是 数据丢失率低,使用简单 便于移植
根据底层协议的不同,socket可以分为不同类型。这里主要介绍基于TCP/IP协议的Socket通信方式
在这个协议族当中主要的Socket类型为流套接字(streamsocket)
Android Socket编程基本流程
TCP UDP
TCP是面向连接的、可靠的数据流传输 (如金融数据等)UDP是无连接,尽最大努力交付,无拥塞控制的(如视频语音通话)
TCP/IP协议
TCP连接管理:主要分为三大步骤:
一 连接建立:(三次握手)
第一次握手:客户端向服务器端发送连接请求(SYN=1 seq=x)
第二次握手:服务器端接受并同意,则返回 SYN=1 ACK=1 确认号 ack=x+1 自己的序号 seq=y 给客户端
第三次握手:客户端接受到后,告诉服务器, ACK=1 ack=y+1 seq=x+1
ACK 确认号 为1有效
SYN 建立一个连接
FIN 释放一个连接
二 数据传输
三 连接释放(四次挥手)
因为TCP是全双工的 需要两方各自释放自己的资源,因此需要两个两次挥手
1 客户端主动请求释放 FIN=1 seq=u
2 服务器端接受 ACK=1 ack=u+1 seq =v
客户端到服务器端的已经释放
3 服务器端若不发送数据给客户端了,则 FIN=1 seq=w ACK=1 ack=u+1
4 客户端接收 则返回 ACK=1 seq=u+1 ack=w+1
相关文章推荐
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
- 网络协议HTTP、TCP/IP、Socket
- http,socket,tcp/ip 网络传输与通讯知识总结
- 网络协议:TCP/IP、UDP、Http、Socket
- 网络协议(http/tcp/ip/socket)请求与服务
- 网络各个协议:UDP、TCP/IP、SOCKET、HTTP
- TCP/IP、Http、Socket的区别以及面试中关于网络协议常问的考点
- Java系列-Socket网络编程,TCP/IP和Http等网络协议理解
- 关于网络传输协议的介绍(TCP、UDP、IP、Http、Socket)
- TCP/IP、Http、Socket的区别以及面试中关于网络协议常问的考点
- 网络协议:TCP/IP、UDP、Http、Socket
- 网络七层协议、TCP/IP、UDP、HTTP、Socket 个人理解
- http,socket,tcp/ip 网络传输与通讯知识总结
- http,socket,tcp/ip 网络传输与通讯知识总结
- 常见网络协议相关总结socket, TCP/IP
- 从数据长征和网络协议对TCP/IP,http,socket 进行概念梳理
- http,socket,tcp/ip 网络传输与通讯知识总结
- 【Java】【网络协议】Http,TCP/IP,Socket,XMMP
- Socket网络编程,TCP/IP和Http等网络协议理解
- 网络协议的详细讲解,Socket和TCP/IP还有HTTP