Yeah ya got it, but not the answer, you cant open them 50000 ports also as then the router well liekly just uses some others
Ill try and explain
Ok one thing you need to know is when your mIRC sends a file to someone, first it sends a secret message to that user with "DCC SEND filename ip port filesize" the reciever then opens the connection to your ip using port and waits for you to send filename of filesize.
Knowing that above now...
Your mirc send the secret message, the router sees the message and changes the port value from 4001 to 50002 in the message
When the router gets an incoming comunication on port 50002 (from the reciever) it then connects this to your mirc on port 4001
And as far as you know your using port 4001 as far as the reciever knows your using port 50002, and everythings fine
It can all breaks down if...
(1) something goes wrong in the replacing of 4001 with 50002 which happens alot, the reciver gets "DCC SEND filename ip 45$*]-" and his end goes WTF is that!??!?!
(2) on some routers it doesnt deal with resume requests since that takes a secret message from the reciever in the form "DCC RESUME filename port startpos" and your mirc gets "DCC RESUME filename 50002 startpos" and goes WTF? im not sending to anyone on port 50002?!?!?!?!
You may well ask "ok what prat thought this stupid thing up?" I know i certianly did for a long time.
It is a usefull tool tho.
Assume you have some app that listens on port 3500 and returns some info about the machine its on when requested on that port.
But you have it on 4 machines behind the router on IPs 192.168.0.101-104
Now how are you going to request it from the specific machines, since you cant have the router forward port 3500 to all 4 machines
You set up a translation table something like so...
Internet In/out ound port 50001 <- translates to -> 3500 on 192.168.0.101
Internet In/out ound port 50002 <- translates to -> 3500 on 192.168.0.102
Internet In/out ound port 50003 <- translates to -> 3500 on 192.168.0.103
Internet In/out ound port 50004 <- translates to -> 3500 on 192.168.0.104
The on the machine out there you request the info using port 50001-50004 and it reaches the correct machine.
Now those are manually created ones of course, there is stuff in some routers to do this on its own, and also adjust the apps that uses ranges like mirc and send what port to use.
How exactly a router knows this stuff is a mystery to me, I tend to toss the ones that do this on there own, and use a brand I know dont do it.
Personally? I think routers are the work of the devil, Ciscos specificly! ( tho they are also the best hohum )