asset, AssetBundle, unity3d these three files on the difference?

Often seen to *. asset, *. AssetBundle, *. unity3d these three documents,
AssetDatabase.CreateAsset () can generate *. asset files, BuildPipeline.BuildAssetBundle () can generate *. assetbundle file, BuildPipeline.BuildAssetBundle () can generate *. unity3d file.

I ask, what role have these three files(*. asset, *. AssetBundle, *. unity3d), and what is the difference?

I’m just looking at this now, so please correct me if I’m way off, but AssetDatabase writes .asset files locally for externalizing objects from the scene or prefabs. This is more just for offloading objects to file while AssetDatabase.CreateAsset is for creating asset bundles for streaming externally. I’ve been trying to figure this out and the documentation is sketchy.