08 - camada de transporte - facomalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · i...

129
08 - Camada de Transporte 6 de julho de 2015

Upload: others

Post on 22-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

08 - Camada de Transporte

6 de julho de 2015

Page 2: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Conteudo

Pacote de dados da Camada de Rede

Camada de transporte segundo Modelo OSI

Projeto de algoritmo para transferencia confiavel de dados

Protocolos com paralelismo

Transmission Control Protocol (TCP)

2/94

Page 3: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4

Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 4: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4

Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.

Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 5: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.

Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.

Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 6: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.

Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 7: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 8: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IP

Flags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 9: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IP

Flags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 10: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 11: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.

Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 12: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.

Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.

Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:

I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 13: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.

Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.

Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 14: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.

Endereco IP do transmissor do pacote.

Endereco IP do destino do pacote.Indica lista de opcoes. Exemplos:I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 15: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.

Endereco IP do destino do pacote.

Indica lista de opcoes. Exemplos:I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes

3/94

Page 16: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Pacote IP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Protocol Header Checksum

Source IP address

Destination IP address

Options

Se IHL > 5

Versao do Protocolo IP: IPv4Internet Header Length (IHL) – numero de palavras de 32 bits nocabecalho. Entre 5 e 15.Differentiated Services Code Point (DSCP) – Antigo Type of

Service. Definicao de qualidade de servico.Explicit Congestion Notification (ECN) – Permite notificacao de con-gestionamento sem descarte de pacote. Implementado conforme arede.

Tamanho total do pacote enviado em bytes. Mınimo 20, maximo65535 (2 palavras).

total length− IHL em bytes = bytes do fragmento

Identifica grupo de fragmentos de um unico datagrama IPFlags sao usados por Path MTU, traceroute, ICMP (ping):

I bit 0: reservado. deve ser igual a 0

I bit 1: Nao fragmentar.

I bit 2: Mais fragmentos.

Fragment Offset – Medido em blocos de 8 bytes. Especifica desco-lamento (offset) em relacao ao datagrama IP nao fragmentado. Pri-meiro fragmento tem deslocamento zero.

Time To Live – contador usado para roteamento. Evita transito depacotes antigos.Define o protocolo usado nos dados transportados pelo pacote. Verhttp://en.wikipedia.org/wiki/List_of_IP_protocol_numbers.Codigo de verificacao de erro. RFC 1071. Complemento de um dasoma por complemento de um do cabecalho.Endereco IP do transmissor do pacote.Endereco IP do destino do pacote.

Indica lista de opcoes. Exemplos:I Copiado - 1 bit - diz que opcoes sao copiadas p/ todos os fragmentos

I Classe de opcao - 2 bits - 0 indica controle, 2 “medicao e depuracao”

I Numero da opcao - 5 bits - especifica opcao

I Tamanho da opcao - numero de bits para especificar opcao

I Dados da opcao - com tamanho indicado anteriormente

I Hexadecimal 0x00 indica fim da lista de opcoes 3/94

Page 17: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Servicos da camada de transporte

I Camada de rede: comunicacao entre hosts

I Camada de transporte: comunicacao entre processosI Definicao de estruturas de comunicacao que podem ser usadas

por aplicacoesI Protocolo confiavel com conexao TCPI Protocolo nao confiavel sem conexao UDP

4/94

Page 18: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Multiplexacao

I Comunicacao em portasI Entrega pacote ao socket certoI Socket sao formas de comunicacao inter-processos

I DemultiplexacaoI cada datagrama tem endereco IP de origem e destinoI cada datagrama carrega um segmento dos dadosI cada segmento tem porta de origem e destinoI host usa porta para direcionar segmento ao processo certo

I UDP/TCP multiplexam e encapsulam dadosI UDP usa somente porta e endereco de destino para

comunicacaoI UDP nao e confiavelI TCP usa porta e endereco de origem e destino para conexao

5/94

Page 19: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

User Datagram Protocol (RFC 768)

I Servico de melhor esforcoI Sem conexaoI Pacotes podem ser perdidosI Nao garante ordemI Sem controle de congestionamentoI Cabecalho pequeno

I Usado quando perdas sao toleraveis e a taxa de transmissao eimportante

I MultimıdiaI DNSI SNMP

I Aplicacao deve se preocupar com os erros

6/94

Page 20: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

UDP: transporte sem conexao0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Source port Destination port

Length Checksum

Porta de origem (identificacao do processo no host de origem)

Porta de destino (identificacao do processo no host de destino)Tamanho do pacote UDP: cabecalho e dadosChecksum opcional (RFC 768 e 1071): complemento de 1 da somapela aritmetica de complemento de 1 de: IP origem, IP destino, proto-colo do IP com padding, Length e dados).

1. Tratar campos como numeros inteiros de 16 bits

2. Complemento de 1 da soma por complemento de 1 dessesnumeros

I Se temos 1001 + 1001 = 0011 (pela aritmetica do complementode 1)

I O complemento de um de 0011 e 1100

3. Armazenar soma no campo

7/94

Page 21: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

UDP: transporte sem conexao0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Source port Destination port

Length Checksum

Porta de origem (identificacao do processo no host de origem)

Porta de destino (identificacao do processo no host de destino)

Tamanho do pacote UDP: cabecalho e dadosChecksum opcional (RFC 768 e 1071): complemento de 1 da somapela aritmetica de complemento de 1 de: IP origem, IP destino, proto-colo do IP com padding, Length e dados).

1. Tratar campos como numeros inteiros de 16 bits

2. Complemento de 1 da soma por complemento de 1 dessesnumeros

I Se temos 1001 + 1001 = 0011 (pela aritmetica do complementode 1)

I O complemento de um de 0011 e 1100

3. Armazenar soma no campo

7/94

Page 22: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

UDP: transporte sem conexao0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Source port Destination port

Length Checksum

Porta de origem (identificacao do processo no host de origem)Porta de destino (identificacao do processo no host de destino)

Tamanho do pacote UDP: cabecalho e dados

Checksum opcional (RFC 768 e 1071): complemento de 1 da somapela aritmetica de complemento de 1 de: IP origem, IP destino, proto-colo do IP com padding, Length e dados).

1. Tratar campos como numeros inteiros de 16 bits

2. Complemento de 1 da soma por complemento de 1 dessesnumeros

I Se temos 1001 + 1001 = 0011 (pela aritmetica do complementode 1)

I O complemento de um de 0011 e 1100

3. Armazenar soma no campo

7/94

Page 23: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

UDP: transporte sem conexao0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Source port Destination port

Length Checksum

Porta de origem (identificacao do processo no host de origem)Porta de destino (identificacao do processo no host de destino)Tamanho do pacote UDP: cabecalho e dados

Checksum opcional (RFC 768 e 1071): complemento de 1 da somapela aritmetica de complemento de 1 de: IP origem, IP destino, proto-colo do IP com padding, Length e dados).

1. Tratar campos como numeros inteiros de 16 bits

2. Complemento de 1 da soma por complemento de 1 dessesnumeros

I Se temos 1001 + 1001 = 0011 (pela aritmetica do complementode 1)

I O complemento de um de 0011 e 1100

3. Armazenar soma no campo

7/94

Page 24: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Exemplo de pacote IP+UDP e calculo do Checksum0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

V=4 IHL DSCP ECN total length

identification flags Fragment Offset

Time To Live Proto 00010001 Header Checksum

IP Source: 11001000 10000011 11001110 11010110

IP Destination: 11100000 00000000 00000000 11111100

Options

Se IHL > 5

SRC port: 11110110 01100101 DST port: 00010100 11101011

Length: 00000000 00011110 Checksum: 01000111 01001010

01011011 11100100 00000000 00000000 00000000 0000000100000000 00000000 00000000 00000000 00000000 0000000000000100 01110111 01110000 01100001 01100100 0000000000000000 00000001 00000000 00000001

