Contents

计算机网络中的协议

Contents

计算机网络中的协议

“协议” 一词在中文词典的释义为: “共同计议;协商”, 它的近义词是协商、协定. 主要呢, 是为了服务 双方或多方 能够共同实现它们想要的结果所做出的 一致意见

比如咱们可能比较耳熟能详的 “离婚协议”, 它的服务对象就是 “夫妻” 双方, 协商达成一致意见就是男女双方自愿离婚这些内容, 如果抽象成 Code 简单的实现可能是这样的 (造词达人?):

在这个简单的 Code 中, 我把 target(协议的对象) 设置成了用来描述夫妻双方字面量的 联合类型, 意思是 DivorceAgreement(离婚协议) 是服务它们双方的.

/** 离婚协议 */
interface DivorceAgreement {
  /** 协议的对象 */
  target: '丈夫' | '妻子';
  /** 协议的内容 */
  content: string;
}

当协议中如果有一方不理解、不同意或者不能够完成协议的时候, 那么通常情况下其他的协议方就会放弃这个协议

网络协议

网络协议和人类的协议类似, 除了约定协议方的实体是某些硬件(比如计算机、手机、Pad、路由器或者其他具有网络能力的设备)或者软件组件. 在网络涉及到两个或多个远程通信实体的所有活动都受协议的制约.

就拿前端同学都比较熟悉的 http 协议来说:

首先计算机会向该 Web 服务器发送一条连接请求报文, 并等待回答.

本地计算机 ----我想要访问某个链接----> Web 服务器

该 Web 服务器收到连接请求报文后, 返回一条连接响应报文.

本地计算机 <----好的我知道了你把具体内容发来把---- Web 服务器

得知请求这个文档没问题了, 计算机就发起一条携带了详细信息的报文, Web 服务器处理这个报文之后返回对应的内容.

本地计算机 ----我想要 🍎 这个图片----> Web 服务器

本地计算机 <---- 🍎 ---- Web 服务器

总结

从上述的http协议的例子中可以明白, 协议是定义了两个或多个通信实体之间交换的报文的格式和顺序, 以及报文发送和/或接受一条报文或其他事件的时候所采取的动作