## 2 Named Data Networking: Nuts and Bolts  
NDN is an Internet architecture that prioritizes data and intends to substitute the present TCP/IP-centric architecture of the Internet. In particular, it attempts to address the escalating need for communication that is centered on content [6]. NDN identifies two entities: _producers_, who are responsible for creating and offering content, and _consumers_, who seek and retrieve data. In order to obtain content, consumers transmit the name of the desired data via a specific packet. NDN relies on a hierarchical namespace to differentiate content, for example the present paper could be named: \"com/mdpi/future-Internet/2023/ndn-bda\".  
NDN relies on two packet types: _Interest_ packets and _Data_ packets. Consumers use _Interest_ packets to request content that produces include within _Data_ packets. The most-recent NDN packet specifications [8] mandate that every _Interest_ packet must comprise a combination of mandatory and optional parameters. A Name must be included in each _Interest_ packet, representing the content being sought by the consumer. The Nonce field, consisting of a randomly generated string of four octets, is leveraged to uniquely identify _Interest_ packets, and thus prevent looping in the network. _Interest_ packets may include optional parameters: CanBePrefix for the _Interest_ packet's name, MustBeFresh for the requested content, InterestLifeTime representing how long an NDN router will maintain the state for this _Interest_, being HopLimit and ForwardingHint utilized in forwarding. In addition, _Interest_ packets may also include application-specific parameters in the ApplicationParameters field. Furthermore, _Interest_ packets can be signed if required [9].  
Once a consumer sends an _Interest_ packet to request particular data, the corresponding response is transmitted through a _Data_ packet. In NDN, the producer should sign every _Data_ packet. Fundamentally, a _Data_ packet comprises three components: the Name, the Content, which denotes the payload of the _Data_ packet, and a Signature. Supplementary details such as ContentType, FreshnessPeriod, and FinalBlockId are also encompassed within the _Data_ packet.  
Each node with the NDN stack maintains three data structures [10]. The Pending Interest Table (PIT) stores all the not-yet-satisfied _Interest_ packets, which remain in the PIT until a _Data_ packet returns or times out. The PIT entry contains fields such as the name of the requested _Data_, incoming and outgoing interfaces, and an expiry timer. The Content Store (CS) enables NDN to offer in-network caching, where each NDN node can store passing _Data_ packets in a local cache. To maintain its size, each CS needs to implement a caching policy, such as First In First Out (FIFO), Least Recently Used (LRU), and Least Frequently Used (LFU) [11]. The Forwarding Information Base (FIB) is used to forward incoming _Interest_ packets to upstream nodes. FIB entries are indexed with name prefixes instead of IP addresses, and each FIB entry consists of a name prefix and a list of next hops. Routers can forward _Interest_ packets to one or multiple hops, enabling multi-path forwarding based on their strategy.