协议和接口

协议和接口

什么是协议?

一个协议定义了在两个或多个通信实体之间进行交换的报文格式和次序,以及报文发送和/或接收一条报文或其他事件所采取的行动。

协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议的语法方面定义了所交换的信息的格式,而协议的语义方面的规则就定义了发送者或接收者所要完成的操作。

人类协议

人类协议要求一方首先进行问候,以开始与另一人的通信。
对“你好”的典型响应应是返回一个“你好”报文。此人用一个热情的“你好”进行响应,隐含着一种指示,表明能够继续向那人询问时间了。
对最初的“你好”的不同响应(例如“不要烦我!”,或“我不会说英语”,或某些不适时宜的回答)也许表明了一个勉强的或不能进行的通信。在此情况下,按照人类协议,发话者也许将不能够询问时间了。

网络协议

网络协议的行动实体是设备的硬件或软件。

在因特网中,凡是涉及两个或多个远程通信实体的所有活动都受协议的制约。在因特网中,我们广泛地使用了协议,用于完成各种不同的通信任务。

什么是接口

接口在日常生活中是个常见的概念,如我们每天都在使用的USB接口,typec接口,这些都是肉眼可见的硬件接口,确保了实体的连接。
实际上,接口不仅出现在硬件场景,而是个更抽象的概念。

模块化(接口与模块化设计)-从程序设计的角度

模块是从物理上对程序实体的定义进行分组,是可以分别编写和编译的程序单位。一个模块包括接口和实现两部分。
模块的接口规定了在模块中定义的、可以被其他模块使用的一些程序实体;模块的实现是指在模块中定义的程序实体的具体实现。
接口起到了模块设计者和使用者之间的一种约束作用:使用者按照模块的接口来使用模块所提供的功能;模块的实现者根据规定的模块接口进行实现。

系统的接口

操作系统提供了一组抽象,主要是数据类型(例如文件)以及其上的操作(例如read)。它们合起来形成了对用户的接口。

API(Application Programming Interface)

一种系统调用接口。

API从程序设计的角度定义了许多标准的系统调用函数。应用进程只要使用标准的系统调用函数就可以得到操作系统的服务。

套接字(socket interface)

最初由伯克利为Berkeley UNIX操作系统定义的一种API。

在讨论网络编程时常常把套接字作为应用进程和运输层协议之间的接口。

协议和接口比较

协议和接口常常放在一起或者混淆使用,本质上都是抽象的规则集合。
在计算机网络语境下,我们使用协议往往指网络协议/通信协议,网络模型中的每层都有对应的不同协议。
在编程场景中 ,我们往往具体指某种接口,可以狭义地理解为交互点(类似于去政务大厅的办事窗口)、函数/方法。但在具体场景的使用中,有时会默认背景,比如将API简称为接口(实际上是包含关系,而不是等价关系)。
即广义上讲,接口和协议可以一起使用,它们都是高度抽象的概念。狭义上,协议有各种具体的协议,接口有各种具体的接口(如java中有可定义的interface,常用来与抽象类比较),这时两者是不同。

参考书籍

  1. 《计算机网络-自顶向下6th》
  2. 《计算机网络7th》谢希仁
  3. 《程序设计教程-用C++语言编程》陈家骏
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值