8/94

Page 25: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Transferencia confiavel de dados

I Importante para a aplicacao nao se preocupar com atransmissao correta dos dados

I Fazer transferencia confiavel garantida aumentamcomplexidade de protocolos de comunicacao

I Protocolo de exemploI Reliable data transfer (Kurose)

9/94

Page 26: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Reliable data transfer (RDT)

I rdt_send() – envio confiavel usado na aplicacao

I udt_send() – envio no meio nao confiavel

I recebe() – recepcao de pacote contendo dados

I entrega() – entregar dados para aplicacao

Emissor Receptor

udt_send(pacote) recebe(pacote)

pacotesrdt_send(dados) entrega(dados)

Canal/meio nao confiavel

I Como desenvolver um protocolo para transmissao confiavelentre hosts?

10/94

Page 27: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 1: comunicacao em canal confiavel

I Sem perdas de pacotes e erros em conteudoI Uma maquina de estados por host (emissor/receptor)

I Emissor espera por chamada da camada superiorI Receptor espera chamada da camada inferior

Emissor

Receptor

rdt_snd(dados)

pacote = empacota(dados)

udt_send(pacote)recebe(pacote)

extrair(pacote, dados)

entrega(dados)

11/94

Page 28: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2: canal com erros em bits

I Problema: meio de transmissao pode inverter bits.I Deteccao por codigos de verificacao de erros

I Como corrigir os erros?I Usar confirmacoes: acknowledgements – ACKs

I confirma recebimento correto de pacote

I Usar confirmacoes negativas: NAKI aviso sobre ocorrencia de erro

I Neste cenario, um protocolo confiavel deve:

1. verificar a existencia de erros2. confirmar ou rejeitar pacotes3. reenviar pacotes

I Definicao de Protocolos de Repeticao AutomaticaI Em ingles, Automatic Repeat reQuest - ARQ

12/94

Page 29: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

RDT no cenario 2

EmissorACKNAK

rdt_send(dados)pctenv = empacota(dados, checksum)

udt_send(pctenv)

recebe(pctrec) && isACK(pctrec)

recebe(pctrec)&&isNAK(pctrec)

udt_send(pctenv)

Receptor

recebe(pctrec) &&

comErro(pctrec)udt_send(NAK)

recebe(pctrec) &&

semErro(pctrec)extrair(pctrec,dados)

entrega(dados)

udt_send(ACK)

Sequencia de operacao sem erros:

I Emissor – enviar: rdt_send(dados)

I Emissor – esperar confirmacao: udt_send(pctenv)

I Receptor – receber pacote: recebe(pctrec)

I Receptor – enviar ACK: udt_send(ACK)

I Emissor – receber ACK e ir para enviar

Sequencia de operacao com erros:

I Emissor – enviar: rdt_send(dados)

I Emissor – esperar confirmacao: udt_send(pctenv)

I Receptor – receber pacote: recebe(pctrec)

I Receptor – enviar NAK: udt_send(ACK)

I Emissor – reenviar pacote ate receber ACK

I Emissor – receber ACK e ir para enviar

13/94

Page 30: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

RDT no cenario 2

EmissorACKNAK

rdt_send(dados)pctenv = empacota(dados, checksum)

udt_send(pctenv)

recebe(pctrec) && isACK(pctrec)

recebe(pctrec)&&isNAK(pctrec)

udt_send(pctenv)

Receptor

recebe(pctrec) &&

comErro(pctrec)udt_send(NAK)

recebe(pctrec) &&

semErro(pctrec)extrair(pctrec,dados)

entrega(dados)

udt_send(ACK)

Sequencia de operacao sem erros:

I Emissor – enviar: rdt_send(dados)

I Emissor – esperar confirmacao: udt_send(pctenv)

I Receptor – receber pacote: recebe(pctrec)

I Receptor – enviar ACK: udt_send(ACK)

I Emissor – receber ACK e ir para enviar

Sequencia de operacao com erros:

I Emissor – enviar: rdt_send(dados)

I Emissor – esperar confirmacao: udt_send(pctenv)

I Receptor – receber pacote: recebe(pctrec)

I Receptor – enviar NAK: udt_send(ACK)

I Emissor – reenviar pacote ate receber ACK

I Emissor – receber ACK e ir para enviar

13/94

Page 31: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Problema no protocolo do cenario 2

I Problema: Se ACK/NAK sofrerem erros, processo de correcaoe retransmissao e interrompido.

I Nao existe retransmissao de ACK/NAK, somente de pacotesde dados

I Solucao: retransmissao de ACK/NAKI Emissor retransmite pacote se ACK/NAK tiverem errosI Com retransmissao, e possıvel o acumulo de duplicatas

I Tratamento de duplicatasI Cada pacote recebe um numero de sequencia do emissorI Receptor sabe quais pacotes ja recebeu e descarta duplicatas

14/94

Page 32: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.1: tratamento de duplicatas

I No emissorI Usa numero de sequencia {0, 1}I Mais estados para verificar se e pacote 0 ou 1

I No receptorI Verificar se pacote e duplicadoI Ao receber pacote 0, o proximo aceito e o pacote 1I Porem, nao ha como saber se ACK/NAK foi corretamente

recebido pelo emissor

15/94

Page 33: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.1: tratamento de erros de confirmacao

Emissor0

ACKNAK 0

Emissor1

ACKNAK 1

rdt_send(dados)pctenv = empacota(0,

dados, checksum)

udt_send(pctenv)

recebe(pctrec)

&& semErro(pctrec)

&& isACK(pctrec)

rdt_send(dados)pctenv = empacota(1,

dados, checksum)

udt_send(pctenv)

recebe(pctrec)

&&

semErro(pctrec)

&& isACK(pctrec)

recebe(pctrec) &&

(comErro(pctrec)‖isNAK(pctrec))udt_send(pctenv)

recebe(pctrec) &&

(comErro(pctrec)‖isNAK(pctrec))

udt_send(pctenv)16/94

Page 34: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.1: receptor

Espera0

Espera1

recebe(pctrec) && semErro(pctrec)

&& has_seq0(pctrec)extrair(pctrec,dados)

entrega(dados)

pctenv = empacota(ACK, checksum)

udt_send(pctenv)

recebe(pctrec) && semErro(pctrec)

&& has_seq1(pctrec)extrair(pctrec,dados)

entrega(dados)

pctenv = empacota(ACK, checksum)

udt_send(pctenv)

recebe(pctrec) &&

comErro(pctrec)pctenv =

empacotar(NAK,

checksum)

udt_send(pctenv)

recebe(pctrec) &&

semErro(pctrec) &&

has_seq1(pctrec)pctenv =

empacota(ACK,

checksum)

udt_send(pctenv)

recebe(pctrec) &&

