Is there a way to change flash player ports? I've already searched but without success, all the tutorials usually refer to flash player server.
Flash player only makes outbound connections (that I know of...). When you are connecting to a remote server, the remote server is the only party in direct control of which ports it will open up and allow you to connect to. You're free to modify the packets that Flash Player sends and change the port in the TCP header, but in the best case, your modified port will go to a service that doesn't recognize that protocol, and close the connection. In the worst case, you'll hit their firewall and your packet will be silently ignored.
Say that we are not currently having a conversation, and in a very crowded room where everyone has a unique name, you want to address me specifically. I only know my own name, and will only respond to that one name. If you yell out, "Jim!", I'm not going to respond, because that's not my name.
Similarly in this case, the web server or Flash Media Server is listening on specific ports for specific traffic. Unless you get into the server itself and modify the ports that it's listening on, which you'd have to do for each website you visit, you will be forced to either (1) connect to the service using the ports that the administrator wants you to connect on, or (2) don't connect at all.
This answer is independent of which particular program you are asking about. That is, in order to answer this, all I had to know is that Flash Player does not have any inbound ports; all of its traffic is outbound.
What do I mean by inbound and outbound?
Every packet in the Internet Protocol (IP) suite is directional. This means each packet has a source and a destination. If your computer is the source (the computer the packet is originating from), then from the perspective of your computer, the packet is outbound. If your computer is the destination (the computer the packet is traveling to), then from the perspective of your computer, the packet is inbound.
The IP suite has two main transport layers: TCP, and UDP.
TCP has the concept of sockets. A socket is a bi-directional communication between two computers, but it is layered on top of the core IP technology, which is still directional. The convenient thing that TCP does is that it automatically opens a "back-channel" port (determined dynamically by the OS) on the destination computer of the original packet, and allows it through the firewall.
So a TCP connection looks something like this:
- The "source" connects to the "destination" on the destination's listening port.
- Since the protocol is TCP, convention and firewall rules automatically allow the "destination" to make a connection back to the "source" in the reverse direction, and send packets repeatedly to that port as long as the TCP socket is connected.
- At any time, both the source and destination computers can send packets at each other. By convention, when this TCP socket is established, the computer which originally made the first connection is called the client; the computer which has an open port is called the server.
There are semi-equivalent concepts that an application can implement on top of UDP, which is an alternative to TCP with less overhead but less features. By default UDP does not have bi-directional connections like this, but they can be enabled by applications.
The point I'm trying to make is that Flash Player is a TCP client using the protocol RTMP. The server is in sole possession of the decision of which port numbers to open to new inbound TCP sockets.