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 / computer / Perguntas / 1843857
Accepted
chmike
chmike
Asked: 2024-05-27 18:32:04 +0800 CST2024-05-27 18:32:04 +0800 CST 2024-05-27 18:32:04 +0800 CST

Qual é o comprimento máximo de um nome de domínio?

  • 772

De acordo com as especificações de nome de domínio RFC 1035 :

2.3.4. Limites de tamanho

nomeia 255 octetos ou menos

De acordo com o SMTP RFC 5321 :

4.5.3.1.2 . Domínio

O comprimento total máximo de um nome ou número de domínio é 255 octetos.

Os RFCs são, portanto, consistentes e claros na minha opinião.

Contudo, algumas pessoas afirmam que é 254 devido à possível presença de um ponto no final, embora não haja menção de tal ponto nas RFCs 1 .

Outras pessoas afirmam que é 253 por motivos estranhos, como a presença de um byte de comprimento de string de prefixo e o '\0' final das strings C 2 , 3 , 4 .

Qual é o comprimento máximo de bytes do domínio?

dns
  • 1 1 respostas
  • 494 Views

1 respostas

  • Voted
  1. Best Answer
    grawity_u1686
    2024-05-27T19:54:47+08:002024-05-27T19:54:47+08:00

    Depende do contexto. Suas RFCs listam limites diferentes porque falam sobre coisas diferentes – o limite SMTP de 255 é especificamente para a parte de domínio dos local@domainendereços de e-mail e tem pouco ou nada a ver com o limite definido pelo protocolo DNS.

    (Isso ocorre em parte porque o SMTP é anterior ao DNS em anos – ele foi projetado quando HOSTS.TXT ainda estava em uso na ARPANET (veja RFC 810/811); e costumava existir em um mundo onde o email era transportado através de 10 redes diferentes de modo que um domínio de endereço de e-mail SMTP pode não ter sido um domínio da Internet.)

    Pré-requisitos

    Para começar com um detalhe importante:

    No entanto, algumas pessoas afirmam que é 254 devido à possível presença de um ponto no final, embora não haja menção de tal ponto nas RFCs

    Há. Seção 3.1 da RFC 1034:

    Quando um usuário precisa digitar um nome de domínio, o comprimento de cada rótulo é
    omitidos e os rótulos são separados por pontos (".").   Desde um completo
    nome de domínio termina com o rótulo raiz, isso leva a um formulário impresso que
    termina em um ponto.   Usamos esta propriedade para distinguir entre:
    
       - uma cadeia de caracteres que representa um nome de domínio completo
         (muitas vezes chamado de "absoluto"). Por exemplo, "poneria.ISI.EDU."
    
       - uma sequência de caracteres que representa os rótulos iniciais de um
         nome de domínio que está incompleto e deve ser preenchido até
         software local usando conhecimento do domínio local (muitas vezes
         chamado de "relativo"). Por exemplo, "poneria" usado no
         Domínio ISI.EDU.
    
    Os nomes relativos são tomados em relação a uma origem bem conhecida ou a uma origem
    lista de domínios usados ​​como lista de pesquisa. Nomes relativos aparecem principalmente em
    interface do usuário, onde sua interpretação varia de
    implementação para implementação, e em arquivos mestre, onde são
    relativo a um único nome de domínio de origem. A interpretação mais comum
    usa a raiz "." como origem única ou como um dos membros
    da lista de pesquisa, portanto, um nome relativo com vários rótulos geralmente é aquele em que
    o ponto final foi omitido para economizar digitação.
    

    Portanto, de acordo com a especificação, www.google.comnão é o nome de domínio completo – www.google.com.é – e o ponto final é meramente “omitido para salvar a digitação”, mas é muito válido e tem uma finalidade específica. Você adiciona um ponto final para informar ao sistema que um domínio local não deve ser anexado.

    • Como exemplo prático, a ICANN costumava permitir que domínios de primeiro nível tivessem registros de “host”. Por exemplo, o tk.TLD tinha um site em http://tk./– que tinha que ser escrito com o ponto final, caso contrário seu sistema iria procurar tk.dlink.lanou algo assim.

    • A RFC usa um exemplo de rótulo único, e muitos assumem que todos os sistemas tratam qualquer nome de domínio multicomponente como já absoluto, mas nem sempre é esse o caso – o Windows, em particular, não se limita assim.

      Em vez disso, se um sufixo de pesquisa DNS estiver configurado no Windows, ele será aplicado a qualquer nome não absoluto, mesmo que tenha vários componentes. Por exemplo, se corp.example.comfor o domínio do seu sistema, www.google.comserá tentado primeiro como www.google.com.corp.example.com.e só depois como www.google.com..

      Nessa situação, você adicionaria explicitamente o ponto final à sua entrada para evitar que o sistema operacional o sufixo automaticamente com o domínio local.

    A outra RFC que você estava lendo – RFC 1035 – não fala sobre o “ponto final” porque se preocupa principalmente com o protocolo de rede, enquanto os detalhes voltados para o usuário estão na RFC 1034.

    Mas não é da representação do texto que vem o limite real de comprimento.

    Os limites reais

    O limite real é "255 octetos ou menos" quando aplicado ao nome de domínio, pois é representado no formato de rede DNS (pacote), que não usa separadores de 'ponto' - na verdade, usa um byte de prefixo de comprimento - e o equivalente do "ponto final" não é opcional.

    Neste formato, cada string é prefixada com um byte de comprimento e a lista inteira termina com uma string de 0 bytes. Para citar RFC 1035:

    Os nomes de domínio nas mensagens são expressos em termos de uma sequência de rótulos.
    Cada rótulo é representado como um campo de comprimento de um octeto seguido por aquele
    número de octetos.   Como todo nome de domínio termina com o rótulo nulo de
    a raiz, um nome de domínio termina com um byte de comprimento zero.   O
    dois bits de ordem superior de cada octeto de comprimento devem ser zero, e o
    os seis bits restantes do campo de comprimento limitam o rótulo a 63 octetos ou
    menos.
    

    Por exemplo, www.google.comse tornaria:

    14 characters:    www.google.com
    
    Interpreted as:   [3] "www"
                      [6] "google"
                      [3] "com"
                      [0] ""          ("null label of the root")
    
    16 bytes:         <0x03> w w w <0x06> g o o g l e <0x03> c o m <0x00>
    

    (O byte 0x00 final aqui não tem nada a ver com strings C; de certa forma, é completamente o oposto – o formato é muito mais parecido com uma série de strings Pascal – mas na verdade não está relacionado a nenhuma linguagem de programação. É especificamente a forma como os nomes de domínio são transferidos no protocolo de rede.)

    Portanto, de acordo com a mesma RFC, o limite para nomes de domínio neste formato específico é de 255 bytes:

    Para simplificar as implementações, o comprimento total de um nome de domínio (ou seja,
    octetos de rótulo e octetos de comprimento de rótulo ) é restrito a 255 octetos ou
    menos.
    

    Acontece que a representação binária (rede) é quase sempre¹ dois bytes mais longa que a representação de texto comumente usada (ou seja, sem o ponto final). Portanto, se um nome de domínio estiver limitado a 255 octetos na transmissão, ele estará limitado a 253 caracteres ASCII em formato de texto (mais o ponto final opcional como o 254º caractere).

    Em outras palavras, todos os três números estão corretos por si só – mas são frequentemente “reivindicados” sem qualquer contexto para interpretá-los; 255 está correto para o formato do pacote, 254 está correto para o formato ASCII com ponto final (nome absoluto) e 253 está correto para o formato ASCII "convencional" sem ponto final.

    ¹ (A menos que algo como \.esteja presente, que é um octeto em formato binário, mas representado como dois no texto - mas isso é extremamente raro na prática; a única vez que você verá isso é ao olhar para o campo "pessoa responsável" da SOA. Se você está escrevendo uma biblioteca DNS, você deve considerar isso, mas caso contrário você pode ignorá-la.)


    Como o seu módulo aceita nomes de domínio no formato ASCII, ele deverá:

    1. Permitir no máximo um ponto final – melhor sempre adicioná-lo ou retirá-lo antes de continuar a validação (para consistência).

    2. Permitir no máximo 254 bytes se o ponto final estiver presente ou no máximo 253 bytes se for removido.

    3. Mescle a maioria das verificações de “validade de domínio de nível superior” nas verificações regulares de “rótulo”, pois as regras básicas são exatamente as mesmas para cada rótulo, não importa se é o primeiro, o último ou o intermediário.

      (Embora existam regras adicionais para TLDs, elas não são definidas por protocolo – são definidas por política da ICANN como mantenedora da zona raiz que define TLDs. Portanto, embora seja razoável ter, por exemplo, um "começa com um dígito" regra para TLDs, ela deve ser mantida separada.)

    4. Tenha um modo que relaxe a regra de “caracteres permitidos”. Nomes de domínio em geral podem conter qualquer caractere - apenas nomes de domínio usados ​​como nomes de host têm restrições mais fortes, e aqueles vêm de serem "usados ​​como nomes de host" (ou seja, para pesquisa A/AAAA), e não de serem "nomes de domínio".

      No nível DNS, nomes de domínio sem "nome de host" podem conter quase tudo - por exemplo, eles geralmente contêm caracteres como _(que são praticamente obrigatórios para registros SRV; _minecraft._tcp.example.comé um exemplo típico) - portanto, no mínimo, a validação do nome de domínio precisa distinguir entre "nome do host (sem sublinhado)" e "não-nome do host (sublinhado OK)" como contextos diferentes.

    • 12

relate perguntas

  • Como configuro DNS, AWS S3, AWS Cloudfront e AWS Certificate Manager para proteger vários sites

  • 5355 UDP svchost.exe DNScache

  • Bloqueie endereços IP internos com dnsmasq.conf

  • Precisa verificar um subdomínio firebaseapp.com

  • Migrando windows server 2008

Sidebar

Stats

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

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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