Workshop sobre programação em C
usando a API Berkeley Sockets
Carlos A. M. dos Santos
unixmania at gmail dot com
Workshop ...
●Conhecer a linguagem C
●Experiência básica com a interface do shell
●Saber usar um editor de programas
●Saber compilar um...
●Engenheiro Agrícola (UFPEL)
●Mestre em Ciência da Computação (UFRGS)
●1º Contato com Unix em 1989 (EMBRAPA)
●Experiência ...
Comunicado
O conteúdo desta apresentação não se refere a
qualquer produto, processo, tecnologia ou
informação pertencente ...
Conteúdo
Um pouco de teoria (calma, não dói!)
● Como funciona a Internet
– Modelo conceitual da Internet (Tanenbaum)
– Det...
Como Funciona a Internet
G
G
G
G
Internet
(gateways)
obelix
asterix
Modelo Conceitual
(Tanenbaum)
HTTP, etc
Transporte TCP, UDP
obelixasterix
IP
IEEE 802.2
IEEE 802.x
HTTP, etc
TCP, UDP
IP
I...
Modelo Conceitual
Exemplo: envio de formulário HTTP
Transporte
Rede
Enlace de dados
Física
Aplicação
carga (payload)
carga...
Camada de Rede
Endereçamento e Subredes – IPv4
1100 100100010000100010100000 1010
Hexadecimal
Decimal (QDD)
Binário
192 15...
Camada de Rede
Endereçamento e Subredes – IPv6
fec0 00000000baba000ecafebebe 0001Hexadecimal
Endereço (128 bits)
Binário
L...
Camada de Transporte
Tipos de Transmissão Suportados
Com conexão (TCP)
●Entrega garantida
●Ordem garantida
●Controle de fl...
Violações do Modelo
(necessárias para melhor desempenho)
Large segment offload (LSO) – delega o envio de
grandes segmentos...
BSD Sockets (4.2BSD, 1983)
Funções
Cabeçalhos
sys/types.h
sys/socket.h
netdb.h
netinet/in.h
arpa/inet.h
Funções de início/...
BSD Sockets (4.2BSD, 1983)
Estruturas de Dados
Prática
(baseada no código fornecido)
● Fazer os servidores TCP e UDP receberem o
número da porta na linha de comando
● Fa...
Referências
Stevens, W. Richard; Fenner, Bill; Rudoff, Andrew. Unix
Network Programming. Addison-Wesley, 2004.
Tanenbaum, ...
Próximos SlideShares
Carregando em…5
×

Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. dos Santos

