The first byte is 0x89, meant to tell any text editor that this isn't a text file, and to prevent text files from being recognized as PNG. It also detects if you mistakenly transferred the file in some ASCII file mode that clears the top bit.
The next three bytes are PNG in ASCII, meant for humans looking at it in a hex editor.
The next two bytes are a Windows-style line ending (CR LF, or 0D 0A). This breaks the signature if the file mistakenly undergoes Windows->Unix line conversion
The next byte is 0x1A - End of File. This causes DOS tools to stop printing the file.
The last byte is a Unix-style line break, to detect Unix->Windows line conversions
To make the validation process complete, a process can check the integrity of the last chunk (IEND). Not only does it provide a fixed sequence of 12 bytes you can use to check that the file is complete, the fact that its length field is 0 allows you to verify that zero bytes were transferred correctly. Of course you would likely notice anyways because of the chunk checksums, but IEND allows you to fail fast and makes it easier to diagnose the actual issue.
http://libpng.org/pub/png/spec/1.0/PNG-Rationale.html#R.PNG-...