(comErro(pctrec)pctenv =

empacota(NAK,

checksum)

udt_send(pctenv)

recebe(pctrec) &&

semErro(pctrec) &&

has_seq0(pctrec)pctenv =

empacota(ACK,

checksum)

udt_send(pctenv)

17/94

Page 35: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.2: protocolo sem NAK

I Mesma funcionalidade do Cenario 2.1, usando apenas ACKI NAK e trocado pelo ACK para o ultimo pacote recebido

corretamenteI destinatario inclui no ACK o numero do pacote que foi recebido

I ACK duplicado causa retransmissao do pacote atual

18/94

Page 36: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.2: tratamento de erros de confirmacao

Emissor0

ACK 0

Emissor1

ACK 1

rdt_send(dados)pctenv = empacota(0,

dados, checksum)

udt_send(pctenv)

recebe(pctrec)

&& semErro(pctrec)

&& isACK(pctrec, 0)

rdt_send(dados)pctenv = empacota(1,

dados, checksum)

udt_send(pctenv)

recebe(pctrec)

&&

semErro(pctrec)

&&

isACK(pctrec, 1)

recebe(pctrec) &&

(comErro(pctrec)‖isACK(pctrec, 1))udt_send(pctenv)

recebe(pctrec) &&

(comErro(pctrec)‖isACK(pctrec, 0))

udt_send(pctenv)19/94

Page 37: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 2.2: receptor

Espera0

Espera1

recebe(pctrec) && semErro(pctrec)

&& has_seq0(pctrec)extrair(pctrec,dados)

entrega(dados)

pctenv = empacotar(ACK0, checksum)udt_send(pctenv)

recebe(pctrec) && semErro(pctrec)

&& has_seq1(pctrec)extrair(pctrec,dados)

entrega(dados)

pctenv = empacota(ACK1, checksum)udt_send(pctenv)

recebe(pctrec) &&

(comErro(pctrec)‖has seq1(pctrec))udt_send(pctenv)

recebe(pctrec) &&

(comErro(pctrec)‖has seq0(pctrec))udt_send(pctenv)

20/94

Page 38: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: canais com perdas e erros

I Canal tambem pode perder pacotes completosI Necessario esperar o ACK por um limite de tempo maximo

I Retransmite se ACK nao chegar a tempoI ACK deve indicar qual e o numero do pacote sendo confirmado

I Necessario usar um cronometro

21/94

Page 39: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: tratamento de erros de confirmacao

Emissor

0ACK0

Emissor

1ACK1

rdt_send(dados)

pctenv = empacota(0,

dados, checksum)

udt_send(pctenv)

liga cronometro()

recebe(pctrec)

&& semErro(pctrec)

&& isACK(pctrec, 0)

para cronometro()

rdt_send(dados)

pctenv = empacota(1,dados, checksum)

udt_send(pctenv)

liga cronometro()

recebe(pctrec)&&

semErro(pctrec)

&& isACK(pctrec, 1)

para cronometro()

recebe(pctrec)

recebe(pctrec)

recebe(pctrec) &&

(comErro(pctrec)‖isACK(pctrec,1))

tempo_esgotado()

udt_send(pctenv)

liga cronometro()

tempo_esgotado()

udt_send(pctenv)

liga_cronometro()

recebe(pctrec) &&

(comErro(pctrec)‖isACK(pctrec, 0))

udt_send(pctenv) 22/94

Page 40: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: operacao sem erro

Remetente Destinatario

envia pct0

recebe ACK0envia pct1

recebe ACK1envia pct0

recebe pct0envia ACK0

recebe pct1envia ACK1

recebe pct0envia ACK0

...

pct0

ACK0

pct1

ACK1

pct0

ACK0

23/94

Page 41: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: pacote perdido

Remetente

envia pct0

recebe ACK0envia pct1

temporizacaoreenvia pct1

recebe ACK1envia pct0

...

Destinatario

recebe pct0envia ACK0

perda

recebe pct1envia ACK1

recebe pct0envia ACK0

pct0

ACK0

pct1

pct1

ACK1

pct0

ACK0

24/94

Page 42: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: ACK perdido

Remetente

envia pct0

recebe ACK0envia pct1

temporizacaoreenvia pct1

recebe ACK1envia pct0

...

Destinatario

recebe pct0envia ACK0

recebe pct1envia ACK1

recebe pct1 (duplo)envia ACK1

recebe pct0envia ACK0

pct0

ACK0

pct1

pct1

perda ACK1

ACK1

pct0

ACK0

25/94

Page 43: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Cenario 3: Temporizacao prematura

Remetente

envia pct0

recebe ACK0envia pct1

temporizacaoreenvia pct1

recebe ACK1envia pct0

recebe ACK1nao faz nada

...

Destinatario

recebe pct0envia ACK0

recebe pct1envia ACK1

recebe pct1 (duplo)envia ACK1

recebe pct0envia ACK0

pct0

ACK0

pct1

pct1

ACK1

ACK1

pct0

ACK026/94

Page 44: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Desempenho do protocolo no cenario 3

I Exemplo:I Enlace de taxa de transmissao R = 1Gb/s = 230 b/sI Com RTT/2 = 15ms de latencia (tempo para pacote chegar

ao destino)I Tamanho do pacote de L = 8000 bitsI Tempo de transmissao:

dtrans =L

R=

8000b

230b/s≈ 0.000008s

I Protocolo tem que aguardar ACK para continuarI Tempo usado no transmissor: dtrans + RTT

I Taxa de utilizacao: fracao do tempo utilizado pelo protocolopara transmissao dos dados

I

Uremet =L/R

RTT + L/R≈ 0.00025

27/94

Page 45: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Protocolos com paralelismo

I Paralelismo permite envio de varios pacotes ao mesmo tempo

I Numeros de sequencia serao mais que so 0 e 1

I Uso de buffering para reconhecimentoI Duas formas de paralelismo

I Go-back-N (voltar para o pacote N)I Repeticao seletiva

I Se e possıvel enviar N pacotes ao mesmo tempo sem ACK,entao a taxa de utilizacao aumenta N vezes

28/94

Page 46: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Go-back-N

I Go-back-N significa “voltar ao N-esimo pacote”I Protocolo de janela deslizanteI Destinatario

I Envia ACK cumulativoI ACK para o pacote N reconhece todos os pacotes ate N

I RemetenteI Usa temporizador para pacote mais antigo sem ACKI Se temporizador exceder limite, retransmite todos pacotes sem

ACK

base nextseqnum

Tamanho da janela N:pacotes autorizados

pacotesnao autorizados

pacotesreconhecidos

29/94

Page 47: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

X

Remetente Destinatário

envia pct 0

envia pct1

envia pct2

envia pct3espera

recebe AC0envia pct4recebe ACK1envia pct5

pct2 expiraenvia pct2envia pct3envia pct4envia pct5

recebe pct0envia ACK0

recebe pct1envia ACK1

recebe pct3, descartaenvia ACK1

recebe pct4, descartaenvia ACK1

recebe pct5envia ACK1

recebe pct2envia ACK2recebe pct3, descartaenvia ACK3

perda

Operacao do Go-Back-N

30/94

Page 48: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Repeticao seletiva

I Protocolo de janela deslizanteI Destinatario

I Envia ACK para pacotes especıficos

I RemetenteI Mantem temporizador para cada pacote sem ACK

individualmenteI Se temporizador excede limite, retransmite apenas um pacote

31/94

Page 49: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Repeticao seletiva

Em vermelho estao pacotes nao reconhecidos (no emissor) e naorecebidos (no receptor).

Janela detamanho N

Janela detamanho N

Emissor

base nextseqnum

Receptor

32/94

Page 50: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

pct0 recebido, entregue, ACK0 env.

pct1 recebido, entregue, ACK1 env.

pct3 recebido, guardado, ACK3 env.

pct4 recebido, guardado, ACK4 env.

pct5 recebido, guardado, ACK5 env.

pct2 recebido, pct2, pct3, pct4, pct5

entregue, ACK2 enviado

Xperda

Remetente Destinatário

pct0 enviado

pct1 enviado

pct2 enviado

pct3 enviado, janela cheia

ACK0 recebido, pct4 enviado

ACK1 recebido, pct5 enviado

ACK3 recebido, nada enviado

pct2 expirou, pct2 reenviado

Operacao da Re-peticao Seletiva

33/94

Page 51: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Resumo: recursos comuns em transmissao confiavel

Mecanismo ComentariosChecksum deteccao de erros em bits de pacotes

Timer (cronometro) usado para determinar perda e re-transmissao de pacote

Numero de sequencia usado para detectar perdasACK Usado para confirmar recepcao de pa-

cote corretoNAK Usado para avisar que pacote nao foi

recebido corretamenteJanela Restricao de pacotes que podem ser

enviados simultaneamente

34/94

Page 52: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: visao geral

I Transmission Control Protocol – RFC 793 (1981)I A Protocol for Packet Network Interconnection, V. Cerf e B. Kahn

I Comunicacao ponto-a-ponto (sem multicast)I Fluxo de bytes confiavel e ordenadoI Paralelismo com buffers de envio e de recepcaoI Transmissao full-duplex

I duplex: nas duas direcoes (duplex) e ao mesmo tempo (full)I Orientado a conexao (mas nao e circuito)I Controle de fluxo (janelas de transmissao)I Controle de erros

Processo

escreve dados

Processo

recebe dados

Socket

bu�er

TCP

Socket

Segmento Segmentobu�er

TCP

35/94

Page 53: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrategias do TCP

I Estabelecimento de conexao com handshake de tres vias

I Finalizacao simetrica de conexao

I Controle de erros: cronometro + checksum + ACK empiggybacking

I Controle de fluxo: janela deslizante

36/94

Page 54: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O problema de Inıcio de Conexao

I Problemas: perda, atrasos, erros e duplicacoes de pacotesI Exemplo de pior cenario

1. Cliente requisita uma conexao e efetua um comando2. Cliente registra que tempo de resposta esperado do servidor

esgota3. Cliente refaz a conexao e o comando4. Risco: fazer mesmo comando duas vezes

37/94

Page 55: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Exemplos de solucoes para Inıcio de Conexao

1. Usar enderecos de transporte descartaveis. Difıcil iniciarconexao.

2. Usar numeros identificadores de conexao e manter informacoesde cada. Difıcil manter informacoes indefinidamente.

3. Descartar pacotes antigos. Mais facil. Deve-se manter dadosnos pacotes.

3.1 Garantir pela arquitetura da rede a impossibilidade de loops elimite superior de tempo

3.2 Usar contador de hops (saltos) entre redes3.3 Usar timestamps (idade do pacote) com relogios sincronizados

Hop e praticamente proporcional a tempo

38/94

Page 56: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Detalhes de solucao para Inıcio de Conexao

I Deve-se garantir que um pacote velho e seus ACKS foramdescartados

I Marcar segmentos com numeros nao usados daqui T segundosI Numero de sequencia serao os bits inferiores de um relogio

I Se host falha, deve-se esperar T segundos para reiniciarconexoes a partir de qualquer numero de sequencia

I Cuidados para nao transmitir rapido demais e para relogio naoser rapido demais

120

807060

030 60 90 120 150 1800

Reinícioapós falhaem 70

k–1

Regi

ãopr

oibi

da

TempoTempo

Núm

ero

s d

e s

equên

cia

Núm

ero

s d

e s

equên

cia

Sequênciausada

T T2

Problema de ressincronizaçãoSegmentos não podemestar na região proibida

39/94

Page 57: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Handshake de tres vias

1. Servidor conecta-se a umaporta e inicia escuta

2. Cliente conecta-se aoservidor e inicia handshake

2.1 SYN – Enviado pelo clientepara abertura da conexao

2.2 SYN+ACK – Servidorconfirma SYN

2.3 ACK – Cliente confirma oınicio da conexao

3. Numeros de sequenciasaleatorios sao trocados

Servidor mantem tabela backlog

que registra as conexoes emantem um numero maximopermitido

40/94

Page 58: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Fim de conexao TCPTe

mpo

Conexão

DATA

DATA

Host 1 Host 2

ACK

Desconexão RST

Dados não são

entregues para

requisição de

desconexão

Figura: Liberacao assimetrica comperda de dados (Fig 6-12,Tanembaum)

I Liberacao assimetrica (so 1lado)

I Perda de dados

I Liberacao simetrica (2 lados)

41/94

Page 59: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Problemas no fim da conexao: liberacao simetrica

I Cenario1. Host 1: “Eu terminei. E voce?”2. Host 2: “Eu terminei tambem. Tchau, a conexao pode ser

fechada”I Problema dos 2 exercitos

BExército

Azul 2Exército

Azul 1

Exército

Vermelho

Vermelho tem mais homensque Azul 1 ou Azul 2 individu-almente 42/94

Page 60: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

FIN

ACK

ACK

Host 1 Host 2

FIN

FIN

FIN

FIN

Host 1 Host 2

FIN

FIN

ACK

Host 1 Host 2

FIN

Perda

Lost

FIN

Host 1 Host 2

Lost

Enviar ACK

Liberarconexão

Cenárionormal

Enviar ACK

ACK �nalperdido

Perda

Perda

Perda

Enviar FIN +Iniciar

cronômetro

Tempo esgotado

Enviar FIN +Iniciar

cronômetro

Envia ACK

Liberarconexão

Enviar FIN +Iniciar

cronômetro

Enviar FIN +Iniciar

cronômetro

Enviar FIN +Iniciar

cronômetro Enviar FIN +Iniciar

cronômetro

Liberarconexão

Liberarconexão

Liberarconexão

Enviar FIN +Iniciar

cronômetro

Enviar FIN +Iniciar

cronômetro

Tempo esgotado

Liberarconexão

Tempo esgotado

Liberarconexão

Enviar FIN +Iniciar

cronômetro

Tempo esgotado

Enviar FIN +Iniciar

cronômetro

N tempos esgotados

Liberarconexão

Enviar FIN +Iniciar

cronômetro

Perda deresposta FIN

Perda múltipla

43/94

Page 61: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: liberacao simetrica

44/94

Page 62: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de fluxo

I Automatic Repeat reQuest (ARQ)

I Janelas Deslizantes com paralelismo

I Janelas permitem controle de quando e quanto enviar paraoutro lado

I Uso do campo Window size para indicar capacidade derecebimento

I Se o outro lado nao ACK, entao emissor aguarda

45/94

Page 63: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de fluxo com janelas deslizantes

I Emissor mantem 3 ponteiros para cada conexaoI Ponteiro para bytes enviados e reconhecidosI Ponteiro para bytes enviados e ainda nao reconhecidosI Ponteiro para bytes que podem ser enviados

Sequencia de Bytes:3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

46/94

Page 64: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de erros: ACK em piggybacking (carona)

Tempo

Host A Host B

Usuáriodigita

'C'

Seq=42, ACK=79, dados= 'C' Host B emite ACKde 'C' e retransmite 'C'

Seq=79, ACK=43, dados= 'C'

Seq=43, ACK=80

Tempo

Host A emite ACKde 'C' retransmitido

Figura: Exemplo de transmissao de ACK em piggybacking durante umasessao de terminal remoto

47/94

Page 65: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de erros: tipos de ACK

I Originalmente, ACK era cumulativoI ACK cumulativo evita envio de pacotes ACKs

I Atualmente pode usar ACK seletivoI Modificacao do TCP permite ACK seletivo (RFC 2018)

48/94

Page 66: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de erros: retransmissao rapida

I Tempo para expiracao de pacote pode ser relativamente longo

I Deteccao de perda de pacotes por uso de ACK duplicado

I ACK indica numero do proximo pacote a ser recebido

I Se pacote for perdido, havera numeros de ACK pedindo seuenvio

I Reenvio de pacote antes que cronometro termine

I Se houver 3 ACKs pedindo por um mesmo pacote, reenvia-lo

49/94

Page 67: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Retransmissao rapida

Host A Host B

seq=100, 20 byt es of dat a

Timeout

Time Time

X

seq=100, 20 byt es of dat a

seq=92, 8 byt es of dat aseq=120, 15 byt es of dat a

seq=135, 6 byt es of dat a

seq=141, 16 byt es of dat a

ack=100

ack=100

ack=100

ack=100

50/94

Page 68: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de erros: expiracao de um pacote

I Tempo de expiracao deve ser maior que o tempo de ida evolta de pacote RTT (Round-Trip Time)

I Para estimar RTT, devemos obter amostras:I “Uma amostra de RTT e o tempo medido de uma transmissao

de segmento ate o seu ACK, ignorando retransmissoes”

I A estimacao do RTT e com base em sequencias de amostrasde RTT

RTTestimado = (1− a)× RTTestimado + a× RTTamostra atual

I sendo a ∈ (0, 1) e o recomendado e a = 0.125

I Tempo de expiracao depende do RTT estimado

51/94

Page 69: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de congestionamento

I Congestionamento: muitas fontes enviando muitoI Problemas:

I Pacotes perdidosI descarte de pacotes apos buffer ficar cheio

I Longos atrasosI aumento do tempo medio de pacotes em filas

I Congestionamento e a principal causa de perdas de pacotes

I Retransmissao de pacote e correcao ao sintoma e naotratamento da causa

52/94

Page 70: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de congestionamento

Host B

�entrada

: dados originais

Host A Host DHost C

�saída

Bu�ers compartilhadoscom capacidade ilimitada

R/2

R/2

Atraso

R/2entrada

saída

entradaa. b.

Taxa de transmissao de λ bytes/segundo. Atraso tende para oinfinito. 53/94

Page 71: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de congestionamento

R/2λout

λ’in

Figura: Em um congestionamento a taxa de saıda cai para zero

54/94

Page 72: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Tecnicas de controle de congestionamento

I Controle fim a fimI Identificacao pelas perdas e atrasos ocorridosI TCP: aumentar do tempo de expiracao

I Controle assistido pela redeI Roteadores avisam camada de transporte de hostsI Uso de bit unico que indica congestionamentoI Avisa taxa maxima que emissor deve transmitirI TCP: 3 bits

I Necessario 2 lados suportaremI ECN (Explicit Congestion Notification)I Bit NS (Nonce Sum) protege campo ECN

55/94

Page 73: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Controle de congestionamento TCP: aumento do tempo deexpiracao

I Em geral, TCP nao tem controle assistido pela rede

I Cenario: rede esta em vias de congestionamento

I RTT estao maiores e mais perdas de segmentos

I Se houver perda de ACK, reenviar e aumentar tempo docronometro

I Com mais tempo, pode ser que nao seja necessario maisreenviar

I Estrategia alivia o problema de congestionamento

56/94

Page 74: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: partida lenta

I Uso de janela de congestionamento (determina numero debytes sem ACK)

I Partida lenta: comeca com janela de congestionamento iguala 1 MSS (maximum segment size)

I Limiar de taxa de transmissao inicial de MSS/RTT

I Aumento de 1 MSS para cada primeiro ACK por segmento

I Aumento exponencial 1 ACK: 2 MSS , 1 ACK: 4 MSS, 1ACK: 8MSS

I Em caso de perda e possıvel fazer, por exemplo,I janela de congestionamento pode voltar para um limiar inicial

MSS aumentadoI janela reduz pela metade

57/94

Page 75: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: Slow start

Host A Host B

1 segmento

2 segmentos

4 segmentos

RTT

Tempo Tempo

58/94

Page 76: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: Estado de prevencao de congestionamento

24 K

16 K

8 K

Time

Congest

ion w

indow

Figura: Aumento aditivo (linear) da janela enquanto tudo OK,decrescimo multiplicativo (por 2) apos 3 ACKs duplicados. Congestionwindow e proporcial a taxa de transmissao.

59/94

Page 77: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP: Fast recovery

I Quando ocorre uma retransmissao rapida

I Em vez de ir para slow start ir para estado de prevencao decongestionamento

60/94

Page 78: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Resumo: controle de congestionamento TCP

I Partida lenta: janela cresce exponencialmente para cada ACKI Janela de congestionamento < limiar partida lentaI No fim desta etapa, janela cai pela metade

I Prevencao de congestionamento: janela cresce linearmenteI Janela de congestionamento >= limiar partida lenta

I Retransmissao rapida ocorre quando ACK duplicado triplo

I Em timeout, limiar partida lenta torna-se metade da janela ejanela volta para limiar mınimo

61/94

Page 79: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Numeros de portas

I Internet Assigned Numbers Authority (IANA)

I Portas conhecidas – 0 a 1023 – definidas por IANA

I Portas registradas – 1024 a 49151 – IANA sugere uso

I Portas dinamicas – 49152 a 65535I Servicos de mapeamento

I Portmap: mapeia aplicacao e versao para porta da camada detransporte

I Aplicacoes de servidor se cadastram no portmapperI Clientes consultam

I Servidor de processosI Escuta por conexoes em varias portasI Abre aplicacao correta quando ocorre uma conexaoI Exemplo: inetd

62/94

Page 80: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origem

Identifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 81: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origem

Identifica porta de destino

Duas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 82: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destino

Duas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 83: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.

Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 84: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.

Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 85: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.

Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 86: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.

Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 87: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 88: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 89: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.

Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 90: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.

Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 91: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 92: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

O segmento TCP0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Numero de sequencia

Numero ACK (se ACK ativo)

offset 0 0 0 Cong Flags TCP Window size

Checksum Ponteiro Urgencia (set URG ativo)

Opcoes. Existe se offset > 5. Inserir zeros no fim se necessario.

Identifica porta de origemIdentifica porta de destinoDuas funcoes:

I Se SYN ativo, entao e o numero de sequencia inicial. O numerode sequencia do primeiro byte de dados sera este numero mais 1.

I Caso contrario, entao e o numero de sequencia acumulado doprimeiro byte de dados deste segmento para a sessao atual.

Se ACK ativo, o valor neste campo indica o proximo numero desequencia esperado e confirma recebimento de anteriores.Tamanho do cabecalho do segmento TCP em palavras de 32 bits. En-tre 5 e 15 palavras (20 a 60 bytes). Indica o deslocamento (offset) ateo inıcio dos dados transmitidos.

Bits reservados para uso futuro. Atualmente 000.Bits para mecanismo de controle de fluxo/congestionamento.

7. NS – Nonce Sum, protege notificacao de congestionamento

8. CWR – Congestion Window Reduced – aceitacao de pedido decontrole de congestionamento

9. ECE – Se SYN=1 indica capacidade de controle decongestionamento, se SYN=0 indica existencia decongestionamento

10. URG – indica que campo de Ponteiro Urgencia esta ativo

11. ACK – indica que campo ACK esta ativo

12. PSH – funcao PUSH – pede para enviar dados para aplicacao

13. RST – interrompe a conexao abruptamente

14. SYN – iniciar conexao e sincronizar numeros de sequencia.

15. FIN – indica fim de transmissao

O tamanho da janela de transmissao em bytes (padrao) que o emissordeste pacote esta disposto em receber alem do numero de sequenciaindicado no campo ACK

Checksum de verificacao de erros de 16 bits para o cabecalho e dados.Equivalente ao usado no UDP.Se URG ativo, indica o deslocamento do numero de sequencia desde oultimo dado urgente. Dados de urgencia sao tratados imediatamente eentregues a aplicacao no momento de processamento. Sao considera-dos “fora de banda”. Pouco usado atualmente.

Contem campos referentes a opcoes do funcionamento do protocolo.Formado por sequencias que identificam o tipo (1 byte), o tamanho (1byte) e dados da opcao. Exemplo: usado no processo de negociacao,quando SYN=1. Apos as opcoes vem os dados.

Contem timestamps de 32 bits para extender a capacidade de numerosde sequencia de conexoes em conexoes com mais de 4GB. ProtectionAgainst Wrapped Sequence Numbers - RFC 1323. Nao e tempo derelogio e inicia-se aleatorio. Comum 1 incremento por milisegundo.Usado 1 timestamp de envio e 1 de ACK do ultimo timestamp conhe-cido recebido.

63/94

Page 93: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Diagrama TCP simplificado

64/94

Page 94: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estados do diagrama do TCP simplificado

I CLOSED – Sem conexaoI LISTEN – Conexao passiva. Espera por SYN.I SYN-SENT – SYN enviado. Espera por ACK.I SYN-RCVD – SYN+ACK recebido. Espera por ACK.I ESTABLISHED – Conexao estabelecida. Transferencia de dados

em progresso.I FIN-WAIT-1 – Primeiro FIN enviado. Espera por ACK.I FIN-WAIT-2 – ACK para FIN recebido. Espera por segundo

FIN.I CLOSE-WAIT – Primeiro FIN recebido. ACK enviado. Espera

aplicacao fechar.I TIME-WAIT – Segundo FIN recebido. ACK enviado. Espera

termino cronometro 2MSL. MSL e Maximum SegmentLifetime. Entre 30s e 120s.

I LAST-ACK – Segundo FIN enviado. Espera por ACK.I CLOSING – Os dois lados decidiram fechar conexao.

65/94

Page 95: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Capacidade de transmissao do TCP

I A capacidade de transmissao depende do tamanho da janela eRTT.

I Para simplificar, ignorar partida lenta

I Se o tamanho da janela for WI A capacidade de transmissao e W/RTT bytes/segundoI Apos perda, janela e, portanto, a capacidade caem pela metadeI Na etapa de prevencao a capacidade tendera para 0.75

W/RTT bytes/segundo

66/94

Page 96: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Tipos de TCP

I TCP TahoeI Partida lenta e prevencao de congestionamento com AIMD

I TCP RenoI Tahoe + Recuperacao rapidaI New Reno: permite multiplas perdas durante recuperacao

rapida

I TCP VegasI Congestionamento inferido por RTT e timeouts de todos os

segmentosI Pouco usado

I Muitos outros...

67/94

Page 97: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

TCP vs UDP: uso justo de largura de banda

I TCP consegue dividir e compartilhar canaisI 2 conexoes tendem a usar metade do canal cada

I UDP tenta aproveitar o maximo do meioI UDP pode fazer com que TCP perca largura de banda

68/94

Page 98: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Real-time Transport Protocol (RTP) - 1996

I Aplicacoes multimıdia precisam ser rapidas

I Varios protocolos foram criados para serem intermediariosentre UDP e TCP

I RTP e implementado usando o UDP

I RTP oferece garantia de sequencia por marcacao detimestamp

I RTP nao e obrigado sempre retransmitir pacote perdido

I RTP tenta retransmitir se possıvel

I Protocolo auxiliar RTCP oferece controle de fluxo esincronizacao conexoes RTP

69/94

Page 99: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Resource reSerVation Protocol (RSVP) - 1997

I Usado para reserva de recursos no caminho de uma conexao

I Host requisita nıveis de qualidade de servico

I Nao transporta dados, mas prepara para outras conexoes

I Necessita periodicamente requisitar recursos

I Usado em redes que criam circuitos virtuais com MPLS

70/94

Page 100: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Stream Control Transmission Protocol (SCTP) - 2000

I Criado em 2000 pelo grupo de trabalho Signaling Transport(SIGTRAN) do IETF

I Fim-alvo original: transporte de telefonia

I Evita perdas e garante, opcionalmente, entrega ordenada

I Permite separacao de diferentes mensagens em uma mesmaconexao

I Permite multi-homing: um lado da conexao e composto pormais de um endereco

I Permite selecao de diferentes caminhos de transmisssao

71/94

Page 101: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Caracterısticas do SCTP

I Orientado a mensagens (como o UDP)I Como o UDP, no SCTP um emissor envia uma mensagem em

uma operacao que e passada a aplicacao receptora em umaoperacao

I No TCP, o envio e orientado a bytes que podem seracumulados entre diferentes envios

I Garante entrega ordenada e controle de congestionamento(como o TCP)

I Multi-streaming : capacidade de transmitir multiplassequencias (streams) independentes em paralelo

I Atua como multiplas conexoes em umaI Exemplo: transmitir pagina web com imagens, HTML e CSS

I Entrega ordenada opcionalI Possıvel ter numeros de sequencia por mensagem de distintas

streams

I Possıvel fazer tunel do SCTP com o UDP para usar quandonao ha suporte

72/94

Page 102: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Capacidades do SCTP

I Tolerancia a falhas de hosts: multihomingI Origem ou destino pode consistir de mais de um IP ao mesmo

tempo

I Capacidade de selecao de caminho e monitoramento paraselecionar um caminho primario de transmissao de dados etestar a conectividade do caminho de transmissao

I Entrega de chunks

I Deteccao de erro melhorada compatıvel com quadros Ethernetjumbo

73/94

Page 103: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Funcionamento basico do SCTP

I SCTP coloca informacoes de mensagens e controle empedacos (chunks) separados

I Chunk de dados e Chunk de controleI Chunks contem cabecalhos proprios

I Mensagens podem ser fragmentadas em varios chunks

I Um chunk contem dados de apenas uma mensagem

I SCTP organiza chunks em pacotes SCTP

I Pacotes SCTP usa o protocolo IP para envio na rede

74/94

Page 104: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origem

Porta de destinoRotulo de verificacao para conferir o emissor do pacoteCodigo de verificacao de erros ....Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .Flags do chunk 1Numero de bits de dados do chunk 1

75/94

Page 105: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origem

Porta de destino

Rotulo de verificacao para conferir o emissor do pacoteCodigo de verificacao de erros ....Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .Flags do chunk 1Numero de bits de dados do chunk 1

75/94

Page 106: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origemPorta de destino

Rotulo de verificacao para conferir o emissor do pacote

Codigo de verificacao de erros ....Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .Flags do chunk 1Numero de bits de dados do chunk 1

75/94

Page 107: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origemPorta de destinoRotulo de verificacao para conferir o emissor do pacote

Codigo de verificacao de erros ....

Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .Flags do chunk 1Numero de bits de dados do chunk 1

75/94

Page 108: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origemPorta de destinoRotulo de verificacao para conferir o emissor do pacoteCodigo de verificacao de erros ....

Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .

Flags do chunk 1Numero de bits de dados do chunk 1

75/94

Page 109: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origemPorta de destinoRotulo de verificacao para conferir o emissor do pacoteCodigo de verificacao de erros ....Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .

Flags do chunk 1

Numero de bits de dados do chunk 1

75/94

Page 110: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Estrutura de bits do SCTP

I Chunks de controle (se necessario) e chunks de dados(quando existente)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

porta origem porta destino

Verification Tag

Checksum

Tipo chunk 1 Flags chunk 1 Tam. chunk 1

Dados do chunk 1 ...

...

Tipo chunk N Flags chunk N Tam. chunk N

Dados do chunk N ...

Porta de origemPorta de destinoRotulo de verificacao para conferir o emissor do pacoteCodigo de verificacao de erros ....Tipo do chunk. RFC4960. 0 Dados, 1 INIT, 2 INIT ACK, 3 ACK sele-tivo, 4 heartbeat, 5 heartbeat ACK, 6 abort, 7 shutdown, . . .Flags do chunk 1

Numero de bits de dados do chunk 1

75/94

Page 111: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Datagram Congestion Control Protocol (DCCP) - 2006

I Oferece conexao com controle de congestionamento

I Amigavel ao TCP – usa ECN

I Evita custos de entrega confiavel e ordenada

I Aplicacoes: telefonia IP, jogos multiplayer, streaming

76/94

Page 112: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Comparacao de protocolos

SCTP: Stream Control Transmission ProtocolDCCP: Datagram Congestion Control Protocol

Tabela: N = Nao, S = Sim, O = Opcional

UDP UDP Lite TCP SCTP DCCPTam. cabecalho (bytes) 8 8 20-60 12 12 ou 16

Conexao N N S S SGarante entrega N N S S NGarante ordem N N S O O

Checksum O S S S OChecksum parcial N S N N S

Controle fluxo N N S S NControle congest. N N S S SMultiplos streams N N N S N

Multi-homing N N N S N

77/94

Page 113: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Sockets Berkeley

I Sockets de Berkeley e uma maneira generica de utilizardiversos protocolos da camada de rede e transporte

I I A struct basica e

1 s t r u c t s o c k a d d r {2 u s h o r t s a f a m i l y ; // f a m i l i a de p r o t o c o l o s3 c h a r s a d a t a [ 1 4 ] ; //campo dados g e n e r i c o s4 } ;

78/94

Page 114: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

struct sockaddr in da famılia TCP/IP

1 s t r u c t s o c k a d d r i n {2 s h o r t s i n f a m i l y ; // f a m i l i a IP3 u s h o r t s i n p o r t ; // p o r t a (2 b y t e s )4 s t r u c t i n a d d r s i n a d d r ; // IP (4 b y t e s )5 c h a r s i n z e r o [ 8 ] ; // p r e e n c h i m e n t o6 }7 s t r u c t i n a d d r {8 u l o n g s a d d r ; /∗ e n d e r e c o IP (4 b y t e ) ∗/9 }

I Essa estrutura tem o mesmo tamanho que struct sockaddr

I Campo short sin family pode ser AF INET (IPv4) ouAF INET6 (IPv6)

79/94

Page 115: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Exemplo: criacao de endereco

1 /∗ D e c l a r a c a o de e s t r u t u r a de e n d e r e c o ∗/2 s t r u c t s o c k a d d r i n addr ;34 /∗ I n i c i a l i z a c a o dos componentes da e s t r u t u r a ∗/5 memset(&addr , 0 , s i z e o f ( s t r u c t s o c k a d d r i n ) ) ;67 /∗ D e f i n e f a m ı l i a : IP v4 ∗/8 addr . s i n f a m i l y = AF INET ;9

10 /∗ D e f i n e IP como q u a l q u e r e n d e r e c o l o c a l : INADDR ANY ∗/11 addr . s i n a d d r . s a d d r = h t o n l (INADDR ANY ) ;1213 /∗ D e f i n e p o r t a 6520 ∗/14 addr . s i n p o r t = h t o n s ( 6 5 2 0 ) ;

I Funcoes htons() e htonl() convertem numeros de formatohost para formato rede

80/94

Page 116: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Criacao/abertura de um socket

I Chamada de sistema:I int socket(int family, int type, int protocol);

I int family indica famılia de protocolosI AF INET para IPv4I AT INET6 para IPv6

I int type indica tipo de comunicacaoI SOCK DGRAM para datagramas, SOCK STREAM para

conexao e SOCK RAW para camada de rede

I int protocol indica implementacao do tipo de comunicacaoI IPPROTO UDP, IPPROTO TCP, IPPROTO ICMP,

IPPROTO RAW (IP puro)

I Retorna um file descriptor

1 i n t sock = s o c k e t ( AF INET , SOCK DGRAM, IPPROTO UDP ) ;

81/94

Page 117: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Criacao de um socket

I Um socket e representado por um file descriptor (POSIX)

I Listar todos descritores de arquivo: ls /proc/*/fd/

I Doc http://pubs.opengroup.org/onlinepubs/7908799/xns/syssocket.h.html

1 #i n c l u d e <s t d i o . h>2 #i n c l u d e <s y s / s o c k e t . h>34 i n t main ( i n t a r g c , c h a r ∗ a r g v [ ] ) {5 i n t s o c k e t f d = s o c k e t ( AF INET , // IPv4 − f a m ı l i a6 SOCK DGRAM, // s e m a n t i c a UDP7 0) ; // v e r s a o do p r o t o c o l o89 i f ( s o c k e t f d == −1)

10 p r i n t f ( ”Nao c o n s e g u i c r i a r s o c k e t . ” ) ;1112 r e t u r n 0 ;13 }

82/94

Page 118: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Associacao de endereco/porta a um socket: bind

I Associacao de endereco a um socketI int bind(int sock, struct sockaddr *addr, int addrLen);

I int sock e o file descriptor obtido com a chamada socket()I struct sockaddr *addr e o endereco/porta que sera

associado ao socketI Se estiver ocupado, bind retorno -1

I addrLen indica o numero de bytes da estrutura de endereco

1 i n t l e n = s i z e o f ( addr ) ;2 i f ( b i n d ( sock , ( s t r u c t s o c k a d d r ∗)& addr , l e n ) == −1) {3 p r i n t f ( ” Endere co ocupado . ” ) ;4 c l o s e ( sock ) ;5 }

83/94

Page 119: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Envio e recebimento de informacao: sendto e recvfrom

I Buffer deve ser alocado antes de envio/recepcaoI Estrutura to tem o endereco de destinoI Estrutura from tem o endereco de origem

1 i n t s e n d t o ( i n t sock , // f i l e d e s c r i p t o r2 c h a r ∗ b u f f e r , i n t b u f f S i z e , // b u f f e r e n v i o3 i n t f l a g s , // para c o n t r o l e da conex ao4 s t r u c t s o c k a d d r ∗ to , i n t addrLen ) ; // e n d e r e c o

1 i n t r e c v f r o m ( i n t sock , // f i l e d e s c r i p t o r2 c h a r ∗ b u f f e r , i n t b u f f S i z e , // b u f f e r r e c e b i m e n t o3 i n t f l a g s , // para c o n t r o l e da conex ao4 s t r u c t s o c k a d d r ∗ from , i n t addrLen ) ; // e n d e r e c o

1 c h a r s a i d a [ 1 0 0 0 ] ;2 f g e t s ( s a i d a , 1000 , s t d i n ) ;3 s e n d t o ( sock , // f i l e d e s c r i p t o r4 s a i d a , s t r l e n ( s a i d a ) , // b u f f e r5 0 , // f l a g s6 ( s t r u c t s o c k a d d r ∗) &addr , s i z e o f ( addr ) ) ;

84/94

Page 120: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Entrada/saıda nao bloqueante e fechamento de um socket

I Se um pacote estiver sendo esperado, acontece bloqueio,entao e necessario IO nao bloqueante da bibliotecasys/ioctl.h

I ioctl(sock, FIONBIO, &value);I Com IO nao-bloqueante usa-se loop e funcao retorna -1 se

nao ha dadosI Atencao: e necessario verificar se todos dados chegaram

(ausente neste curto exemplo)

1 i n t sock , v a l u e =1;2 sock=s o c k e t ( AF INET ,SOCK DGRAM, 0 ) ;3 i o c t l ( sock , FIONBIO , &v a l u e ) ;4 s o c k l e n t l e n = s i z e o f ( addr ) ;5 do {6 p r i n t f ( ” t e n t a n d o l e i t u r a . . . \ n” ) ;7 n = r e c v f r o m ( sock , rcb , 1000 , 0 ,8 ( s t r u c t s o c k a d d r ∗)& addr ,& l e n ) ;9 i f ( n == −1) s l e e p ( 1 ) ;

10 }11 w h i l e ( n == −1);

85/94

Page 121: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Liberacao de recursos

I Ao terminar a comunicacao, o socket deve ser fechado paraliberar recursos

1 c l o s e ( sock ) ;

86/94

Page 122: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Uso do protocolo de transporte UDP

1. Criar e inicializar enderecos sockaddr_inI Definir IP com funcao inet_atonI Definir famılia de protocolos em serv_addr.sin_familyI Definir porta com htons() (host to network byte order)

2. Criar e inicializar descritor de conexao: socketI int sock = socket(AF_INET,SOCK_DGRAM,0)

87/94

Page 123: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

1 #i n c l u d e <arpa / i n e t . h>2 #i n c l u d e <s t d i o . h>3 #i n c l u d e < s t r i n g . h>4 i n t main ( i n t argc , c h a r ∗∗ a r g v ) {5 s t r u c t s o c k a d d r i n addr ; // e n d e r e c o s e r v i d o r6 c h a r s a i d a [ 1 0 0 0 ] , chegada [ 1 0 0 0 ] ;78 memset(&addr , 0 , s i z e o f ( addr ) ) ; // i n i c i a l i z a r9 i n e t a t o n ( ” 1 2 7 . 0 . 0 . 1 ” , &addr . s i n a d d r ) ;

10 addr . s i n f a m i l y = AF INET ;11 addr . s i n p o r t = h t o n s ( 3 2 0 0 0 ) ;1213 i n t sock = s o c k e t ( AF INET ,SOCK DGRAM, IPPROTO UDP ) ;1415 w h i l e ( f g e t s ( s a i d a , 10000 , s t d i n ) != NULL) {16 s e n d t o ( sock , s a i d a , s t r l e n ( s a i d a ) , 0 ,17 ( s t r u c t s o c k a d d r ∗)& addr , s i z e o f ( addr ) ) ;18 i n t n = r e c v f r o m ( sock , chegada , 10000 ,0 ,NULL , NULL ) ;19 chegada [ n ] = ’ \0 ’ ; // t e r m i n a s t r i n g20 p r i n t f ( ”%s \n” , chegada ) ;21 }22 }

88/94

Page 124: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

1 #i n c l u d e <s t d i o . h>2 #i n c l u d e <arpa / i n e t . h>3 #i n c l u d e < s t r i n g . h>4 i n t main ( i n t argc , c h a r ∗∗ a r g v ) {5 s t r u c t s o c k a d d r i n l o c a l , c l i ;6 c h a r r c b [ 1 0 0 0 ] ; // s t r i n g r e c e b i d a7 memset(& l o c a l , 0 , s i z e o f ( l o c a l ) ) ;8 i n e t a t o n ( ”INADDR ANY” , &l o c a l . s i n a d d r ) ;9 l o c a l . s i n f a m i l y = AF INET ;

10 l o c a l . s i n p o r t = h t o n s ( 3 2 0 0 0 ) ;11 i n t sock = s o c k e t ( AF INET , SOCK DGRAM, 0 ) ;12 b i n d ( sock , ( s t r u c t s o c k a d d r ∗)& l o c a l , s i z e o f ( l o c a l ) ) ;1314 f o r ( ; ; ) {15 s o c k l e n t l e n = s i z e o f ( c l i ) ;16 i n t n = r e c v f r o m ( sock , rcb , 1000 , 0 ,17 ( s t r u c t s o c k a d d r ∗)& c l i ,& l e n ) ;18 s e n d t o ( sock , rcb , n , 0 ,19 ( s t r u c t s o c k a d d r ∗)& c l i , s i z e o f ( c l i ) ) ;20 r c b [ n ] = 0 ;21 p r i n t f ( ”De %s : %s .\ n” , i n e t n t o a ( c l i . s i n a d d r ) , r c b ) ;22 }23 }

89/94

Page 125: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Protocolo de transporte: TCP

I Tambem utiliza-se as mesmas estruturas para endereco e bindI Servidor deve aguardar para estabelecer conexao com:

I int listen ( int sock, int backlog);I int backlog e o numero maximo de pedidos abertos sem

resposta

I Cliente inicia conexao com:I int connect( int sock, struct sockaddr ∗address , int addressLen);

I Servidor aceita conexao com:I int accept( int sock, struct sockaddr ∗from, int ∗addrLen);

I Leitura e escrita com:I int read( int sock, char ∗buffer , int len );I int write ( int sock, char ∗buffer , int len );

I Leitura/escrita deve sempre verificar se numero byte recebidoscorresponde ao esperado, senao repetir operacao.

90/94

Page 126: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Exemplo TCP: servidor

1 . . .2 s t r u c t s o c k a d d r i n from , me ;3 i n t conexao , sock , a d d r l e n = s i z e o f ( from ) ;4 c h a r l i n h a [ 8 1 ] ;5 sock = s o c k e t ( AF INET , SOCK STREAM, IPPROTO TCP ) ;6 memset ( ( c h a r ∗)&me , 0 , a d d r l e n ) ;7 me . s i n f a m i l y = AF INET ;8 me . s i n a d d r . s a d d r = h t o n l (INADDR ANY ) ;9 me . s i n p o r t = h t o n s ( 8 4 5 1 ) ;

1011 b i n d ( sock , ( s t r u c t s o c k a d d r ∗)&me , a d d r l e n ) ;12 l i s t e n ( sock , 5 ) ; // e s p e r a por a t e 5 c o n e x o e s13 conexao = a c c e p t ( sock , ( s t r u c t s o c k a d d r ∗)&from ,& a d d r l e n ) ;14 do {15 r e a d ( conexao , l i n h a , 8 1 ) ;16 p r i n t f ( ”%s ” , l i n h a ) ;17 }18 w h i l e ( st rcmp ( l i n h a , ” e x i t ” ) ) ;19 c l o s e ( conexao ) ;20 . . .

91/94

Page 127: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Exemplo TCP: cliente

1 . . .2 s t r u c t s o c k a d d r i n t a r g e t ;3 c h a r l i n h a [ 8 1 ] ;4 i n t sock=s o c k e t ( AF INET , SOCK STREAM , 0 ) ;5 memset ( ( c h a r ∗)& t a r g e t , 0 , s i z e o f (me ) ) ;6 t a r g e t . s i n f a m i l y=AF INET ;7 t a r g e t . s i n a d d r . s a d d r=i n e t a d d r ( ” 1 9 3 . 1 3 6 . 6 2 . 4 ” ) ;8 t a r g e t . s i n p o r t=h t o n s ( 8 4 5 1 ) ;9

10 c o n n e c t ( sock , ( s t r u c t s o c k a d d r ∗)& t a r g e t , s i z e o f ( t a r g e t ) ) ;11 do {12 s c a n f ( ”%s ” , l i n h a ) ;13 w r i t e ( sock , l i n h a , 8 1 ) ;14 }15 w h i l e ( st rcmp ( l i n h a , ” e x i t ” ) ) ;16 c l o s e ( sock ) ;17 . . .

92/94

Page 128: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Esqueleto de servidor de multiplos clientes

1 . . .2 b i n d ( sock , . . . ) ;3 l i s t e n ( sock , 5 ) ;4 f o r ( ; ; ) { // a t e n d e r os c l i e n t e s em p r o c e s s o s f i l h o s5 conexao = a c c e p t ( sock , . . . , . . ) ;6 i f ( f o r k ( ) ) {7 /∗ p r o c e s s o p a i ∗/8 c l o s e ( conexao ) ; // nao usa a q u i9 }

10 e l s e {11 /∗ p r o c e s s o f i l h o ∗/12 c l o s e ( sock ) ; // nao usa a q u i13 . . .14 // comunicacao com a conexao15 . . .16 c l o s e ( conexao ) ;17 e x i t ( 0 ) ;18 }19 }

93/94

Page 129: 08 - Camada de Transporte - FACOMalbertini/1sem2015/redes/slides/08c... · 2015. 8. 12. · I Copiado - 1 bit - diz que op˘c~oes s~ao copiadas p/ todos os fragmentos I Classe de

Referencias

I An introduction to the SCTPhttp://www.ietf.org/rfc/rfc3286.txt

I Stream Control Transmission Protocolhttp://www.ietf.org/rfc/rfc2960.txt

I Sockets API Extensions for SCTP http://tools.ietf.org/

html/draft-ietf-tsvwg-sctpsocket-15

I Programacao UDP e TCP sobre “Sockets de Berkeley”:http://www.dei.isep.ipp.pt/ andre/documentos/sockets-berkeley.html

I Datagram Congestion Control Protocolhttp://tools.ietf.org/html/rfc4336

I Implementacao SCTP http://lksctp.sourceforge.net/

94/94