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 / 1737770
Accepted
StoneThrow
StoneThrow
Asked: 2022-08-19 12:24:12 +0800 CST2022-08-19 12:24:12 +0800 CST 2022-08-19 12:24:12 +0800 CST

Qual é a diferença entre os endereços 127.0.0.1 e não localhost?

  • 772

Eu tenho essa lacuna na minha compreensão de rede que sempre tive dificuldade em superar.

Ao longo dos anos, escrevi vários pequenos projetos de remetente/receptor TCP/UDP -- principalmente código simples de nível hello-world, a fim de aprender a mecânica de enviar/receber dados sobre TCP ou UDP.

Mas quase todos os exemplos que mencionei tendem a usar 127.0.0.x como endereço do receptor. Ou seja, um ouvinte TCP faz um bind()para um endereço 127.0.0.x.

Da mesma forma, em meu curso Udemy Docker & Kubernetes , o instrutor cria um servidor web Node.js que escuta na porta 3000 127.0.0.1.

Eu tenho um entendimento instável de que esses endereços de "loopback" são algum recurso do sistema operacional que torna esses "endereços virtuais" e permite que eles atuem como se fossem endereços de rede reais. (Essa explicação provavelmente foi muito ruim, revelando minha compreensão instável)


Minhas perguntas (sei que várias perguntas por postagem são desaprovadas, mas espero que essas perguntas sejam agrupadas logicamente o suficiente para justificar fazer essas perguntas juntas):

  • Qual é a diferença entre esses endereços de loopback (presumo 127.0.0.1 - 127.0.0.255?) e "reais" (talvez sem loopback seja a melhor palavra?) Endereços IP?
  • Em um determinado PC, o que determina se um endereço IP está disponível para a função C bind() ?
    Por exemplo, no seguinte trecho de código (adaptado daqui ):
    struct sockaddr_in sin;
    int s = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = htonl(1221908521); // 72.212.216.41 according to http://www.aboutmyip.com/AboutMyXApp/IP2Integer.jsp?ipAddress=72.212.216.41
    sin.sin_port = htons(3000);
    bind(s, (struct sockaddr *) &sin, sizeof sin);
    
    ...o que determina se o endereço IP 72.212.216.41 está disponível nesse PC específico para que o código C funcione corretamente?
  • Quem deu à minha placa de rede o endereço 72.212.216.41 ?
  • O 72.212.216.41 é algo bem acoplado à minha placa de rede e imutável? Ou algum processo de software pode alterá-lo?
  • Uma placa de rede pode ter apenas um endereço IP?
  • Por que tantos tutoriais de rede usam 127.0.0.1 em vez de endereços "sem loopback"? (Não quero generalizar, mas descobri que isso é amplamente verdade)

Acho que a essência das minhas perguntas é que estou tentando entender como a atribuição/disponibilidade do endereço IP funciona no contexto de um único PC.
Como o software/hardware diz: "PC do StoneThrow, você está atribuído 72.212.216.41 , então seus programas C podem chamar bind()com esse endereço"?

networking ip
  • 2 2 respostas
  • 114 Views

