不少开发人员对Socket的概念不是很熟悉,这篇文章可带你快速了解socket(高手略过)。
Socket又称"套接字”,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。
我们做应用程序开发的,使用模式通常为客户端与服务端通信,发出请求获得应答,这也与我们常使用的http类似,但相比之下:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
对于Socket,实现网络通信还需要这些要素:
*IP地址: (网络上主机设备的唯一标识)
*端口号: (定位程序,有效端口:0-65535,其中0-1024由系统使用或者保留端口,开发中建议使用1024以上的端口)
*传输协议: (常见TCP、UDP)
TCP和UDP
TCP(传输控制协议)
建立连接,形成传输数据的通道
在连接中进行大数据传输(数据大小不收限制)
通过三次握手完成连接,是可靠协议,安全送达
必须建立连接,效率会稍低
UDP(用户数据报协议)
将数据及源和目的封装成数据包中,不需要建立连接
每个数据报的大小限制在64K之内
因为无需连接,因此是不可靠协议
不需要建立连接,速度快
对于使用TCP/IP的Socket,不得不提到它的三次握手:
1.客户端向服务器发送一个SYN J
2.服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1
3.客户端再想服务器发一个确认ACK K+1
完成了三次握手,客户端与服务端就可以传送数据了。
百度说的可能更好理解.png 整个Socket的通信流程如下: 流程图.png
网友评论