programação para kernel linux - parte 2

38
Os protocolos TCP e DCCP Implementa¸c˜ ao dos CCIDs Atividades Programa¸c˜ ao para o Kernel Linux (Parte 2) Ivo Augusto Andrade Rocha Calado Instituto Federal de Educa¸c˜ ao, Ciˆ encia e Tecnologia de Alagoas 8 de Dezembro de 2011 1 / 37 Ivo Calado IFAL Programa¸c˜ ao para o Kernel Linux (Parte 2)

Upload: ivo-calado

Post on 05-Dec-2014

444 views

Category:

Education


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Programacao para o Kernel Linux (Parte 2)

Ivo Augusto Andrade Rocha Calado

Instituto Federal de Educacao, Ciencia e Tecnologia de Alagoas

8 de Dezembro de 2011

1 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 2: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Agenda I

1 Os protocolos TCP e DCCPTCPDCCPImplementacoes no Kernel

2 Implementacao dos CCIDsCCID-2CCID-3 e CCID-4CCID-249

3 AtividadesAdicionando um Novo CCIDAdicionando uma nova SysctlLogando os pacotes enviados

2 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 3: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Observacao sobre este material

Este material e derivado de diversos trabalhos livrementedisponıveis na Internet

3 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 4: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

TCP

TCP: O que e?

Protocolo de transporte mais difundido no mundo

Prove comunicacao unicast

Efetua controle de congestionamento e de fluxo

Protocolo confiavel: os dados perdidos na rede saoretransmitidos

4 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 5: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

TCP

TCP: Controles de congestionamento

Possui diversas variacoes do mecanismo de controle decongestionamento

Utiliza duas fases: partida lenta e prevencao decongestionamento

A versao mais conhecida e o Reno que implementa o AIMD

Porem, existem diversas outras variantes como: Tcp Cubic,Bic, NewReno, Vegas, Compound, WestWood, Africa, etc

No linux o algoritmo padrao e o Cubic enquanto que noWindows Vista e o Compound

A selecao algoritmo default de CC e realizada ou naconfiguracao do kernel ou via sysctl, porem o valor e validoem nıvel de protocolo (todos os sockets sao afetados)

5 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 6: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

DCCP

DCCP: O que e?

Protocolo de transporte

Prove comunicacao unicast

Controle de congestionamento e entrega nao confiavel

Possui como principal foco aplicacoes multimıdia

6 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 7: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

DCCP

DCCP: Controles de congestionamento

Oferece uma estrutura componentizavel para gerencia demecanismos de controle de congestionamento

Possibilita que novos algoritmos sejam “plugados” no formatode CCIDs

A selecao do algoritmo de CC se da ou via sysctl (todos ossockets sao afetados) ou por socket (apenas a transmissao eafetada)

Uma transmissao e composta por duas “half-connections”

7 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 8: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

DCCP

CCIDs: 2, 3, 4, 249

Atualmente encontram-se padronizados 3 mecanismos de controlede congestionamento no DCCP e um experimental

CCID-2 (RFC4341): baseado em janela, esquema AIMD(Additive Increase Multiplicative Decrease) e confirmacaoseletiva (Ack Vectors). Uso: jogos onlineCCID-3 (RFC4342): baseado na equacao TFRC, evitamudancas abruptas na taxa de transmissao (diminuicaosuave). Uso: fluxo de vıdeoCCID-4 (RFC5622): variante do TFRC voltado paraaplicacoes que podem adaptar o fluxo a partir da alteracao dotamanho do pacote enviado. Uso: VoIPCCID-249 (Dccp Cubic): algoritmo baseado no TCP Cubic,voltado para redes de alta velocidade

8 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 9: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

As implementacoes no Kernel

Apresentam arquiteturas bastante diferentes

TCP considera que todos os algoritmos de CC sao compostosdos estados partida lenta e prevencao decongestionamento

DCCP apresenta uma interface mais generica e, portanto,mais flexıvel para o mecanismo de controle decongestionamento

Para o registro do protocolo no sistema operacional ambos osprotocolos devem criar um instancia das structs proto,net protocol, inet protosw e pernet operations eregistra-las no SO

9 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 10: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Implementacao do TCP

Definido em linux/net/ipv4

Apresenta tanto os componentes genericos quanto asimplementacoes dos algoritmos de CC

Cada algoritmo de CC, a excecao do Reno, e implementadocomo um modulo