2 respostas

  • Voted
  1. Best Answer
    LawrenceC
    2022-08-19T12:52:48+08:002022-08-19T12:52:48+08:00
    • Os endereços IP são atribuídos a interfaces , não a computadores, etc.

    • As interfaces não precisam ser suportadas por hardware físico, um sistema operacional pode fornecer um driver que se parece com uma interface de rede para um aplicativo, mas na verdade é outra coisa.

    • Assim, os sistemas operacionais podem apresentar uma interface "loopback" para os aplicativos, que internamente pegam o tráfego de entrada e basicamente o copiam para o buffer de saída da interface sem entregá-lo a um driver de dispositivo que fala com uma NIC física - daí "loopback".

    • Alguns sistemas operacionais têm a interface de loopback como uma interface que você pode ver e manipular como qualquer outra interface (Linux e a lointerface comum versus outras como eth0, etc.), e alguns tornam a interface de loopback invisível (Windows).

    Qual é a diferença entre esses endereços de loopback (presumo 127.0.0.1 - 127.0.0.255?) e "reais" (talvez sem loopback seja a melhor palavra?) Endereços IP?

    Todos os endereços IP são "reais". As regras gerais na rede são:

    Você pode fazer o que quiser desde que ambos os lados concordem, mas normalmente você não controla o outro lado, então padrões e convenções determinam o que você pode fazer, a menos que você crie condições em que elas não se apliquem mais.

    127.0.0.0/16 é reservado pela IANA para fins de adaptador de loopback, e é isso. É uma convenção, mas uma convenção que todos os ISPs e sistemas operacionais seguem.

    Tecnicamente, você poderia atribuir 127.0.0.1 a uma NIC física, mas acho que apenas o Linux permitiria. No entanto, nenhum roteador ISP fará qualquer coisa com 127.0.0.0/16, exceto descartá-lo, portanto, assim que 127.0.0.1 escapar do seu roteador (supondo que seu roteador esteja configurado corretamente para roteá-lo para seu ISP), ele será descartado. Você sempre pode fazer o que quiser em sua própria LAN.

    Em um determinado PC, o que determina se um endereço IP está disponível para a função C bind()? Por exemplo, no seguinte trecho de código (adaptado daqui):

    Acho que tudo com o que o bind() se importa é que nada mais está usando o mesmo soquete. Um soquete é uma porta IP+.

    o que determina se o endereço IP 72.212.216.41 está disponível nesse PC específico para que o código C funcione corretamente?

    Nada o impede de atribuir esse IP a qualquer coisa que você queira em sua rede. Se ele fará algo produtivo depende de como outros NICs em sua rede estão configurados (estão todos na mesma sub-rede?), se cada sistema pode alcançar um roteador (obter IP do roteador do DHCP ou definir manualmente), se esse roteador funciona, e seu provedor de internet.

    Quem deu à minha placa de rede o endereço 72.212.216.41?

    Provavelmente DHCP, e provavelmente o servidor DHCP do seu ISP (Cox). Se não for DHCP, então a implementação APIPA da maioria dos sistemas operacionais será ativada. Isso supondo que você não definiu estaticamente um IP + máscara de sub-rede.

    O 72.212.216.41 é algo bem acoplado à minha placa de rede e imutável? Ou algum processo de software pode alterá-lo?

    Não. Esse é um endereço IP e é a camada 3, enquanto sua NIC está preocupada com a camada 2 (quadros Ethernet) e a camada 1 (modulando fisicamente/escutando o cabo)

    Embora muitas placas de rede tenham "mecanismos de descarregamento" que lidam com partes do TCP/IP, todas elas podem ser desabilitadas e o TCP/IP feito inteiramente por software.

    Uma placa de rede pode ter apenas um endereço IP?

    Na maioria dos sistemas operacionais:

    • Na maioria das vezes, 1 porta NIC = 1 interface, mas às vezes você pode fazer uma ligação onde 2 ou 3 portas trabalham juntas e se parecem com 1 interface. Isso é comum em servidores e switches.

    • Uma interface pode ter 0, 1 ou mais de 1 combinação de endereço IP + máscara de sub-rede. No IPv6 cada interface normalmente terá pelo menos 2 (uma será link-local).

    Por que tantos tutoriais de rede usam 127.0.0.1 em vez de endereços "sem loopback"? (Não quero generalizar, mas descobri que isso é amplamente verdade)

    Assim, você não incomoda sistemas públicos na Internet que não esperam que você fale com eles, e também não incomoda outros sistemas em sua própria LAN que não esperam que você fale com eles. O loopback permanece inteiramente em sua máquina.

    Como o que o software/hardware diz, "PC do StoneThrow, você recebeu 72.212.216.41

    Muitas vezes, isso é DHCP. Existem servidores DHCP e clientes DHCP. Os clientes DHCP usam broadcasts Ethernet, que enviam tráfego para todos os sistemas em uma rede e não requerem um IP, para encontrar o servidor DHCP e obter um IP dele.

    • 3
  2. gapsf
    2022-08-19T13:17:59+08:002022-08-19T13:17:59+08:00

    O IP pode ser atribuído manualmente por você ou automaticamente por diferentes mecanismos ou protocolos de configuração. Seu endereço é público e atribuído à interface de rede pelo seu provedor por DHCP ou por PPTP.
    Basta ler isso na íntegra: https://en.m.wikipedia.org/wiki/IP_address

    Os endereços IP diferem principalmente em sua acessibilidade global:

    https://en.m.wikipedia.org/wiki/Private_network

    https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml

    O IP é atribuído a uma interface de rede (cartão} em seu computador e pode ser alterado a qualquer momento.

    O computador pode ter várias interfaces de rede e cada interface pode ter vários IPs atribuídos.

    127.0.0.1 é usado para conveniência e segurança. Ele está sempre presente por padrão, mesmo que não haja interfaces de rede no computador e o software possa se vincular a ele com segurança apenas para comunicação entre processos locais.

    https://en.m.wikipedia.org/wiki/Localhost

    • 1

relate perguntas

  • A conexão do usuário ao servidor SFTP usando o FileZilla se recusa a conectar

  • É possível usar FTP sem sistema de arquivos no cliente?

  • Como funciona um NAT atrás de um NAT (NAT do roteador e NAT do ISP)?

  • Win10 1803: Como tornar o ponto de acesso móvel uma rede privada?

  • Como o nc identifica nomes de serviço

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
    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
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +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