Un étrange phénomène:
En secouant trois fois les mains, les deux premiers syn | syn + taille de la fenêtre ack est évidemment grande, mais la troisième poignée de main lorsque la taille de la fenêtre est soudainement devenu très petit,
Et le processus ultérieur de transmission de données, la taille de la fenêtre est encore faible, et syn | syn + ack ne correspond pas, pour notre étude tcp des apprenants,
Sera confus, en fait, nous nous concentrons uniquement sur les points importants tcp, mais ne comprenait pas les petits détails de tcp.
Deux, option tcp:
les paquets TCP de 20 octets en plus de la norme, en fait, peut atteindre un maximum de 60 octets, le HL (4 bits jusqu'à 15 * 32/8 = 60 octets), les octets supplémentaires sont tcp option,
Ce tcp champs facultatifs dans le format suivant:
| Type (1 octet) | longueur (1 octet) | valeurs (longueur - 2 octets) |
Ce qui précède étrange phénomène est dû à la tcp syn | en utilisant le facteur d'échelle de fenêtre syn + ack peut se développer dans cette valeur a été élargie,
A ce stade (syn | syn + ack) du facteur de fenêtre de taille de la fenêtre affectant l'échelle, à savoir la taille de la fenêtre est combien, combien il est,
Cependant, la taille de fenêtre de transmission de données ultérieures comprend une troisième prise de contact sont laissés pour déplacer le facteur d'échelle de fenêtre,
Cette taille de la fenêtre * (2 ** scale_factor) ou la taille de la fenêtre << scale_factor est la taille de la fenêtre réelle
En troisième lieu, des exemples:
Baidu accès à titre d'exemple:
sudo tcpdump -i eth0 hôte www.baidu.com -S -n -xx
12:15:02.145424 IP 172.18.192.125.36028 > 115.239.210.27.80: Flags [S], seq 4200731336, win 29200, options [mss 1460,sackOK,TS val 105544669 ecr 0,nop,wscale 7], length 0
0x0000: eeff ffff ffff 0016 3e08 b134 0800 4500
0x0010: 003c 6915 4000 4006 1f0c ac12 c07d 73ef
0x0020: d21b 8cbc 0050 fa62 12c8 0000 0000 a002
0x0030: 7210 b2c9 0000 0204 05b4 0402 080a 064a
0x0040: 7bdd 0000 0000 0103 0307
syn:
paquets Ethernet: Eeff ffff ffff 0016 3e08 B134 0800
ip paquet: 4500 003C 6915 4000 4006 1f0c AC12 C07D 73ef D21B
les paquets TCP: 8cbc Fa62 12c8 0050 0000 0000 A002 7210 0000 0204 b2c9 05b4 080A 064A 7bdd 0402 0000 0000 01 03 0307
A002 est dans une HL (10 longueur de 32 bits de la tête), de sorte que la tête 40 octets tcp, Standard 20 octets, l'option 20 octets tcp supplémentaire,
Dont 030 307 pour le facteur d'échelle de fenêtre, 07 pour la valeur
0x7210 = 29200, pour la taille de la fenêtre, ce cas ne modifie pas le facteur d'échelle de la fenêtre du sujet
12:15:02.172269 IP 115.239.210.27.80 > 172.18.192.125.36028: Flags [S.], seq 439811744, ack 4200731337, win 8192, options [mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
0x0000: 0016 3e08 b134 eeff ffff ffff 0800 4514
0x0010: 003c 6915 4000 3606 28f8 73ef d21b ac12
0x0020: c07d 0050 8cbc 1a36 fea0 fa62 12c9 a012
0x0030: 2000 c554 0000 0204 05ac 0402 0101 0101
0x0040: 0101 0101 0101 0103 0305
syn + ack:
paquets Ethernet: 0016 3e08 B134 Eeff ffff ffff 0800
ip paquet: 4514 003C 6915 4000 3606 28f8 73ef D21B AC12 C07D
les paquets TCP: 0050 8cbc 1a36 fea0 Fa62 12c9 A012 2000 0000 0204 05AC C554 0402 0101 0101 0101 0101 0101 01 03 0305
A012 est dans une HL (longueur de 32 bits de la partie de tête 10), de sorte que la tête 40 octets tcp, Standard 20 octets, l'option 20 octets tcp supplémentaire,
Dont 030 305 pour le facteur d'échelle de fenêtre, 05 pour la valeur
0x2000 = 8192, comme la taille de la fenêtre, ce cas n'a pas une incidence sur le facteur d'échelle de la fenêtre du sujet
12:15:02.172312 IP 172.18.192.125.36028 > 115.239.210.27.80: Flags [.], ack 439811745, win 229, length 0
0x0000: eeff ffff ffff 0016 3e08 b134 0800 4500
0x0010: 0028 6916 4000 4006 1f1f ac12 c07d 73ef
0x0020: d21b 8cbc 0050 fa62 12c9 1a36 fea1 5010
0x0030: 00e5 b2b5 0000
ack:
paquets Ethernet: Eeff ffff ffff 0016 3e08 B134 0800
ip paquet: 4500 0028 6916 4000 4006 1f1f AC12 C07D de D21B
les paquets tcp: 8cbc 0050 Fa62 12c9 1a36 AEED 1 5010 00e5 b2b5 0000
Le 50105 est HL, un des paquets standard de 20 octets, aucune option de tcp,
0x00e5 = 229, la taille actuelle de la fenêtre de transmission est 229, mais comme il syn précédentes facteur d'échelle de fenêtre (7),
Ainsi, la fenêtre réelle 229 = 29312 << 7,
Une autre façon de vérifier, parce que la fenêtre syn 29200, pendant la transmission, vous devez droit 7, 29200 >> 7 = 228 (sur un quart de travail), 229
Donc, ce qui explique pourquoi Pourquoi syn de la taille de la fenêtre est 29200, et la taille de la fenêtre suivante simplement renvoyer seulement quelques centaines dont seulement 229, (empathie syn + ack de l'affaire)
En fait, nous ne sommes pas au courant de tcp option, qui a un facteur d'échelle de fenêtre tcp cette chose