[计算机网络] Socket
一、定义
socket
即套接字,是应用层与TCP/IP
协议族通信的中间软件抽象层,表现为一个封装了TCP / IP
协议族的编程接口(API)
Socket
不是一种协议,而是一个编程调用接口(API
),属于传输层(主要解决数据如何在网络中传输)- 即:通过
Socket
,我们才能通过TCP/IP
协议进行网络通信的开发- 对用户来说,只需调用
Socket
去组织数据,以符合指定的协议,即可通信
-
成对出现,一对套接字:
Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}
-
一个
Socket
实例唯一代表一个主机上的一个应用程序的通信链路
二、建立Socket连接过程
三、原理
Socket
的使用类型主要有两种:
- 流套接字(
streamsocket
) :基于TCP
协议,采用流的方式提供可靠的字节流服务 - 数据报套接字(
datagramsocket
):基于UDP
协议,采用数据报文提供数据打包发送的服务
具体原理图:
四、Socket与Http对比
Socket
属于传输层,因为TCP / IP
协议属于传输层,解决的是数据如何在网络中传输的问题HTTP
协议属于应用层,解决的是如何包装数据- 二者本不属于同一层面,但是默认的Http里封装了下面几层的使用,所以才会出现
Socket
&HTTP
协议的对比(主要是工作方式的不同):- Http:采用请求—响应方式,客户端有需要才进行通信。
- Socket:采用服务器主动发送数据的方式,服务器端有需要才进行通信
- 建立网络连接后,Socket服务器可主动发送消息给客户端,而不需要由客户端向服务器发送请求。