I am looking for a tutorial/blog post on how to implement bittorrent protocol step by step. How it works? How do you make requests to peers? and talk to trackers.
I
I'd suggest you look at the spec and sources of some OSS clients. You'll have to do some work, but that's how programming works.
Implementing the protocol is not that hard by following the specs. However, there are lots of internal things like storage, scalable server, peer/piece pick algorithm, etc.
Earlier BitTorrent implementation or BitTornado used python, which is easy to read. I personally found them useful to understand the internals.
This is a implementation of the bittorrent protocol done in .NET. Its source code is available on github and it has documentation
Monotorrent
I'm currently implementing a BitTorrent client in Java using this specification.
This is good source http://www.kristenwidman.com/blog/how-to-write-a-bittorrent-client-part-1/ She explains the process step by step...
Qt is very easy to read so you can read the Qt Torrent Example (C++)