In order to understand the differences between Block Definition Diagrams and Internal Block Diagrams, one must first understand that they both feature the basic structural element of SysML, the block. A block is defined in SysML as follows:

block: a modular unit of system structure that encapsulates its contents, which include Properties, Operations, and Constraints. Blocks are essentially components that can both provide and require Interfaces for both information and physical flows. Blocks can be recursively decomposed into Parts, where each Part must also be defined by a Block.

A Block Definition Diagram (bdd or BDD) shows Blocks, their contents and relationships; in contrast, an Internal Block Diagram (ibd or IBD): shows the internal structure of a Block, showing its Parts and including its interaction points to other Parts of the system.

Usage Note: Block Definition Diagrams can be used in conjunction with Internal Block Diagrams to define system structures as trees of modular components, such as a System-of-Systems decomposition in a System Context diagram. A Block Definition Diagram (BDD) specifies a Block as a black-box representation whose white-box Part realization (implementation) is defined via an Internal Block Diagram (IBD). In this manner, BDD and IBD diagrams complement each other, and facilitate recursive design techniques. Blocks define their Parts, where each Part can have a different usage or role in the context of the Block that encapsulates it.

Related Constructs & Concepts
see: UML specification-realization dichotomy
compare and contrast: UML::Class, Composite Structure, and Component diagrams