对于 SOCKET 在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是
调用这个网络库的一些 API 函数就能实现分布在不同主机的相关进程之间的数据交换.
SOCKET 中首先我们要理解如下几个定义概念:
一是 IP 地址:IP Address 我想很容易理解,就是依照 TCP/IP 协议分配给本地主机的网
络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就用对方的
IP
二是端口号:用来标识本地通讯进程,方便 OS 提交数据.就是说进程指定了对方进程的
网络 IP,但这个 IP 只是用来标识进程所在的主机,如何来找到运行在这个主机的这个进程呢,
就用端口号.
三是连接:指两个进程间的通讯链路.
四是半相关:网络中用一个三元组可以在全局唯一标志一个进程:
(协议,本地地址,本地端口号)
这样一个三元组,叫做一个半相关,它指定连接的每半部分。
五是全相关
一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就
是说,不可能通信的一端用 TCP 协议,而另一端用 UDP 协议。因此一个完整的网间通信
需要一个五元组来标识:
(协议,本地地址,本地端口号,远地地址,远地端口号)
这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成
一个合适的相关,或完全指定组成一连接。
客户/服务器模式
在 TCP/IP 网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式
(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相
应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件
资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源
较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进
程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建
立联系,为二者的数据交换提供同步,这就是基涌纪纪户/服务器模式的 TCP/IP。
客户/服务器模式钥纪纪作过程中采取的是主动请求方式:
首先服务器方要先启动,并根据请求提供相应服务:
1. 打开一通信通道并告知本地主机,它愿意在某一公认地址上 (周知口,如 FTP 为