Comment puis-je vérifier si un port ouvert est TCP ou HTTP?
Précisément, j'ai un serveur Windows (Windows 7), mais la netstat -an
commande affiche uniquement si les ports TCP ou UDP. Je pensais que c'étaient là les seuls types de ports, mais node.js semble distinguer entre les ports HTTP et TCP ports (exemple au bas de la page liée). Je suis actuellement à l'aide node.js dans un programme qui sera exécuté sur mon serveur, et il ouvre les ports HTTP par défaut. Elles apparaissent comme les ports TCP sous netstat -an
.
Est-il une ligne de commande truc pour distinguer si un port ouvert sur ce serveur est HTTP ou TCP? - Je faire des demandes pour ma Technologie de l'Information bureau sur les ports que j'ai besoin sur ce serveur, et ils ont besoin de savoir si ces ports TCP, UDP, etc.
Si nécessaire utiliser un client distant, j'ai un Mac qui peut faire le travail.
- Vous êtes malentendu sockets. HTTP est juste un protocole texte que vous pouvez envoyer sur un port TCP.
- C'est ce que je pensais. Donc c'est pourquoi je suis vraiment confus: je peux faire les connexions avec le serveur lorsque je lance un Java hello world serveur TCP. Mais quand node.js en fait une "HTTP" du serveur, je ne peux pas faire une connexion réussie, même si la commande netstat affiche à la fois à TCP.
- Pourquoi pas? Ce qui se passe? Quelle est l'erreur que vous obtenez?
- J'ai utilisé
telnet
pour se connecter à la machine Windows à distance. Cependant, lorsque je lance le programme côté serveur sur ma machine locale sur le port 9005,telnet localhost 9005
fonctionne très bien. Lorsque j'essaietelnet [Windows hostname] [my valid port]
, aucune connexion n'est faite; je reçois un délai d'attente. - Vérifiez votre pare-feu.
- Je ne pense pas que vous pouvez telnet dans un web/serveur d'application. Vous pouvez envoyer une demande au serveur web et de recevoir une réponse, mais vous ne pouvez pas telnet ou ssh (si j'ai bien compris votre commentaire précédent).
- Je ne pense pas que vous pouvez telnet dans un web/serveur d'application. Vous pouvez envoyer une demande au serveur web et de recevoir une réponse, mais vous ne pouvez pas telnet ou ssh (si j'ai bien compris votre commentaire précédent).
- telnet à l'adresse HTTP du serveur sera certainement de travail...
Vous devez vous connecter pour publier un commentaire.
Tout le trafic HTTP est transmis via les Ports TCP. Je pense que ce qui peut provoquer une certaine confusion, c'est que le premier node.js exemple utilise la
http
module et le deuxième exemple utilise lanet
module.Le module http est construit sur le net module (qui gère la couche TCP HTTP sous-jacents).
Se référer à: nodejs - net ou d'un module http
EDIT:
Un seul processus peut se lier à un port. Si vous rencontrez des difficultés de connexion, fermez toutes les autres applications qui utilisent le même port, tels que Java Hello World serveur. Exécuter
netstat -an
pour vous assurer de ne pas voir le port listé que vous êtes en train d'écouter en vous node.js serveur TCP (port 1337) dans l'exemple. Si rien n'est à l'écoute sur le port, le feu de votre node.js TCP serveur et exécuternetstat -an
à nouveau pour s'assurer qu'il est réellement à l'écoute sur le port prévu.Une autre suggestion - désactivez temporairement le pare-feu logiciel, puis utilisez le client telnet sur le serveur local pour tenter de se connecter au port à l'aide de la commande
telnet 127.0.0.1 1337
(remplacer 1337 avec votre port) à partir de l'invite de commande. Cela permettra d'éliminer tous les périphériques réseau, tels que les pare-feu entre le client (telnet dans ce cas) et le serveur. Si l'écran devient vide, que vous avez connecté. Si vous obtenez le messageCould not open connection to the host, on port
alors il n'est toujours pas à l'écoute sur le Port TCP. Si vous pouvez vous connecter localement à partir de Telnet, mais vous ne pouvez pas vous connecter à distance puis il y a quelque chose qui bloque votre connexion.C:\server
). Bizarre...HTTP est un protocole d'application. Sa définition suppose une sous-jacents et fiable protocole de couche transport. Le Protocole de Contrôle de transmission est couramment utilisé. Cependant HTTP peuvent utiliser fiable protocoles de trop (exemple SSDP).
Maintenant pour répondre à votre question:
Si vous voulez savoir si un Port TCP est en cours d'exécution HTTP ou pas, vous pouvez vérifier le standard sur le port HTTP (grep :80). Le port HTTP standard est de 80. La norme HTTPS port 443.