OVH Cloud OVH Cloud

est-il possible d'imposer les ports locaux a une appli ?

2 réponses
Avatar
sincosa
Bonjour,

J'aimerais satisfaire ma curiosité sur l'attribution aléatoire des ports
locaux gèrée par 1 os. Connaissez-vous des documents qui pourraient me
renseigner à ce sujet ?
Comment sont ils gérés par exemple sous windows, ou sous linux ? Y-a-t-il
des moyens pour imposer soi même les ports locaux d'une application ? A
savoir quand une application va tenter une connexion internet, lui
attribuer une gamme de ports spécifique ?

Aussi, savez-vous comment sont gérés les ports sur plusieurs postes qui se
partagent une seule connexion internet ? Le modem a-t-il lui aussi des
ports ? Ou bien les ports sont-ils plutot gerés par le serveur ?

Merci pour toute indication sur ce sujet. Sincosa.
--
Utilisant M2, le client e-mail révolutionnaire d'Opera :
http://www.opera.com/

2 réponses

Avatar
Alni
Bonjour,


Aussi, savez-vous comment sont gérés les ports sur plusieurs postes
qui se partagent une seule connexion internet ? Le modem a-t-il lui
aussi des ports ?


Un modem ne sais même pas ce que c'est que TCP/IP...

Ou bien les ports sont-ils plutot gerés par le
serveur ?


Quel serveur ?
Si tu veux parler de routeur NAT, oui. Pour simplifier, un routeur NAT
n'est rien d'autre qu'un "ordinateur" (CPU + RAM) avec un OS et TCP/IP
sur cet OS et 2 cartes réseau. Il y a un logiciel qui partage la
connexion. Il reçois des requetes sur son interface LAN sous la forme:
Machine_Src:Port_Src->Machine_Dest:Port_Dest

Il note l'IP_SRC et le port_SRC de la requête dans une table.
Il prend un port source au hasard parmis ses port disponibles
Il envoie le paquet à la machine destination sous la forme :
IP_WAN_Routeur:Port_Src_Routeur->Machine_Dest:Port_Dest
Et il attend une réponse sur ce port

Quand un paquet réponse arrive sur son IP_WAN_Routeur:Port_Src_Routeur
Il regarde dans sa table, et là il voit que ce paquet est pour :
Machine_Src:Port_Src. Il ne reste plus qu'a lui envoyer

Sous linux, par exemple (en tous cas sous kernel 2.1x), la plage de
port utilisée par l'OS pour l'IP Masquerading (la fonctionalité routeur
NAT de linux) on peut spécifier les ports qui seront utilisés par le
routeur pour acheminer les paquets provenant de machines internes lors
de la compilation du kernet. Ce sont par défaut 4096 ports dans les
61000 qui sont réservés à cet usage.

Avatar
Jacques Caron
Salut,

On Sat, 17 Jul 2004 04:53:11 +0200, sincosa wrote:

J'aimerais satisfaire ma curiosité sur l'attribution aléatoire des ports
locaux gèrée par 1 os. Connaissez-vous des documents qui pourraient me
renseigner à ce sujet ?


http://www.ietf.org/rfc/rfc793.txt

Comment sont ils gérés par exemple sous windows, ou sous linux ?


Sauf si l'application effectue un "bind" sur un port spécifique avant de
lancer la connexion, ils sont attribués de façon plus ou moins aléatoire,
dans une plage plus ou moins large (on évite les numéros de ports "petits"
pour éviter les conflits avec les protocoles connus, la limite de "petit"
variant d'un OS à l'autre et d'un contexte à un autre). Il est
vraisemblablement que dans la plupart des cas ils sont en fait attribués
séquentiellement, mais peu importe, il n'y a pas de raison d'en savoir
plus.

Y-a-t-il des moyens pour imposer soi même les ports locaux d'une
application ?


Certaines applications permettent de choisir le port utilisé pour les
connexions sortantes. C'est cependant relativement rare. Si on a les
sources, il suffit d'ajouter un bind() là où il faut.

A savoir quand une application va tenter une connexion internet, lui
attribuer une gamme de ports spécifique ?


Certains OS permettent de définir la plage à utiliser. Par exemple sous
FreeBSD:

sysctl -a | grep port
[...]

net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 1024
net.inet.ip.portrange.last: 5000
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
net.inet.ip.portrange.randomized: 1

Mais c'est valable pour l'ensemble des applications.

Aussi, savez-vous comment sont gérés les ports sur plusieurs postes qui
se partagent une seule connexion internet ? Le modem a-t-il lui aussi
des ports ? Ou bien les ports sont-ils plutot gerés par le serveur ?


Un modem (qui est transparent à IP), non. Un routeur (qui fait du NAT),
oui. Il remplace les ports choisis par les machines internes par des ports
"à lui". Dans la pratique, la plupart des routeurs conservent le port
initial sauf s'il y a un conflit avec une autre connexion d'une autre
machine.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/