TCP、UDP、HTTP、Socket、HttpUrlConnection、HttpClient、Volley、OkHttp之间关系

下面是我自己总结的,若有不足希望大家多多指教吧!

TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。
它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议,TCP有三次握手,四次挥手
TCP/IP---传输控制协议,连接时需要三次握手,断开连接时需要四次挥手;
TCP: 当使用TCP协议进行连接时,需要经过三次握手,断开时要四次挥手,是以字节流的方式进行数据的传输的,它是Http协议的基础,也是Socket连接协议的一种。

Http--超文本传输协议,它是基于TCP之上的,Http的一次连接中可以发送多个请求,当一段时间无消息发送时,会自动断开连接;并且只有当客户端发送请求后,服务端才可以向客户端传回数据,因此,客户端定时向服务器端发送连接请求.而Socket连接时,服务器可以随时向客户端发送数据报包,因为Socket还采用UDP协议.

Socket---它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机/远地的IP地址,本地/远地进程的协议端口port,可以指定使用的传输层协议(Tcp等),Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接,通常情况下Socket连接就是TCP连接.并且在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接也会像HTTP一样导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态,Socket连接,服务器就可以直接将数据传送给客户端,可用于时效性较强的如即时通信、游戏和股票等。

Socket连接---至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

HttpURLConnection和HttpClient都是通过HTTP进行操作的,这两种方式都支持HTTPS协议,以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能,所以采用HttpURLConnection和HttpClient封装的volley也用http协议。
而OkHttp的最底层是Socket,而不是HTTP,它通过Platform的Class.forName()反射获得当前Runtime使用的socket库。

进程间通信IPC(interprocess communication):只能是客户端主动调用服务端的方法,服务端无法反过来调用客户端的方法,因为IPC的另一端Service无法获取客户端的对象。

有三种方式可以进行IPC通讯:

1. 直接使用Binder对象;

2. 使用Messenger对象;

3. 使用AIDL进程通讯

远程服务;startService();bindService();bu = Stub.asInterface(service);---在用bu调用方法

进程间通信IPC包括:本地过程调用LPC(又叫耦合机制) 和 远程过程调用RPC。


推荐两个相关网址:

线程间通讯机制:http://blog.csdn.net/jackchen95/article/details/13631761
OkHttp3源码分析:http://www.jianshu.com/p/aad5aacd79bf


你可能感兴趣的:(请求)