套接口(Socket)是网络协议传输层提供的接口。两个网络进程采用套接口方式进行通信时,它们扮演的角色不同,使用的套接口也不同。主动请求服务的一方叫客户(Client);使用客户建立的套接口Socket,通过它主动与对方进行连接;服务者等待接收客户服务请求,提供服务,返回结构,使用服务者套接口ServerSocket
套接口是进程之间进行通信的抽象连接点,封装了主机地址、端口、传输层通信协议三方内涵
(1)套接口协议
用户目前可以使用两种套接口,即流套接口和数据报套接口。流套接口提供了双向的、有序的、无重复并且无记录边界的数据流服务。TCP就是一种流套接口协议;
数据报接口支持双向的数据流,但是并不保证是可靠、有序、无重复的,即一个以数据报套接口接收的信息的进程有可能发现信息重复,或者和发出的顺序不同。数据报套接口的一个中亚的特点是它保留了记录边界。UDP是数据报套接口协议。
主机地址和端口号:
每一个进程都运行在该主机的一个对外开放的端口上。主机地址用其IP地址或者域名表示,一个端口与使用该端口的进程是对应的。端口常以整数编号,作为服务者可以选择一个端口号,网络的客户以服务者主机和服务者选择的端口号与服务者进行连接,其中,一些端口号是网络服务约定的,例如80是www服务的默认端口号。
一对一的Socket通信:
TCP是一种可靠的、基于连接的网络协议。网络上两个进程采用Socket方式进行通信时,服务器构建ServerSocket对象,并侦听来自网络的客户连接请求。另一方为客户通过Socket主动向网络上的服务器发送连接请求,服务器接收客户连接请求后,同时建立一个新的Socket对象,新的Socket对象负责向客户方继续交互。原服务器构建ServerSocket对象继续侦听来自网络的客户连接请求。