先说一些概念知识:
网络上的请求就是通过Socket来建立连接然后互相通信,访问ip地址(网络上主机设备的唯一标识)
端口号:(定位程序)用于标示进程的逻辑地址,不同进程的标示
有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中建议使用1024以上的端口
传输协议(用什么样的方式进行交互)通讯的规则,常见协议:TCP、UDP
http:超文本传输协议,它的底层就是通过socket建立连接通信管道,他属于socket层上协议,属于应用层的协议,格式类似于json,有content-type,body等。
XMPP协议:即时通讯协议,同http一样属于应用层协议,格式为xml,环信就是基于xmpp进行的二次开发。
在这里附上tcp和udp的概念
TCP(传输控制协议)
建立连接,形成传输数据的通道
在连接中进行大数据传输(数据不受限制)
通过三次握手完成连接,是可靠协议,安全送达
必须建立连接,效率会稍低
UDP(用户数据报协议)
将数据及源和目的封装成数据包中,不需要建立连接
每个数据报的大小限制在64K之内
因为无需连接,因此是不可靠协议
不需要建立连接,速度快
tcp和udp都属于传输层协议,他和http、xmpp等的区别在于,tcp和udp是描述该协议的传输方式,比如是否要建立连接等,而http则表示在该协议下进行数据传送时的数据格式。
那么什么是socket,所谓socket就是套接字,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
通信管道建立的时候也就是socket连接的时候。
下面这张就是TCP协议下的整个流程图,
首先由客户端发起请求,服务端会时刻处于监听状态,当客户端将请求发送到服务端时,服务端将判断该请求是否正常,若请求正常则会建立连接,开启数据传输,具体可以参阅上图。