Je joue avec Wireshark pour déboguer des projets d'automatisation de l'IdO sur lesquels je travaille. Je pense que j'aurais avantage à mieux comprendre comment fonctionnent HTTP et TCP/IP. La plupart des explications que je trouve décrivent le protocole HTTP comme "surfant sur" TCP/IP, mais je demande plus précisément ce qui est réellement envoyé.Comment TCP/IP et HTTP fonctionnent-ils ensemble?
Voici un exemple d'interaction client/serveur je prins
Client: [SYN]
Server: [SYN, ACK]
Client: [ACK]
Si je comprends à ce jour, ils ont maintenant établi une connexion TCP. La capture suivante, cependant, me montre
Client: POST /whatever
Server: 200 OK
Okay maintenant je suis perdu. L'examen de cette capture me montre que j'ai une couche Ethernet, IP, TCP et HTTP dans une seule trame. Est-il vraiment aussi simple que le client d'ajouter un tas de texte après la fin du paquet TCP et d'injecter ces octets supplémentaires sur le routeur? Qui, probablement, analyse ensuite le TCP/IP et le transmet en conséquence? C'est la source de ma confusion. Par «chevauche sur», est-ce que cela signifie (dans un sens physique) que HTTP est juste une série d'octets qui sont envoyés dans la même trame, après le paquet TCP? Est-ce que le HTTP dans ce cas est considéré comme la charge utile du TCP/IP?
Et bien sûr, pour finir
Server: [FIN, ACK]
Client: [ACK]
Client: [FIN, ACK]
Server: [ACK]
//In this case the server terminates the connection.
Edit: Un commentateur ci-dessous a posé une question qui me fait me sentir comme si je ne l'ai pas été très clair sur ce que je demande. Imaginez que je puisse me tenir entre mon client et le serveur (ou peut-être que ce serait plus précis de rester entre mon client et le routeur et encore entre le routeur et le serveur). En ignorant les considérations quand on doit physiquement envoyer des données brutes sur un support physique (sommes de contrôle, codes de correction d'erreurs, etc.), à quoi ressemblerait le trafic réel, par rapport au temps? Est-ce que je verrais des octets pour une couche ethernet suivie par des octets pour une couche ip, tcp, http, et ainsi de suite?
HTTP est juste des données à TCP, mais je ne sais pas pourquoi vous continuez à dire '* après * le paquet TCP'. Les données envoyées via TCP sont envoyées * dans * les paquets TCP. – EJP
Je veux dire qu'à un certain moment, mon client (un capteur) envoie juste un flux d'octets sur l'air au routeur. Le routeur interprète ces byes et fait quelque chose avec eux (les transmet au serveur). Ce flux d'octets peut être interprété de manière utile. Si vous deviez examiner ce flux d'octets un octet à la fois lorsqu'il est envoyé hors de l'antenne du capteur, cela ressemblerait-il à [Ethernet] [IP] [TCP] [HTTP]?(Sauf, bien sûr, ce que je suppose être beaucoup de codes de correction d'erreur, sommes de contrôle, etc.) – brenzo
Si vous envoyez à partir d'une antenne, ce serait Wi-Fi, et les cadres seraient des cadres Wi-Fi , pas des cadres ethernet. Wi-Fi et ethernet sont deux protocoles de liaison de données complètement différents. –