The datagram header contains both the source and destination IP
addresses as well as various other administrative data. This means
that every datagram can be identified, in terms of "where it came
from" and "where it's going".
The TTL (Time to Live, or "hop count") field
sets a maximum number of routers which this datagram may traverse
before it's assumed to be "looping" and is discarded.
Virtually all "real world" datagrams have a minimal length (20
byte) header. Although various optional (extra) header fields are
permitted, these are rarely observed in the Real World™.
Each network in the Internet is characterised by a
Maximum Transmission Unit (MTU), which defines the
largest datagram which can be sent on that network. Whilst the
total length of a datagram can (in theory) be up to 64 KB, "real
world" MTU limits usually mean datagrams are < 1500 bytes in
total length.
The data field contains "higher layer" protocol data -- usually
a TCP or UDP segment which IP is delivering across the Internet.
The protocol field identifies which transport
level protocol data is being carried. We say that the TCP/UDP
segment is encapsulated in an IP datagram. The
TCP/UDP segment, in turn, usually contains application protocol
data in its data field.