Introdução ao Winsock, incluindo histórico e tecnologia
Introduction Winsock Including Background Technology
Esta postagem fala principalmente sobre a API Windows Sockets, que pode ser abreviada para WSA e Winsock. Depois de ler este post, você poderá conhecer sua definição, histórico, tecnologia, bem como implementações.
Nesta página :Definição para Winsock
O que é Winsock? Na computação, Winsock é uma especificação técnica usada para definir como o software de rede Windows deve acessar serviços de rede, especialmente TCP/IP. É chamado de Winsock porque é uma adaptação da interface de soquete Berkeley UNIX para Windows. Um soquete é um acordo especial usado para conectar e trocar dados entre dois processos de programa no mesmo computador ou rede.

Winsock é a abreviatura de Windows Sockets API (WSA). Ele define a interface padrão entre aplicativos clientes TCP/IP do Windows (como clientes FTP ou navegadores da Web) e a pilha básica de protocolos TCP/IP.
Postagem relacionada: Use o comando Netsh Winsock Reset para corrigir problema de rede do Windows 10
Antecedentes do Winsock
A API Windows Sockets foi proposta por Martin Hall da JSB Software (mais tarde Stardust Technologies) na discussão BoF (Bird of a Feather) na rede CompuServe BBS em outubro de 1991.
A primeira versão da especificação foi escrita por Martin Hall, Mark Towfiq da Microdyne (mais tarde Sun Microsystems), Geoff Arnold da Sun Microsystems e Henry Sanders e J Allard da Microsoft com a ajuda de muitos outros.
Houve algumas discussões sobre a melhor forma de resolver questões de direitos autorais, propriedade intelectual e potenciais questões antitruste, e consideração de trabalho através da IETF ou do estabelecimento de fundações sem fins lucrativos. No final, foi decidido que a especificação deveria ser protegida por direitos autorais apenas de cinco autores (não afiliados).
Todos os desenvolvedores participantes se recusaram a abreviar o nome simplesmente para Winsock por um longo tempo porque havia muita confusão entre a API e o arquivo de biblioteca DLL (winsock.dll), que apenas expunha a interface geral do WSA ao aplicativo acima dela. Geralmente, acredita-se que apenas garantir que o arquivo DLL exista no sistema pode fornecer suporte completo ao protocolo TCP/IP.
Tecnologia de Winsock
A especificação da API do Windows Socket define duas interfaces: API usada por desenvolvedores de aplicativos e SPI que fornece um método para desenvolvedores de software de rede adicionarem novos módulos de protocolo ao sistema. Cada interface representa um contrato.
A API garante que os aplicativos em conformidade possam ser executados normalmente com a implementação de protocolo em conformidade de qualquer fornecedor de software de rede. O contrato SPI garante que módulos de protocolo em conformidade possam ser adicionados ao Windows para que possam ser usados por aplicativos compatíveis com API.
Embora esses contratos fossem importantes quando o Windows Sockets foi lançado pela primeira vez, eles só têm significado acadêmico agora porque o ambiente de rede requer suporte multiprotocolo. A API do Windows Sockets versão 2.0 inclui a função de utilização de IPX/SPX, embora este protocolo estivesse quase obsoleto quando o WSA 2.0 saiu de fábrica.
O código e o design dos Windows Sockets são baseados em soquetes BSD, mas recursos adicionais são fornecidos para permitir que a API esteja em conformidade com o modelo de programação convencional do Windows.
A API Windows Sockets cobriu quase todos os recursos da API de soquetes BSD, mas existem alguns obstáculos inevitáveis, que foram causados principalmente pelas diferenças fundamentais entre Windows e Unix (embora a diferença entre Windows Sockets e soquetes BSD fosse menor do que a diferença entre o último e FLUXOS).
No entanto, o objetivo do design dos soquetes do Windows era tornar relativamente fácil para os desenvolvedores portar aplicativos baseados em soquete do Unix para o Windows. Não foi suficiente criar APIs que fossem úteis apenas para programas Windows recém-escritos.
Portanto, o Windows Sockets continha muitos elementos projetados para facilitar a portabilidade. Por exemplo, aplicativos Unix poderiam usar a mesma variável errno para registrar erros de rede e erros detectados em funções padrão da biblioteca C.
Como não pode ser implementado no Windows, o Windows Sockets introduziu uma função especial, WSAGetLastError(), para recuperar informações de erro. Esse mecanismo foi muito útil, mas a portabilidade de aplicativos ainda era extremamente complicada.
Muitos aplicativos TCP/IP primitivos foram implementados usando recursos de sistema específicos do Unix (como pseudoterminais e chamadas de sistema fork), e era problemático reproduzir essa função no Windows. Em um tempo relativamente curto, a portabilidade deu lugar ao desenvolvimento de aplicativos Windows dedicados.
Implementações de Winsock
- A Microsoft não forneceu uma implementação do Winsock 1.0.
- A versão 1.1 do Winsock foi fornecida em um pacote complementar (chamado Wolverine) para Windows for Workgroups (codinome Snowball).
- O Winsock versão 2.1 foi fornecido em um pacote complementar para Windows 95.
- A versão mais recente do Winsock 2.x foi fornecida com a nova versão do Windows ou como parte de um service pack.
- O Winsock 2 pode ser estendido por meio de um mecanismo chamado Layered Service Provider (LSP).
![5 correções para falhas na configuração de atualizações do Windows, revertendo alterações [dicas do MiniTool]](https://gov-civil-setubal.pt/img/backup-tips/42/5-fixes-failure-configuring-windows-updates-reverting-changes.jpg)
![O que é o host de configuração moderna e como corrigir seus problemas [MiniTool News]](https://gov-civil-setubal.pt/img/minitool-news-center/51/what-is-modern-setup-host.jpg)



![O Google Drive não está sincronizando no Windows10 ou Android? Consertá-lo! [Dicas de MiniTool]](https://gov-civil-setubal.pt/img/backup-tips/21/is-google-drive-not-syncing-windows10.png)


![Como editar áudio em vídeo | Tutorial do MiniTool MovieMaker [Ajuda]](https://gov-civil-setubal.pt/img/help/83/how-edit-audio-video-minitool-moviemaker-tutorial.jpg)




![O que é um adaptador USB para HDMI (definição e princípio de trabalho) [MiniTool Wiki]](https://gov-civil-setubal.pt/img/minitool-wiki-library/85/what-is-usb-hdmi-adapter-definition.jpg)





![Corrigido: Faça login com privilégios de administrador e tente novamente [Notícias MiniTool]](https://gov-civil-setubal.pt/img/minitool-news-center/31/fixed-please-login-with-administrator-privileged.jpg)