## ACKnowledgements ¶

There is possibility to explicitly acknowledge the receipt of the encrypted packet, by generating the reply of `ACK`-type which contains the packet identifier.

ACK packets can be generated explicitly by `nncp-ack` command, or during the tossing procedure if `-gen-ack` option is specified.

General workflow with acknowledgement is following, assuming that Alice has some outbound packets for Bob:

- Transfer encrypted packets, without deleting them locally:

      alice$ nncp-xfer -keep -tx -node bob /mnt/shared

- On Bob’s side retrieve those packets:

      bob$ nncp-xfer -rx /mnt/shared

  That will also check if copied packets checksum is not mismatched.

- Create ACK packets of received ones, saving the list of encrypted ACK packets:

      bob$ nncp-ack -node alice 4>acks

- Send those newly created packets back to Alice:

      bob$ nncp-xfer [-keep] -tx /mnt/shared

- Remove them from outbound spool, because we expect no acknowledgement for them:

      bob$ nncp-rm -node alice -pkt <acks

- Get those acknowledgement packets and toss them:

      alice$ nncp-xfer -rx /mnt/shared
      alice$ nncp-toss

  Each ACK packet will remove kept corresponding outbound packets, because Bob explicitly confirmed their receipt.

Similarly you can use it with `nncp-bundle`, but do not forget that by default it does not do checksumming of the packets, so you should either use its `-check` option, or run `nncp-check` after.

If you generate ACK packet during the tossing, then the list of ACK packets is saved as empty files directly in the spool. You can remove transferred ACK packets with `nncp-rm -ack`.