From my own experience, if you are just getting started, I found "Computer Networking: A Top-down Approach by Kurose is a good introduction. It is top down, started from application layer and going down to link layer. That approach make an easier learning process because we can make sense different kind of application such as web/http, email, DNS, etc leverage the lower network layers to deliver its functionality.