Compartilhar via


Raw Sockets

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Windows Embedded CE com dispositivos suporte processado soquetes. Para aumentar a segurança, somente aplicativos com privilégios têm permissão para aberto soquetes processado. Provedores de serviço TCP/IP talvez suporte o tipo Soquete SOCK_RAW.

Observação

Soquetes brutos são com suporte somente para IPv4.SOCK_RAW não é com suporte para IPv6 ou qualquer outro protocolo.

Existem dois tipos de tais soquetes:

  • O primeiro tipo assume um tipo protocolo conhecido como estão escritas no cabeçalho de IP. Um exemplo do primeiro tipo de Soquete é ICMP.
  • O segundo tipo permite que qualquer número protocolo. Um exemplo do segundo tipo seria um protocolo experimental que não é com suporte pelo provedor de serviço.

Se um provedor serviço suporta soquetes SOCK_RAW para um intervalo de protocolos ou instala próprio sobre o processado usar como padrão soquetes encadear protocolo, o provedor deve definir a PFL_HIDDEN sinalizador quando chamado a WSCInstallProvider função. Este sinalizador é impede que o nome do provedor que aparece na consulta para WSAEnumProtocols. Isso é útil para os aplicativos que estão verificando suporte a protocolo.

Provedores devem definir a PFL_Hidden sinalizador enquanto chamado de WSCInstallProvider função.

O seguinte regras são aplicadas às operações em soquetes SOCK_RAW:

  • Quando um aplicativo envia uma datagrama ele pode ou não pode incluir o cabeçalho IP a frente a de saída datagramas depending on opção definida theIP_HDRINCL para o Soquete. A opção IP_HDRINCL pode ser definida chamado de setsockopt (Soquetes do Windows) função.

    Observação

    Se o opção definida IP_HDRINCL para o Soquete, Windows Embedded CE verifica o cabeçalho para garantir que o campo protocolo não está definido como TCP.Se ele for, em seguida, o código de erro WSAEPROTONOSUPPORT será retornado.

  • Um aplicativo sempre obtém o cabeçalho IP na frente de cada datagrama recebida regardless of a opção IP_HDRINCL.

  • Datagramas recebidos são copiados para todos os soquetes SOCK_RAW que satisfazem as seguinte condições:

    • O número protocolo especificado para o Soquete deve corresponder ao número o protocolo no cabeçalho de IP da datagrama recebida.
    • Se um local endereço IP é definido para o Soquete, ele deve corresponder ao endereço de destino conforme especificado no cabeçalho de IP da datagrama recebida. Um aplicativo pode especificar o local endereço IP por funções BIND chamado. Se nenhum local endereço IP é especificado para o Soquete, os datagramas são copiados para o Soquete regardless of o endereço IP destino no cabeçalho de IP da datagrama recebida.
    • Se houver um endereço externo é definido para o Soquete, ele deve corresponder ao endereço de origem conforme especificado no cabeçalho de IP da datagrama recebida. Um aplicativo pode especificar o endereço IP externo por funções conectar chamado. Se nenhum endereço IP externo é especificado para o Soquete, os datagramas são copiados para o Soquete regardless of o endereço IP origem no cabeçalho de IP da datagrama recebida.

É importante compreender que SOCK_RAW soquetes podem get muitos datagramas inesperados. De exemplo, um programa de ping pode usar soquetes SOCK_RAW para enviar solicitações eco ICMP. Enquanto o aplicativo está esperando respostas eco ICMP, todas as outras mensagens ICMP (como HOST_UNREACHABLE ICMP) podem ser entregue a esse aplicativo também. Além disso, se diversos soquetes SOCK_RAW estiver aberto em uma máquina no mesmo tempo, os mesmos datagramas pode ser entregue a todos o aberto soquetes. Um aplicativo deve ter um mecanismo para reconhecer a datagrama e para ignorar todas as outras. Esse mecanismo pode incluir inspecionando o recebimento exclusivo header–Using IP identificadores no cabeçalho ICMP (ProcessId, de exemplo) e assim por diante.

See Also

Concepts

Winsock Security

Other Resources

Winsock Application Development