从一个驱动的代码中看到了 request / indication / response / confirm 等函数,不知是什么功能,上网找了找才发现原来是《计算机网络》中有关服务原语的概念。摘抄如下:
服务原语包含四种类型:
请求(request):一个实体希望得到完成某些操作的服务
指示(indication):通知一个实体,有某个事件发生
响应(response):一个实体希望响应一个事件
证实(confirm):返回对先前请求的响应
原语一般都携带参数。
证实型(confirmed)和非证实型(unconfirmed)服务的区别:
证实型服务包含所有4种服务原语。
非证实型服务只包含请求和指示2种服务原语。
服务原语工作示例
- COENNCT.request:呼叫方请求建立连接
- CONNECT.indication:被呼叫方指示有人请求建立连接
- CONNECT.response:被呼叫方表示接受/拒绝建立连接请求
- CONNECT.confirm:通知呼叫方建立连接的请求是否被接受
- DATA.request:请求发送数据
- DATA.indication:指示数据的到达
- DISCONNECT.request:请求释放连接
- DISCONNECT.indication:指示对方释放了连接
服务与协议的关系
服务是各层向它上层提供的一组原语,定义了两层之间的接口。
协议是同层对等实体之间交换数据帧、分组和报文的格式及意义等信息的一组规则。
服务确定了能为上一层提供的操作。
协议实现为上一层提供服务的具体方法。