📜  什么是 ATP(AppleTalk 交易协议)?

📅  最后修改于: 2022-05-13 01:56:13.343000             🧑  作者: Mango

什么是 ATP(AppleTalk 交易协议)?

ATP 代表 AppleTalk 事务协议。它是由 Apple Inc. 开发的称为“AppleTalk”的一系列网络协议的一部分。它是一种传输层协议,可让您通过网络传输少量数据。它在客户端-服务器设置中提供了一种无错误且可靠的通信方式。它执行大多数传输层功能,如分段、数据包排序等。

ATP 在类似于客户端-服务器架构的架构之上工作。有一个请求者向另一个端点发出请求,称为响应者。响应者执行必要的操作并返回响应。

ATP 中的交易:

下图描述了事务是如何发生的:

ATP 交易

ATP 交易

  1. 请求者调用 ATP 接口。然后,该接口使用 ATP 驱动程序与响应者的 ATP 驱动程序建立专用连接。
  2. 响应者端的驱动程序调用响应者应用程序,该应用程序处理传入的请求并返回要发送回请求者的响应。
  3. 为了发送响应,响应者调用其 ATP 接口,该接口使用预先建立的连接将响应发送回请求者。

如前所述,ATP 可用于发送少量数据。请求者和响应者都可以传输的数据量是有限制的。对于请求者,可以传输的数据为 578 字节,对于响应者,限制为 4624 字节。

ATP 交易的类型:

有两种类型的 ATP 交易:

  1. At-Least-Once Transactions :在 ALO 事务中,保证响应者将至少收到一次发送给它的所有请求。它不保证不会再次向响应者发送相同的请求。
  2. eXactly-Once 事务:在 XO 事务中,保证响应者将收到发送给它的所有请求恰好一次。它保证响应者已经收到一次的请求不会再次发送。

要使用的事务的性质由请求所需的处理类型决定。如果多次执行同一个请求很可能导致获得的结果出现某种不一致,那么就使用 XO 事务。如果请求的多次执行不太可能导致问题,则使用 ALO 事务。

ATP 数据包格式:

一个 ATP 数据包由一个 ATP 标头和后面的数据组成。 ATP 标头的大小为 8 个字节。整个数据包存储在 DDP(数据报传递协议)数据报内,并作为数据链路层帧传输。

以下是 ATP 数据包的结构:

ATP 数据包的结构

ATP 数据包的结构

数据部分跟随在 ATP 标头之后,根据数据包是由请求方还是响应方发送,该标头最多可达 578 字节或最多 4624 字节。

以下是ATP 标头字段的详细说明:

控制信息字节:

它用于存储有关请求/响应的控制相关信息,例如事务类型、此数据包是否是最后一个接收的数据包等。控制信息字节存储以下信息 -

Bit No.Description
0Specifies whether to use the DDP checksum or not.
1Specifies whether the transaction ID has been assigned for this request or not
2Specifies whether this request uses an extended parameter block or not
3Specifies whether the current packet is to be retransmitted immediately or not.
4Specifies whether this is the last packet of the response (end-of-message) or not.
5Specifies whether the current request is an exactly-once transaction or an at-least-once (AO) transaction.

位图/序列号:

位图/序列号大小为 8 位。 ATP 以其在数据传输过程中提供的可靠性而闻名。它保证请求者将收到响应其请求而发送给它的所有数据包。为此,它需要跟踪请求者已收到哪些数据包以及尚未收到哪些数据包。 ATP 使用的方法是为响应发送的所有数据包分配序列号,并将响应的最后一个数据包标记为“消息结束”(由 ATP 中控制信息字节的第 4 位表示标题)。请求者在收到所有数据包后组装,检查ATP头的序列号和控制信息字节,判断是否收到所有数据包。如果不是,则接收端的 ATP 驱动程序启动丢失数据包的重传。

交易编号:

事务 ID 用于将每个请求与其对应的响应相关联。它的大小为 16 位。请求者可以在任何给定时间发出多个请求。事务 ID 帮助 ATP 跟踪所有发出的请求,并确保为每个请求传递的响应是正确的。它由 ATP 标头的第 3 和第 4 个字节携带。

用户数据:

ATP 标头的最后 4 个字节不被 ATP 使用。它们保留供请求者和响应者应用程序使用。 ATP 驱动程序支持预定义函数,可让您将这些标头的值设置为您想要的值。

下表总结了作为 ATP 标头一部分的字段:

Byte  No.Field StoredSize     (Bits)Description
1Control Information8Is used to store control-related information about a request/response like the type of transaction, whether this packet is the last packet to be received or not etc.
2Transaction Bitmap/ ATP Sequence Number8It is used to find the sequence number of the current packet if the packet was sent in response to a request(called ATP sequence number). In case the current packet is a request, it represents the number of buffers supported by the application (called Transaction Bitmap).
3-4Transaction ID16It stores the transaction ID of every request. It is used by the responder to keep track of all the requests.
5-8User Data32Carries application-specific information like checksum etc.