As a software developer, mainly
working on web applications, do i need
to have extensive knowledge of TCP/IP
and how routers manage requests or
it's just black box knowledge to me?
IMO, the fact that you are a software developer (I assume with a CS background) should know about these things. In particular if you do web development. As I mentioned in one of my comments, I've made a sh*load in consulting fees just fixing really stupid errors done by people who do not know about the basics of network/Internet architecture.
ZOMG, the changes I made to my website aren't showing, plz teh help!
*ZOMG, people's profiles are getting crossed because sessions are being cached somewhere, plz teh help!*
ZOMG, we have secure content for authenticated users, but people can get to them with a bookmark and the bloody authentication screen nevers comes up, plz teh help!"
... and so on and so on... sadly...
There is a ton of stuff between your web app and the user's browser: your app, your app's NIC, a router and possibly a firewall, then your http server internal NIC, then your http server, then your http server outbound NIC, then another router and most certainly a firewall. Then a caching device, and possibly an SSL device. Then out to the internet with more routers and caching servers, then finally to your users' browser (and its internal cache.)
A zillion things can go wrong, and if you have not an iota of knowledge on networking, network protocols, operating systems/sysadmin, and internet architecture, you'll be at lost and at the mercy of your IT OPs department (since most devs neither have access to infrastructure nor know where to look for when troubleshooting things). At worst, it will make you a really crappy web developer.
The programming aspect of web development is just that, one aspect. Successful execution of it sits squarely on top of other skills (in particular networking and systems administration) that cannot be taken for granted nor blindly delegated to IT operations. It doesn't mean that you must be responsible for network/OS troubleshooting, but
a. You must know what can go wrong at the network/OS level so that you can cooperate and guide IT OPS who can never have intimate knowledge of your application.
b. Such knowledge allows you to engineer your system so that it avoids, or at least ameliorates and gracefully cops with such errors.
Programming is just one aspect of engineering and development. It cannot be your primary skill, and do really be successful in the long run in enterprise development in general, and in web development in particular, these are things you need to know. And honestly, these are things that should have been learned (very firmly) either in school or through self-learning before graduation (or immediately upon entering the job market.)