Bonjour,
je rencontre un problème très particulier et j'ai besoin d'une pointure sur le protocole HTTP pour me répondre car je me casse les dents sur un problème depuis quelques temps.
Nous avons 2 serveurs :
- un client sur le LAN
- un serveur IIS 8.5 (WS 2012 R2) ou 10 (WS 2016) situé en DMZ
- un firewall checkpoint entre les 2
Je fais des tests avec l'utilitaire curl afin de débugguer une API :
curl -H "Transfer-Encoding: chunked" -v -i -X POST -H "Content-Type: application/json" -H "IXBUS_API: 4e1baac9-35dd-4fa8-9496-b428b338f3fb" -d @./data.json http://X.X.X.X./chemin -o reponse_test.txt
Bilan de mes tests :
- Lorsque je fais mon premier test je reçois bien un 200 OK de la part du serveur. Les requêtes suivante échouent (erreur 500) toutes jusqu'au redémarrage du IIS 8.5
- Le même test avec un IIS 10 est légèrement différent. Sur 50 requêtes, j'ai environ 5% d'échecs
- Si mon client est situé sur le même sous-réseau que le serveur IIS, le taux de réussite est de 100%. La différence est donc l'absence de pare-feu. Cependant, le comportement du client dans ce cas diffère. En effet, la prise de trace avec Wireshark sur le serveur IIS le met en évidence :
+ Si le client est dans le même sous-réseau : le serveur ne fait pas de ré-assemblage TCP des paquets, c'est comme si le chunked n'en était pas vraiment un (pour ça que ça fonctionne à tous les coups selon moi)
+ Si le client est dans un réseau différent : le ré-assemblage est systématique
Si vous avez eu le courage de me lire jusqu'ici, je vous en remercie.
On pourrait penser que le firewall est en cause mais pour moi que nenni car quand on ne passe pas le firewall, la requête du client est différente (pas de chunked, pourquoi ?), donc on ne peut pas l'incriminer.
Requête depuis le LAN :
Requête depuis la même DMZ :
Pourquoi dans un cas le serveur ISS doit faire du ré-assemblage TCP et pas dans l'autre alors que la requête source est identique svp ?
Merci
Message édité par tck-lt le 11-03-2021 à 09:10:54
---------------
War Roak Gwengamp