Uhhh....
So, ports exist on every network level. It's a built-in part of the networking protocol.
Ports exist on the router, on the system, on the connections between you and your ISP, etc etc.
The reason that is, is because you have to carry that information with you the whole way. For your server to know "hey, this is supposed to be using port 22", your IP packet has to say "Hey, I'm using port 22."
The other thing is that the ISP has networking too. They have (very advanced) routers. They use ports too. They can't just change all your network traffic to some port without changing it back to the intended port, or you wouldn't be able to access much. They can overwrite the port for their purposes, but they have to switch it back on it's final destination leaving the ISP or the connection can't work.
Your ISP sees everything you send out, unless it's encrypted, but they still need a destination and port even if it is encrypted. If they see "Oh, hey, he's using port 22. We don't want him to use this connection for business things without paying for a business connection. Let's block that port."
They can basically stop any traffic using that port before it reaches it's destination. The port is written in the IP Packet along with the intended recipient (i.e. your IP address). Otherwise, how would your server know what port the packet was meant to come in on?
Putting that information there is required because you can't route without it. So your ISP can easily block stuff like that.
I mean, some port forwarding pages on routers support also changing what port something is going to. So for example, you're sending the SSH connection over port 2222, but your port forwarding not only sends it to your Server, but changes that to port 22. This way your server uses the default port, but you don't, so your ISP won't block it.