Analisando a cena:
Por que estudar Sockets em C?
Todo programa num OS que tem contato externo, dentro ou fora da intranet, por meio de rede, usa socket. Internet usa socket para trabalhar desde o DNS até seu querido MSN e Skype. SGBD como MySQL usam socket para comunicação envio de queries, acessos remotos como SSH. Ou seja, socket está presente em tudo...
Obs.: Não nos responsabilizamos pelo mau uso das informações aqui contidas. Todo material e exemplos descritos nesse tutorial possuem somente propósitos educacionais.
Capítulos analisados por m0nad e syn_ack, agradecimento especial para eles.
Índice
- Introdução
- Explanação ao TCP/IP
- BSD Sockets
- Funções read(),send() e exemplo cliente HTTP
- Funções listen(),Bind(),accept() e servidor http exemplo
- Na prática fazendo um FUZZER TCP
- Servidor e cliente com fork
- Servidor de comandos e Scanner de portas
- Simple Socket Library
- Explanação ao UDP e exemplo de Servidor e cliente
- Exemplo UDP Flood
- Portabilidade com Windows, exemplo um Whois
- Conclusão
- Bibliografia
- Agradecimentos
- Sources externas
Introdução
Vamos ver algo de sockets, coisas simples como port scan, floods UDP, mas nossa meta é algo mais como Fuzzer, cliente e servidor de HTTP, algumas libs como SSL, quanto a tarefas multiprocesso vou usar fork por ser mais popular no pessoal intermediário em C, pois pthreads é para usuários avançados, fora que pedi mais explicações.
Além disto tudo eu mostro soluções mais fáceis como uso de bibliotecas externas para fazer certas tarefas.
Requisito: sugiro que seja um programador iniciante em C ou intermediário, entenda redes ou pelo menos o mínimo sobre o mesmo para não ficar perdido.
Bom, se você usa Windows, antes de tentar seguir qualquer exemplo leia o capítulo sobre portabilidade.
O sistema operacional que testei os programas são
GNU/Linux e FreeBSD. Do mais um bom editor de texto com syntax highlight como VIM e EMACS. Um GDB para depurar o código ou desbugar e já está bom.