Nodes.dat file

From AMule Project FAQ
Revision as of 05:43, 28 August 2005 by 83.42.86.182 (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

File

Name: nodes.dat

Location: ~/.aMule/

Description

This file stores details about other known Kademlia clients (also known as nodes).

It is usually used to achieve a successfull bootstrap faster.

Format

As you can see, all the fields are stored without any separator character. This is done like this because all the fields have a specific size:

  • Number of contacts: Number of contacts that will be listed (4 bytes)

After specifying the number of contacts that will be listed, the file lists them. Each contact takes 25 bytes, splitted into the following fields:

  • ClientID: The contact's ClientID (16 bytes)
  • IP: The contact's IP (4 bytes)
  • UDP Port: The UDP port to connect to when trying to reach the contact (2 bytes)
  • TCP Port: The TCP port to connect to when trying to reach the contact (2 bytes)
  • Type: (1 byte)

Once this data is put together, it is stored in little-endian.

Example

The following is a hex dump of an hypothetic preferences.dat file:

0200000012257425DBA4EDDBD097150757404486E55E04DE40123612021F64632587A31EC2FC8566C4A9BAB184E6E9B7D44012361202

In the above example, the following data can be seen:

  • Number of contacts: 2 (In hex: 02000000, remember it's in little endian)
  • Contact #1:
    • ClientID: 12257425DBA4EDDBD097150757404486
    • IP: 222.4.94.229 (In hex: E55E04DE, remember it's in little endian)
    • UDP Port: 1240 (In hex: 4012, remember it's in little endian)
    • TCP Port: 1236 (In hex: 3612, remember it's in little endian)
    • Type: 2 (In hex: 02)
  • Contact #2:
    • ClientID: 1F64632587A31EC2FC8566C4A9BAB184
    • IP: 212.183.233.230 (In hex: E6E9B7D4, remember it's in little endian)
    • UDP Port: 1240 (In hex: 4012, remember it's in little endian)
    • TCP Port: 1236 (In hex: 3612, remember it's in little endian)
    • Type: 2 (In hex: 02)

Extra

Since the number of contacts field is 4 bytes long, the maximum number of nodes you could store in this file is 4294967296 (~4300M), which should be far enough. Anyway, since this number is so big, aMule, eMule and all clients have hard limitted the amount of contacts that can be stored (aMule's hard limit is 5000).