NetCDFファイルは2つの部分からなる一つのファイルとして格納されています。
データ 部分は無制限次元を持たない変数のデータを含む 固定サイズデータ、そして蒸せ原次元を有する変数のデータを含む 変動サイズデータ からなります。
ヘッダー部分とデータ部分は両方とも機種独立型で表現されています。この形式は、配列や非バイトデータの効率的な格納をサポートするために拡張されたXDR(eXternal Data Representation)と非常に似ています。
ファイルの先頭にあるヘッダー部分はファイルに含まれる次元・変数・属性についての名前・型・その他の性質に関する情報を含みます。各変数の情報には固定際すデータについては変数データの先頭の オフセットや、記録中の他の変数の相対オフセット 等がある。ヘッダーは、又、次元長や各変数の複数次元のインデックスを適切なオフセットにマップするのに必要な情報を含みます。
このヘッダーの使用可能なスペースに余分はありません。NetCDFファイル中の次元・変数・属性(属性値を全て含む)に必要な最低限の大きさしかありません。 これによって、NetCDFファイルは コンパクトであり、データを自己記述的にするための従属的なデータを格納するのにほとんど オーバーヘッドを必要としないという利点があります。この構造の欠点は、NetCDFファイルのヘッダーを増大(又は可能性としては低いが縮小)させるようなどの操作も、データをコピーすることによって移動させるということです。例えば、新しい次元や変数を追加したりする場合がそうです。 このコストは nc_redef への呼び出しの後に nc_enddef が呼び出されたときに掛かります。データを書き込む前に必要な時限・変数・属性を生成して、ファイルのヘッダー部分により多くのスペースを必要とする生成後のNetCDF要素の追加や名前の変更を避けることによって、その後のヘッダー部分の変更に伴うコストを回避することが出来ます。
ヘッダーのサイズが変更されると、ファイル中のデータは移動され、ファイル内におけるデータ値の位置が変更されます。再定義中に他のプログラムがこのファイルを読み取っている場合には、そのファイルを間違っている可能性のある旧インデックスを使用して参照することとなります。NetCDFファイルが再定義を超えて共有されるためには、再定義中の読み取りアクセスを防ぎ、次回のアクセスの前に読み取る側に nc_sync を呼び出させるような、NetCDFライブラリ外の機構が必要となります。
ヘッダーに続く固定サイズデータ部分は無制限次元を有さない変数の変数データを全て含みます。各変数のデータはこのファイル部分に連続的に格納されています。無制限次元が無い場合には、これがNetCDFファイルの末尾の部分となります。
固定サイズデータ部分に続く記録データ部分は、各々記録データの情報を全て含む固定サイズ記録の変数番号からなります。各変数の記録データは各記録中に連続的に格納されています。
各データ部分における変数データの順番は変数が定義された順番と同じで、NetCDF変数IDの昇順になります。 これを知っていると、現行ではデータを連続的に読み書きすることが最適なデータアクセス法なので、場合によってはデータアクセス性能を向上させることが出来ます。