Estrutura de um algoritmo e definida em include/net/tcp.h

10 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 11: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Implementacao do TCP

s t r u c t l i s t h e a d l i s t ;u n s i g n e d l o n g f l a g s ;v o i d (∗ i n i t ) ( s t r u c t sock ∗ sk ) ;v o i d (∗ r e l e a s e ) ( s t r u c t sock ∗ sk ) ;u32 (∗ s s t h r e s h ) ( s t r u c t sock ∗ sk ) ;u32 (∗min cwnd ) ( c o n s t s t r u c t sock ∗ sk ) ;v o i d (∗ c o n g a v o i d ) ( s t r u c t sock ∗ sk , u32 ack , u32

i n f l i g h t ) ;v o i d (∗ s e t s t a t e ) ( s t r u c t sock ∗ sk , u8 n e w s t a t e ) ;v o i d (∗ cwnd event ) ( s t r u c t sock ∗ sk , enum t c p c a e v e n t

ev ) ;u32 (∗ undo cwnd ) ( s t r u c t sock ∗ sk ) ;v o i d (∗ p k t s a c k e d ) ( s t r u c t sock ∗ sk , u32 num acked , s32

r t t u s ) ;v o i d (∗ g e t i n f o ) ( s t r u c t sock ∗ sk , u32 ext , s t r u c t

s k b u f f ∗ skb ) ;

11 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 12: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Implementacao do TCP

Como pode-se ver, a implementacao do algoritmo de CC no TCP efortemente ligada a

Mudanca de estados da conexao

Recebimento de pacote de confirmacao

Limiar de partida lenta

12 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 13: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Implementacao do DCCP

Definido em linux/net/dccp

Apresenta uma estrutura bem definida sobre o que e o nucleodo protocolo e o que e algoritmo de controle decongestionamento

Apesar de nao ser implementado como modulo, a estrutura docontrole de congestionamento e componentizavel

13 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 14: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Operacoes de um CCID

