Option tcp

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

Publié 140 articles originaux · louange gagné 28 · vues 180 000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_16097611/article/details/79062987
conseillé
Classement