Socket实际上代表的是网络通信的一个端点, 通过Socket, 用户所开发的应用程序可以通过网络和其他Socket应用程序通信。Socket是网络的I/O基础,也可以将它与UNIX的管道或者文件类比。应用程序需要与远程主机连接时,应创建一个Socket,之后通过Socket与远程应用程序建立连接, 通过从Socket中读取数据以及写入数据来与远程应用进行通信。这个过程可以这样解释:本地程序通过Socket将信息传入网络,当信息进入网络之后,网络协议会引导信息通过网络让远端程序访问它。
一个网络连接需要包括以下5中信息:
- 本地协议端口指出接受报文或者数据包的进程
- 本地主机地址指出接收数据包的主机
- 远地协议端口指出目的的进程或程序
- 远地主机地址指出目的主机
- 协议指出程序在网络上传输数据时使用的协议
Socket数据结构包含这5种信息。也就是说,Socket是网络中通信中一个端点的抽象。