s t r u c t c c i d o p e r a t i o n s {v o i d (∗ c c i d h c r x p a c k e t r e c v ) ( s t r u c t sock ∗ sk ,

s t r u c t s k b u f f ∗ skb ) ;v o i d (∗ c c i d h c t x p a c k e t r e c v ) ( s t r u c t sock ∗ sk ,

s t r u c t s k b u f f ∗ skb ) ;i n t (∗ c c i d h c t x s e n d p a c k e t ) ( s t r u c t sock ∗ sk ,

s t r u c t s k b u f f ∗ skb ) ;v o i d (∗ c c i d h c t x p a c k e t s e n t ) ( s t r u c t sock ∗ sk ,

u n s i g n e d i n t l e n ) ;

// Outras f u n c o e s e} ;

14 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 15: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Implementacoes no Kernel

Um pouco mais sobre a implementacao dos CCIDs

Os CCIDs sao livres para implementar as funcionalidades quedesejarem

Antes de fazer a chamada a alguma das acoes do CCID, onucleo DCCP verifica se tal funcao e, de fato, implementada ecaso nao seja descarta a chamada

15 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 16: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

CCID-2

Funcionamento

Cria uma estrutura em lista que armazena os ultimos Acksrecebidos (nao faz uso de Ack acumulativo!)

Porque uma abordagem utilizando Ack acumulativo nao e possıvelno DCCP?

Por que o protocolo DCCP e nao confiavel!!

Os hosts trocam os vetores de confirmacao (enviadojuntamente com o pacote de dados)

16 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 17: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

CCID-2

Funcionamento

Cria uma estrutura em lista que armazena os ultimos Acksrecebidos (nao faz uso de Ack acumulativo!)

Porque uma abordagem utilizando Ack acumulativo nao e possıvelno DCCP?

Por que o protocolo DCCP e nao confiavel!!

Os hosts trocam os vetores de confirmacao (enviadojuntamente com o pacote de dados)

16 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 18: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

CCID-3 e CCID-4

CCID-3

Utiliza uma equacao para fazer o calculo da taxa de envio

Mais complexo que o CCID-2 pois necessita sincronizar otempo de envio ao inves de ser Ack-Clocked

Utiliza o conceito de intervalo de perda (1 RTT) onde em umintervalo todas as perdas sao consideradas como apenas uma

Apresenta tanto um crescimento quanto uma queda na taxade envio mais suave

Define um tamanho fixo de pacotes (1500 bytes) e em caso dediminuicao da taxa de envio altera o numero de pacotesenviados

17 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 19: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

CCID-3 e CCID-4

CCID-3 e CCID-4

Variacao do CCID-3 onde, ao inves de variar o numero depacotes enviados varia o tamanho dos pacotes

Possui taxa de transmissao limitada a 1,5 Mbps

CCID-4 ainda nao disponıvel na arvore principal do Kernel

18 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 20: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

CCID-249

Funcionamento

Implementa uma mistura entre TCP Cubic e CCID-2

“Rouba” o mecanismo de confirmacao seletiva via AckVectors do CCID-2

Utiliza a funcao de calculo de janela do Tcp Cubic

Consegue obter maior vazao que os outros CCIDs

Disponibilizacao

Nao disponıvel na arvore principal do Kernel, sendodisponibilizado apenas na arvore git mantida por GerritRenker (principal mantenedor do Dccp)

19 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 21: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

Adicionando um Novo CCID

Agora vamos criar um novo CCID

Este CCID ira simular o protocolo UDP, ou seja, sem controlealgum de taxa de envio

Para isso, vamos escolher o numero 248 para ser o CCID (naarvore oficial o Dccp Cubic ainda nao existe!)

20 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 22: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

1a etapa: Definir a constante para o CCID

Abrir o arquivo include/linux/dccp.h

Buscar o enum onde esta definido DCCPC CCID3

Adicionar uma nova constante

DCCPC CCID248 = 248 ,

21 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 23: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

2a etapa: Implementar o algoritmo

Criar um novo arquivo chamado ccid248.c emlinux/net/dccp/ccids item Adicionar a seguinteimplementacao

#i n c l u d e "../ccid.h"

s t r u c t c c i d o p e r a t i o n s c c i d 2 4 8 o p s = {. c c i d i d = DCCPC CCID248 ,. cc id name = "UDP-like"

} ;

22 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 24: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

3a etapa: Adicionar o CCID a lista de CCIDs disponıveis

Abrir o arquivo linux/net/dccp/ccid.c

No vetor ccid operations adicionar a seguinte linha no final

#i f d e f CONFIG IP DCCP CCID248&c c i d 2 4 8 o p s ,

#e n d i f

23 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 25: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

4a etapa: Adicionar a constante de CCID a lista de CCIDsque podem ser negociados

Abrir o arquivo linux/net/dccp/feat.c

Localizar a funcao dccp feat is valid sp val

Alterar o opcao DCCPF CCID para que fique da seguinteforma

c a s e DCCPF CCID :r e t u r n v a l == DCCPC CCID2 | | v a l == DCCPC CCID3 | |

v a l == DCCPC CCID248 ;

24 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 26: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

5a etapa: Adicionar as dependencias de negociacao

Ainda no arquivo linux/net/dccp/feat.c

Localize a funcao dccp feat ccid deps

Adicione antes do switch final o seguinte bloco

s t a t i c c o n s t s t r u c t c c i d d e p e n d e n c yc c i d 2 4 8 d e p e n d e n c i e s [ 2 ] [ 2 ] = {

{{ 0 , 0 , 0 , 0 }} , {{ 0 , 0 , 0 , 0 }}} ;

Adicionar ao switch final a seguinte linha

c a s e DCCPC CCID248 : r e t u r n c c i d 2 4 8 d e p e n d e n c i e s [i s l o c a l ] ;

25 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 27: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

6a etapa: Declarar operacoes do novo CCID em ccid.h

Abra o arquivo linux/net/dccp/ccid.h

Localize o seguinte trecho

#i f d e f CONFIG IP DCCP CCID3e x t e r n s t r u c t c c i d o p e r a t i o n s c c i d 3 o p s ;

#e n d i f

Apos ele, adicione o seguinte trecho

#i f d e f CONFIG IP DCCP CCID248e x t e r n s t r u c t c c i d o p e r a t i o n s c c i d 2 4 8 o p s ;

#e n d i f

26 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 28: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

7a etapa: Adicionar ao menu de configuracoes o novoCCID

Abrir arquivo linux/net/dccp/ccids/Kconfig

Adicione ao final da secao menu o seguinte trecho

c o n f i g IP DCCP CCID248b o o l "CCID -248 (UDP-like) novo CCID"

d e f b o o l n−−−he lp−−−Aqui v a i a d e s c r i c a o do novo CCID .

27 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 29: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

8a etapa: Adicionar o novo CCID a compilacao

Abrir o arquivo linux/net/dccp/ccids/Makefile

Apos a definicao do CCID-3, adicionar o seguinte trecho

dccp−y += c c i d s / c c i d 2 4 8 . o

28 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 30: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

Testando

Habilitar o novo CCID no menuconfig durante a configuracaodo kernel

Compilar o Kernel e instalar

Reiniciar a maquina virtual

Instalar o iperf com suporte a DCCP (http://139.133.210.30/~gerrit/dccp/apps/iperf/zip/

iperf-2.0.2_DCCP-patched-CBR-continuous.tar.bz2)

29 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 31: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando um Novo CCID

Testando

Executar a sysctl para alterar o CCID padrao

s y s c t l −w ne t . dccp . d e f a u l t . t x c c i d =248s y s c t l −w ne t . dccp . d e f a u l t . r x c c i d =248

Iniciar o lado servidor do iperf

i p e r f −d −s − i 1

Iniciar o lado cliente do iperf

i p e r f −d −c 1 2 7 . 0 . 0 . 1 − i 1

30 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 32: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando uma nova Sysctl

Adicionando uma nova Sysctl

sysctl e uma abordagem utilizada pelo SO para umacomunicacao entre o espaco de usuario e o espaco de nucleo

Realizado a partir de entradas em /proc

O protocolo pode disponibilizar tanto a leitura quanto aalteracao de algumas variaveis

A alteracao do valor e realizado tanto via arquivo virtual em/proc quanto via chamada de sistema syscall

31 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 33: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando uma nova Sysctl

1a etapa: Definir a variavel a ser exportada

Vamos considerar o compartilhamente de uma variavel inteirachamada “value1”

Abrir o arquivo linux/net/dccp/proto.c

Declarar uma variavel inteira chamada “value”

i n t s y s c t l d c c p v a l u e r e a d m o s t l y = 5 ;

Exportar a variavel em linux/net/dccp/dccp.h

e x t e r n i n t s y s c t l d c c p v a l u e ;

32 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 34: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando uma nova Sysctl

2a etapa: Adicionar uma entrada em ctl table

Abrir arquivo linux/net/dccp/sysctl.c

Localizar array dccp default table

Adicionar o seguinte trecho ao final do array

{. procname = "value" ,. data = &s y s c t l d c c p v a l u e ,. maxlen = s i z e o f ( s y s c t l d c c p v a l u e ) ,. mode = 0644 ,. p r o c h a n d l e r = p r o c d o i n t v e c m i n m a x ,. e x t r a 1 = &zero ,

} ,

33 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 35: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Adicionando uma nova Sysctl

Testando

Apos salvar tudo e recompilar o Kernel, realizar a seguinteoperacao

c a t / p r o c / s y s / n e t / dccp / d e f a u l t / v a l u e

Ao realizar essa operacao deve ser impresso na tela o valor 5

Um segundo teste a ser realizado e a tentativa de alterar ovalor da variavel

s y s c t l −w ne t . dccp . d e f a u l t . v a l u e =10

34 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 36: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Logando os pacotes enviados

Logando os pacotes enviados

Nesta atividade o aluno ira modificar o CCID recem criadopara que toda vez que um pacote seja recebido sera realizadoum log do pacote

Deste modo, o aluno deve implementar a funcao correta queregistre o recebimento de pacotes no lado receptor

Dica...

Analisar funcao ccid hc tx packet sent

Tempo da atividade: 10 - 15 minutos

35 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 37: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Logando os pacotes enviados

Bibliografia I

Jeremy Andrews.Linux: Documenting how patches reach the kernel.http://kerneltrap.org/node/3180, Maio 2004.

The Git Community Book.The git community book.http://book.git-scm.com/index.html, Outubro 2011.

Ariejan de Vroom.How to create and apply a patch with git.http://ariejan.net/2009/10/26/

how-to-create-and-apply-a-patch-with-git/, Outubro2009.

36 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)

Page 38: Programação para Kernel Linux - Parte 2

Os protocolos TCP e DCCP Implementacao dos CCIDs Atividades

Logando os pacotes enviados

Bibliografia II

Wikipedia Foudation.Sco-linux controversies.http:

//en.wikipedia.org/wiki/SCO-Linux_controversies,Outubro 2011.

37 / 37 Ivo Calado IFAL

Programacao para o Kernel Linux (Parte 2)