1.359 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.359
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
18
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. dos Santos

  1. 1. Workshop sobre programação em C usando a API Berkeley Sockets Carlos A. M. dos Santos unixmania at gmail dot com Workshop TcheLinux de Software Livre FTEC, Porto Alegre 30 de maio de 2009
  2. 2. ●Conhecer a linguagem C ●Experiência básica com a interface do shell ●Saber usar um editor de programas ●Saber compilar um programa :-) ●Saber usar o comando man ●Curiosidade Requisitos
  3. 3. ●Engenheiro Agrícola (UFPEL) ●Mestre em Ciência da Computação (UFRGS) ●1º Contato com Unix em 1989 (EMBRAPA) ●Experiência com diversos “sabores” de Unix ●Experiência com Linux de 1993 a 1999 ●(Portuguese-HOWTO, LDP, SGMLtools) ●Usuário de FreeBSD desde 1999 ●Ex-administrador de redes, ex-professor, etc. ●Atualmente, desenvolvedor (HP) Sobre o Apresentador
  4. 4. Comunicado O conteúdo desta apresentação não se refere a qualquer produto, processo, tecnologia ou informação pertencente HP. As opiniões contidas nesta apresentação são de responsabilidade exclusiva do autor e não refletem políticas, práticas ou negócios da HP.
  5. 5. Conteúdo Um pouco de teoria (calma, não dói!) ● Como funciona a Internet – Modelo conceitual da Internet (Tanenbaum) – Detalhes camada de rede – Endereçamento e subredes – Endereços IPv4 e IPv6 ● Detalhes da camada de transporte – Transmissão orientada a conexão (TCP) – Transmissão orientada a datagrama (UDP) Prática ● Servidor e cliente orientados a conexão ● Servidor e cliente orientados a datagrama ● Ambientes de pilha dupla (IPv4/IPv6)
  6. 6. Como Funciona a Internet G G G G Internet (gateways) obelix asterix
  7. 7. Modelo Conceitual (Tanenbaum) HTTP, etc Transporte TCP, UDP obelixasterix IP IEEE 802.2 IEEE 802.x HTTP, etc TCP, UDP IP IEEE 802.2 G Rede Enlace de dados Física Aplicação IEEE 802.x G Host-to-network (modelo Internet)
  8. 8. Modelo Conceitual Exemplo: envio de formulário HTTP Transporte Rede Enlace de dados Física Aplicação carga (payload) carga (payload) carga (payload) carga (payload) origemdestino origemdestino origemdestino ... 00:1b:77:0f:32:87 192.168.1.154 80 POST /form.php HTTP/1.1
  9. 9. Camada de Rede Endereçamento e Subredes – IPv4 1100 100100010000100010100000 1010 Hexadecimal Decimal (QDD) Binário 192 1541168 c0 9a01a8 Não-especificado Decimal (QDD) 0.0.0.0 255 0255255 Endereços especiais Máscara de subrede 1111 0000 Hexadecimal Binário ff 00ffff 1111 1111111111111111 0000 Loopback/localhost 127.0.0.1/255.0.0.0 Endereço/comprimento 192.168.1.154/24 Formas de representação Endereço/máscara 192.168.1.154/255.255.255.0 Endereço (32 bits)
  10. 10. Camada de Rede Endereçamento e Subredes – IPv6 fec0 00000000baba000ecafebebe 0001Hexadecimal Endereço (128 bits) Binário Localhost/loopback Hexadecimal + QDD ::1/128 Alguns enrereços especiais Rede mista IPv6/ IPv4 ffff c8a8Hexadecimal 192.168.1.2540000 0000000000000000 019a Não-especificado ::/128 não cabe neste espaço ffff0000 0000000000000000 Representação/notação • 8 grupos de 4 dígitos hexadecimais • zeros à esquerda de um grupo podem ser omitidos • Um ou mais grupos seguidos de quatro zeros podem ser substituídos por “::” • os 32 bits mais à direita podem ser representados em QDD
  11. 11. Camada de Transporte Tipos de Transmissão Suportados Com conexão (TCP) ●Entrega garantida ●Ordem garantida ●Controle de fluxo e congestionamento ●Início e término do envio demorados (handshake) Sem conexão (UDP) ●Não garante entrega ●Não garante ordem ●Não controla fluxo ou congestionamento ●Envio imediato
  12. 12. Violações do Modelo (necessárias para melhor desempenho) Large segment offload (LSO) – delega o envio de grandes segmentos de dados à placa de rede, aliviando o processador. TCP segmentation offload (TSO) – LSO em TCP. A placa de rede deve possuir um TCP Offload Engine or (TOE). Large Receive Offload (LRO) – placas de rede modernas acumulam pacotes recebidos em “rajada” e geram uma só interrupção para todos eles. Isso precisa ser tratado pelo driver.
  13. 13. BSD Sockets (4.2BSD, 1983) Funções Cabeçalhos sys/types.h sys/socket.h netdb.h netinet/in.h arpa/inet.h Funções de início/fim socket(2), close(2), shutdown(2) bind(2), connect(2) listen(2), accept(2) Funções de envio send(2), sendto(2), sendmsg(2), write(2) Funçoes de recepção recv(2), recvfrom(2), recvmsg(2), read(2) Funçoes auxiliares fcntl(2), ioctl(2), select(2) sendfile(2) inet(3), byteorder(3)
  14. 14. BSD Sockets (4.2BSD, 1983) Estruturas de Dados
  15. 15. Prática (baseada no código fornecido) ● Fazer os servidores TCP e UDP receberem o número da porta na linha de comando ● Fazer o cliente UDP receber o número da porta na linha de comando ● Fazer os programas operarem em modo não bloqueante. Dica: fcntl(2) ● Fazer os programas operarem com prazo para envio/recebimento. Dica: select(2) ● Fazer os programas operarem em modo duplex (um chat simples) ● Fazer os programas operarem com IPv4 e IPv6
  16. 16. Referências Stevens, W. Richard; Fenner, Bill; Rudoff, Andrew. Unix Network Programming. Addison-Wesley, 2004. Tanenbaum, Andrew. Computer Networks, 4th edition. Prentice Hall, 2003. Hall, Brian. Beej's Guide to Network Programming Using Internet Sockets. http://beej.us/guide/bgnet/ Wikipedia. Berkeley sockets. http://en.wikipedia.org/wiki/Berkeley_sockets Wikipedia. Large segment offload http://en.wikipedia.org/wiki/TCP_segmentation_offloading TcheLinux. http://www.tchelinux.org/ As pessoas que fazem o TcheLinux. http://people.tchelinux.org/

×