AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1156869
Accepted
Rama
Rama
Asked: 2024-03-25 22:54:34 +0800 CST2024-03-25 22:54:34 +0800 CST 2024-03-25 22:54:34 +0800 CST

Tamanhos de janela TCP dinâmicos

  • 772

Durante o handshake de três vias, o remetente (10.16.0.128) e o destinatário (10.16.0.5) anunciaram o tamanho da janela de 42.340 e 65.535, respectivamente.

Do terceiro pacote (syn+ack+ack) em diante, o remetente anunciou novamente o tamanho da viúva como 166, enquanto o receptor anunciou 512.

Você pode me informar por que o tamanho da janela foi reduzido sem enviar nenhum segmento? Ele continua mudando a cada confirmação? Por que eles não comprometeram o tamanho da janela durante as negociações.

    10.16.0.128.59570 > 10.16.0.5.22: Flags [S], cksum 0x7da0 (incorrect -> 0xf0a5), seq 2355031382, win 42340, options [mss 1460,sackOK,TS val 4284732064 ecr 0,nop,wscale 8], length 0

09:50:58.661172 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    10.16.0.5.22 > 10.16.0.128.59570: Flags [S.], cksum 0x2d67 (correct), seq 1148159519, ack 2355031383, win 65535, options [mss 1460,sackOK,TS val 216174882 ecr 4284732064,nop,wscale 7], length 0

09:50:58.661229 IP (tos 0x0, ttl 64, id 49621, offset 0, flags [DF], proto TCP (6), length 52)
    10.16.0.128.59570 > 10.16.0.5.22: Flags [.], cksum 0x7d98 (incorrect -> 0x5b8c), seq 1, ack 1, win 166, options [nop,nop,TS val 4284732065 ecr 216174882], length 0

09:50:58.661455 IP (tos 0x0, ttl 64, id 49622, offset 0, flags [DF], proto TCP (6), length 98)
    10.16.0.128.59570 > 10.16.0.5.22: Flags [P.], cksum 0x7dc6 (incorrect -> 0x5b5f), seq 1:47, ack 1, win 166, options [nop,nop,TS val 4284732065 ecr 216174882], length 46

09:50:58.661543 IP (tos 0x0, ttl 64, id 8746, offset 0, flags [DF], proto TCP (6), length 52)
    10.16.0.5.22 > 10.16.0.128.59570: Flags [.], cksum 0x5a03 (correct), seq 1, ack 47, win 512, options [nop,nop,TS val 216174883 ecr 4284732065], length 0

09:50:58.661543 IP (tos 0x0, ttl 64, id 8746, offset 0, flags [DF], proto TCP (6), length 52)
    10.16.0.5.22 > 10.16.0.128.59570: Flags [.], cksum 0x5a03 (correct), seq 1, ack 47, win 512, options [nop,nop,TS val 216174883 ecr 4284732065], length 0```
tcp-window-scaling
  • 1 1 respostas
  • 47 Views

1 respostas

  • Voted
  1. Best Answer
    A.B
    2024-03-26T00:05:20+08:002024-03-26T00:05:20+08:00

    Durante SYN/SYN+ACK, um tamanho de janela é fornecido. Além disso, o fator de escala de janela ( também conhecido como escala de janela, que é o wscaleda captura do OP) é ​​transmitido para toda a instância TCP, como uma opção TCP válida apenas para pacotes SYN (SYN ou SYN/ACK) conforme escrito em RFC 7323 :

    O expoente do fator de escala é transportado em uma opção TCP, Window Scale. Esta opção é enviada apenas em um segmento <SYN> (um segmento com o bit SYN ativado), portanto a escala da janela é fixa em cada direção quando uma conexão é aberta.

    A escala da janela é a única parte que será fixa (um valor em cada direção) posteriormente, caso seja realmente negociada, pois é uma opção . Como inicialmente o sistema não pode saber se tal negociação terá sucesso, ou seja: se o lado peer suporta o dimensionamento de janela e também enviará esta opção em seu SYN/ACK, ele enviará um tamanho de janela provisório "normal". Após a negociação, o tamanho inicial da janela normalmente será dividido pelo fator de escala para permanecer praticamente o mesmo.

    Portanto, o remetente informa inicialmente que pode suportar até 42.340 bytes e, se a negociação for bem-sucedida, posteriormente esse tamanho de janela será fornecido como pedaços de 2 ^ 8 = 256. Observe como roundup (42340 / 2 ^ 8) = 166: o próximo valor visível .

    O respondente informa que pode suportar até 65535 (o máximo sem dimensionamento de janela) e, se negociado, usará blocos posteriores de 2 ^ 7 = 128 bytes. Observe novamente como roundup(65535/2^7) = 512, novamente o próximo valor visível.

    O tamanho da janela não foi realmente alterado. Ainda pode mudar posteriormente devido a outros fatores, como a disposição de um aplicativo em aceitar mais dados, mas não foi isso que aconteceu aqui. Aqui o tamanho quase não mudou, apenas foi enviado "redimensionado" pelo uso da escala da janela.


    Para esclarecer este caso e abordar o comentário adicional:

    Para cada segmento TCP subsequente, o valor da janela no segmento deve ser multiplicado por 2^wscale para obter o valor real da janela. Nesta conexão TCP, o peer remetente usa wscale=8 e o peer respondedor usa wscale=7 (esses dois valores não mudarão durante a vida desta conexão).

    • tamanho real da janela do remetente: 166*2^8=42496
    • tamanho real da janela do respondente: 512*2^7=65536

    Se o respondente usasse o win 599, isso significaria aceitar um tamanho de janela real de 599*2^7=76672.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve