Você está na página 1de 7

Pontifcia Universidade Catlica do Paran

Curso:

Engenharia de Computao

Disciplina:

Redes de Computadores II

Turno:

Professor:

Emir Toktar

Aluno Nmero:

Aluno:

Guilherme Felipe da Silva

Assinatura:

Objetivo: Executar a atividade prtica para assimilar o contedo apresentado sobre o protocolo
TCP, as fases de negociao e troca de mensagens usando sockets em cliente e servidor simples
com mensagem ECHO (ida e volta de tamanhos iguais sem banner no server). O aluno dever
identificar as mensagens e entender o sequenciamento e numerao de conhecimento
(acknowledgement Number).
Baixe as fontes dos programas de testes para este LAB (pasta src)
Informaes a respeito de ENCODING (Cdigo de Pgina do Sistema) so obtidas usando a Classe Encoding,
que tem a funo de converter Bytes em uma determinada codificao de pgina, exemplo:

ASCIIEncoding encodes Unicode characters as single 7-bit ASCII characters.

UTF7Encoding encodes Unicode characters using the UTF-7 encoding. This encoding supports all Unicode character
values. (Code page 65000)

UTF8Encoding encodes Unicode characters using the UTF-8 encoding. This encoding supports all Unicode character
values. (Code page 65001)

UnicodeEncoding encodes Unicode characters using the UTF-16 encoding. Both little endian (code page 1200) and big
endian (code page 1201) byte orders are supported.

UTF32Encoding encodes Unicode characters using the UTF-32 encoding. Both little endian (code page 12000) and big
endian (code page 12001) byte orders are supported.

Como introduo de algumas classes disponveis para resoluo de endereos e


nomes, rode os mtodos e observe o funcionamento de cada um, antes de iniciar a
tarefa.
Execute o projeto AppStartNetworking disponibilizado na tarefa.




Pratica A8 TcpEcho_C-S_SocketSimples

Socket Tcp Simples PARTE I


Fontes: parte1.tcp.echo.simples
O programa TcpEchoClientSocketSimples demonstra o uso do protocolo TCP com sockets em C#.
Para compilar, favor abrir o fonte TcpEchoClientSocketSimples.cs e TcpEchoServerSocketSimples.cs com o
Visual Studio ou NotePad++ e compilar com a linha de comando csc.exe.
Exemplo:
C:\>csc.exe TcpEchoClientSocketSimples.cs
C:\>csc.exe TcpEchoServerSocketSimples.cs


Abra o cdigo fonte e analise o cdigo e informe o instrutor para uma breve explanao com a turma.

Execute o WIRESHARK e capture os dados para anlise na sequncia. Compile e execute informando o
endereo IP da estao vizinha e dados a serem transmitidos.
1. Procedimento.

.:. Ambos alunos devero executar o Servidor e o Cliente em suas mquinas. Quando executar o SERVIDOR,
dever capturar os dados e anotar as informaes abaixo. Inverter para o outro aluno.
.:. Outra opo a execuo usando a mquina virtual (servidor no Host e cliente na VM)
Mquina Servidora: Dever capturar os dados.
Mquina Cliente: conectar e encaminhar alguns dados. Aps este passo, inverter o
procedimento.
Notem que cada ALUNO ter seu prprio conjunto de dados.
Utilize a frase Nome Aluno + IP Servidor no CLIENTE TCP

As Repostas so INDIVIDUAIS, lembre-se, uma avaliao e tem objetivo de testar seus


conhecimentos. Seja honesto e responda individualmente, caso seja observado cpia, ser
anulada a avaliao de ambos os alunos.

2. [0,5 ponto] Utilize o programa netstat para mostrar as portas em uso em seu computador.
Interprete todas as linhas e colunas (comando no prompt netstat -na).
Caso deseje usar um modo grfico, utilize o TcpView.exe.
Descreva o resultado do Netstat que mostra o Servidor Ativo aguardando conexo (quando
servidor estiver em execuo).

3. [0,5 ponto] Aps atuar como SERVIDOR e como CLIENTE para sua mquina vizinha, anote os dados
na sequencia.
Endereo IP CLIENTE 192.168.100.3 Guilherme Felipe da Silva PC1
Endereo IP SERVIDOR 192.168.1.100.2 Guilherme Felipe da Silva PC2


Ethernet

IP

MAC Origem -
MAC Destino
Type
Tamanho Payload (dados)

34:36:3b:c3:eb:28
FC:F8:AE:02:01:FC
IP (0x0800)
48bytes
192.168.100.3

IP Origem -

Pratica A8 TcpEcho_C-S_SocketSimples

192.168.100.2
48bytes

IP Destino
Tamanho Payload (dados)

A seguir, identifique os pacotes responsveis pelo tree way handshaking e as SEQUNCIAS da


comunicao do protocolo TCP da aplicao TcpEcho[Server|Client]SocketSimples.
Ateno, no feche o cliente e o servidor at todas as mensagens descritas a seguir serem completadas.
Em caso de erro, verifique o programa e corrija o mesmo. Leia antes de perguntar.
Abra o projeto e CERTIFIQUE que no cdigo do TcpEchoClientSocketSimples.cs, na Linha 38, o
tipo de ENCODER est como codificao Default.

<linha 38> ... Encoding codificacao = Encoding.Default;

Estabelecimento da Conexo
4. [1,0 ponto] O SERVIDOR est em execuo e ainda aguardando iniciar a comunicao. Ao executar o
cliente, este encaminhar uma mensagem de tamanho fixo ao servidor e ser fechada a conexo.
a. Anote na tabela abaixo a negociao.
b. Lembre que consumir 03 pacotes de rede esta informao do estabelecimento da conexo.


IP Destino (CLI):
IP Origem (SRV):
FLAGS TCP
CLIENTE
SERVIDOR
Sequencia
Nmero de Controle
Port

19475
19475
19475

(valor Hexa)

Port

SYN
SYN, ACK
ACK

Hex:0x002
Bin:0000000000010

9000

Seq =0

9000

Seq =0

Ack =1

Hex:0x012
Bin:0000000100010

9000

Seq =1

Ack =1

Hex:0x010
Bin:0000000100000


Transferncia de dados
5. [1,0 ponto] O SERVIDOR responder com ECHO da mensagem recebida. ANOTE tambm o tamanho da
mensagem observada no pacote (Length).
CLIENTE

Sequencia

Port

19475

PSH, ACK
Length( 39

19475

PSH, ACK
Length( 39

)bytes

)bytes

ACK

SERVIDOR
Port

Nmero de Controle

FLAGS TCP
(valor Hexa)

9000

Seq =1

Ack =1

Hex:0x018
Bin:000000011000

9000

Seq =1

Ack =40

Hex:0x018
Bin:000000011000

Seq =

Ack =

Hex:
Bin:

Anote o texto da Mensagem o tamanho da mesma na tabela acima. Os fluxos (setas) esto corretos?
Caso no exista alguma mensagem, justifique. Resposta:
No h a ultima mensagem, pois s h o envio do cliente e a resposta do servidor.
Mensagem Observada (est no cdigo): Guilherme Felipe da Silva 192.168.100.3 OK


Encerramento da Conexo
6. [1,0 ponto] O CLIENTE ao finalizar o envio da mensagem, sinalizar ao SERVIDOR e fechar o Socket.
Est correta esta afirmao ou o Servidor que sinaliza ao cliente??
Est incorreta, quem sinaliza o servidor.


Analise as mensagens e constate quem sinaliza e qual Code Bit enviado, preenchendo a tabela abaixo.
Que parte da mensagem o servidor analisa para saber que est fechando o Socket, qual CodeBit?

Pratica A8 TcpEcho_C-S_SocketSimples

3

Src_Port

Sequencia

Dst_Port

Nmero de Controle

19475

FIN, ACK

9000

Seq =39

Ack =39

19475

ACK

9000

Seq =39

Ack =40

19475

FIN, ACK

9000

Seq =40

Ack =40

19475

ACK

9000

Seq =40

Ack =40

FLAGS TCP (valor


Hexa)
Hex:0x011
Bin:000000010001
Hex:0x010
Bin:000000010000
Hex:0x011
Bin:000000010001
Hex:0x010
Bin:000000010000


Note que o encerramento foi realizado usando o semi-encerramento, ou seja, o cliente semi-encerra a
conexo transmitindo um segmento FIN, aceito pelo servidor que transmite um ACK. O cliente encerra a
transmisso de dados, mas o server pode transmitir algo dado.
Quando o servidor tiver transmitido todos os dados, ele sinaliza enviando um FIN ao cliente que responde
com um ACK.
7. [0,5 ponto] Anote os Dados do Pacote que INICIOU a CONEXO com o servidor.
P1) Qual dos CODE BITS pode identificar que est chegando uma conexo e qual seu valor?
P2) Esta informao pode ser til em qual situao considerando a segurana de rede?
[Recomendo leitura da Seo 23.3 TCP Forouzan Pag 725]

R1: SYN e o valor da flag 0x002
R2: til no sentido de identificar/evitar ataques por inundao de SYN.

8. [0,5 ponto] Analise o Pacote que iniciou a SINALIZAO com o SOCKET e anote todos os dados do
protocolo TCP;
Porta Destino:9000
Porta Origem:19475
Nmero de sequncia:0
Nmero do ACK: No utiliza
[Flags]
URG:
ACK:
PSH:
RST:
SYN:
FIN:

0x010
0x009
0x002
0x001

Window:8192
CRC:4
Anote os 4 bits e o tamanho do pacote TCP.
HEADER LENGTH (HLen): Bits:0101 Length (bytes):20
1) O Valor apresentado pelo WireShark est correto em relao aos 4 bits observados? Justifique a
mensagem e explique como foi obtido o valor.
Sim, est correto pois a variao ser entre 5 e 15, que quando multiplicados pelos 4bits
observados iro resultar em 20 a 60 bytes.

2) Qual o valor mnimo e o valor mximo VLIDOS para definio do tamanho do cabealho
apresentado nos 04 bits, em bytes?
Min: 20bytes
Max: 60 bytes


[Recomendo leitura da Seo 23.3 TCP Forouzan Pag 721/722]

Pratica A8 TcpEcho_C-S_SocketSimples

16

10
Source port

31

24
Destination port

Sequence number
Acknowledgement number

TCP

Hlen

Reserved

Code bits

Checksum

Window
Urgent point

Options

Pad
Data

9. [0,5 ponto] Quais so as fases do estabelecimento de comunicao TCP? Explique resumidamente a


funo de cada uma delas. (Ver 009 [2Sem] Camada de transporte TCP.pptx)

1 Fase: Estabelicimento de conexo, o TCP transmite dados no full-duplex. Quando dois processos
TCPs em duas mquinas esto conectados, eles esto aptos a transmitir segmentos entre si.

2 Fase: Transferncia de dados, aps o estabelicimento de uma conexo, pode-se iniciar a
transferncia de dados bidirecional, o cliente e o servidor podem transmitir tanto dados como
confirmaes.
3 Fase: Encerramento de conexo, qualquer uma das partes envolvida na troca de dados pode
encerrar uma conexo, embora esta tenha sido inicialmente encerrada pelo cliente.




10. [0,5 ponto] Quais so as mensagens e funo de cada uma, durante a PRIMEIRA fase do
estabelecimento de comunicao TCP? Explique cada uma delas.
Mensagens (Indique o Nome e explique a sua funo):
SYN - Incio da sincronizao
SYN, ACK - Sicronizao recebida e preparao de resposta
ACK - handshaking




11. [0,5 ponto] Quais so as mensagens e funo de cada uma durante a SEGUNDA fase da comunicao
TCP, considerando transmisso e recepo sem erros? Explique cada uma delas.
Mensagens (Indique o Nome e explique a sua funo):
PSH ACK - seguimento para informar o TCP receptor que os dados devem ser recebidos
PSH ACK - Echo de resposta para o client




12. [0,5 ponto] Quais so as mensagens e funo de cada uma durante a TERCEIRA fase da comunicao
TCP, considerando um fechamento normal (Three-Way Handshaking)? Explique cada uma delas.
Mensagens (Indique o Nome e explique a sua funo):
FIN - Final de comunicao
ACK - Confirmao de recebimento Do FIN
FIN ACK - Confirma e finaliza a conexo.

Pratica A8 TcpEcho_C-S_SocketSimples


As Repostas so INDIVIDUAIS, lembre-se, uma avaliao e tem objetivo de testar
seus conhecimentos. Seja honesto e responda individualmente, caso seja observado
cpia, ser anulada a avaliao de ambos os alunos.

Pratica A8 TcpEcho_C-S_SocketSimples

13. [0,5 ponto] Execute novamente o CLIENTE e observe a codificao usada para transmitir os dados.
Observe os dados no lado Servidor em todos os casos abaixo.
Informaes de Encoding usados no Cliente:
1252
---> Encoding CodePage
Europa Ocidental (Windows)
---> Encoding EncodingName
Iso-8859-1
---> Encoding BodyName
39bytes
Tamanho da mensagem transmitida:

14. Abra o projeto e altere o cdigo na Linha 38 no TcpEchoClientSocketSimples.cs, o tipo de
ENCODER.
DE:
<linha 38> ... Encoding codificacao = Encoding.Default;

PARA:
<linha 38> ... Encoding codificacao = Encoding.Unicode;


15. No Servidor, deixe como DEFAULT:
16. [1 ponto] Execute o Cliente e Servidor na sua mquina.
Compare o tamanho da mensagem Recebida no Servidor e no Cliente. Qual foi o tamanho anterior
e o atual? Se existe diferena, justifique.

Tamanho DEFAULT (Veja item 13): 78 bytes
Tamanho UNICODE: 39 bytes
Justificativa: H a adio de um espao para cada caractere.

17. Repita o procedimento do item 14 e altere de UNICODE para ASCII.



18. [1,5 ponto] Execute o Cliente e Servidor na sua mquina;
Compare o tamanho da mensagem Recebida no Servidor e no Cliente. Qual foi o tamanho anterior
e o atual? Se existe diferena, justifique.

Tamanho DEFAULT:78bytes
[Encoding.Default] Mensagem Servidor: G U I L H E R M E
. 1 6 8 . 1 0 0 . 3

F E L I P E

D A

S I L V A

1 9 2

O K

Tamanho UNICODE:39bytes
[Encoding.Default] Mensagem Servidor: GUILHERME FELIPE DA SILVA 192.168.100.3 OK

Tamanho ASCII:39bytes
[Encoding.Default] Mensagem Servidor: GUILHERME FELIPE DA SILVA 192.168.100.3 OK
O que ocorreu? Justifique:
Houve diferena apenas com relao ao default devido aos espaos adicionados.

Caso necessite maiores detalhes, usa a opo DEBUG (F9) e veja as informaes no BUFFER.

Pratica A8 TcpEcho_C-S_SocketSimples

Você também pode gostar