A dotted address is just four bytes displayed in decimal. Each octet is decoded independently from one byte.
Why four octets
An address field is four independent bytes displayed in decimal. The dots are presentation; the strip still stores byte values.
address bytes = 4 \text{address bytes}=4 address bytes = 4
Bytes become dotted octets
0xac becomes 172, 0x10 becomes 16, 0x0a becomes 10, and 0x63 becomes 99.
172.16.10.99 172.16.10.99 172.16.10.99
Address bytes Each byte of the address becomes one dotted-quad octet. Source address 32 bits / 4 bytes 0xac100a63 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 source-address 172.16.10.99
The address is byte arithmetic
The displayed address is 172.16.10.99, recomputed from the four bytes.
0 x a c 0 x 10 0 x 0 a 0 x 63 0xac\,0x10\,0x0a\,0x63 0 x a c 0 x 10 0 x 0 a 0 x 63
Address bytes Each byte of the address becomes one dotted-quad octet. Source address 32 bits / 4 bytes 0xac100a63 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 source-address 172.16.10.99
Decode it again
For the public DNS example, each byte is 0x08, so each dotted octet is 8. The same four-independent-octets rule gives 8.8.8.8.
Another address Four bytes become four dotted octets again. Public DNS address 32 bits / 4 bytes 0x08080808 byte 0 byte 1 byte 2 byte 3 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 source-address 8.8.8.8
Summary
A dotted address is four byte values, not one free-form string. Byte layout only; timing/throughput is not modeled here. Timing/throughput is not modeled here — only the exact byte layout.
address bytes = 4 \text{address bytes}=4 address bytes = 4
Address bytes Each byte of the address becomes one dotted-quad octet. Source address 32 bits / 4 bytes 0xac100a63 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 source-address 172.16.10.99