Socket 是如何工作的?

Socket本质是网络通信编程接口(API),平时我们用到的high-level网络编程底层实现其实就是Socket。它面向的是两个传输层协议的编程,分别是UDP和TCP,UDP是不可靠传输协议(比如TFTP、TFTP、SNMP),TCP是可靠传输协议(比如HTTP、FTP、Telnet)。 这里不作赘述,有兴趣的可以查资料了解,推荐找网络原理的书看。

Chart

Socket 是如何工作的?_第1张图片
socket connect

通信过程

首先服务端需要在某个端口上发起监听(listen), 客户端需要知道服务端的IPPort(端口号),接着向服务端发起socket连接请求。在
发起连接的时候,客户端也会带上本地的Port和IP,一般由系统去做这个事情。

Socket 是如何工作的?_第2张图片
客户端向服务器发起socket连接

如果没有出现问题的话,服务器接受(accept)客户端的请求。之后同样创建一个socket套接字,绑定(bind)到本地的端口,并设置它远程端点(client)的IPPort。服务器会继续创建一个新的socket来监听(listen)客户端的请求。

Socket 是如何工作的?_第3张图片
服务端创建socket连接

在客户端,当一个连接被接受(accept)时,socket就创建成功了,客户端使用这个socket和服务器进行数据传输。
服务端和客户端通过write or read来进行通信。

socket连接是两个应用在网络中沟通的桥梁,socket绑定的端口号用来标识数据是被发送到指定的应用的。

你可能感兴趣的:(Socket 是如何工作的?)