有人能解释下什么是"wire-level protocol"吗?

40

我对线路级协议的概念不是很清楚。我听说BitTorrent使用它,并读到线路级协议可以被认为是API的相反。我读到RMI调用可以被视为线路级协议,但仍然有点困惑。有人能更好地解释一下吗?

4个回答

27

我不会说某个东西使用了一种传输协议或没有使用 - 我会谈论它使用了哪种传输协议。

基本上,如果某个东西正在与远程机器进行通信(即使是概念上的),那么就会有一些数据通过网络连接(电线)进行传输。描述这些数据的方式称为“传输协议”。即使在其中,你也通常会避免描述单个网络数据包 - 因此基于TCP的协议的传输协议通常会根据建立连接、两台计算机之间的数据流以及每一方预期何时关闭连接等细节来定义。


谢谢。那么最终所有东西都会使用某种电线级协议吗? - Legend
2
不过,这并不是全部 - “线路级协议”是一个特定的术语,它意味着协议中有一种类似于方法调用的接口,例如SOAP、RMI等,甚至是SQL。我认为它更像是以RPC为基础指定API,而不是特定的语言。 - Eric Warmenhoven
2
尝试将此答案与问题中的一些文本联系起来。一旦您可以愉快地处理字面上的线路协议(如上所述),您就可以“考虑”作为线路协议的更高级别概念。通常,您不需要担心源代码使用哪种线路协议。它要么设置正确并正常工作,要么不是。我认为,“RMI调用可以被视为线路协议”基本上是在说,您可以进行调用而不必担心调用和接收方之间的技术,就像使用TCP/IP这样的线路协议一样。 Jacob - TheJacobTaylor
@Eric:我没有看到协议中有方法调用接口的暗示。你可以轻松地描述ping、NTP等的线路级协议。现在,我想你可以把它们想象成类似于RMI(ping =“返回true”,NTP =“返回当前时间”),但是在那个阶段,你会想知道什么样的网络流量不像RMI。我认为没有理由将“线路级协议”限制在RMI上。 - Jon Skeet
@Legend:是的,那听起来像是通信协议的一部分。 - Jon Skeet
显示剩余2条评论

4
引用发布在这里的答案: 可以被认为是API的补充。它不是定义函数和创建库,而是定义通过网络传输的对话字节序列以实现某些功能。
当协议在上指定并发布后,大多数技术都可以使用它或被制作成可以使用它的技术。相比之下,API的实际实现是特定于平台的。
JMS是一个API。HTTP是一个协议。AMQP提供了中间件的HTTP等效物,同时让其他人提供实现。

3

2
当然。我已经谷歌过了,也找到了那些链接。只是从我所学的HTTP是一个应用层协议。什么时候可以称它为线路协议是让我感到困惑的事情... - Legend

0
引用自wikipedia
在计算机网络中,线协议是指一种将数据从一个点传输到另一个点的方式:如果多个应用程序需要互操作,就需要使用线协议。与传输层的传输协议(如TCP或UDP)相比,术语“线协议”用于描述在应用层表示信息的常见方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接