Cliente-servidor com Sockets TCP



Documentos relacionados
Cliente-servidor com Sockets TCP

Camada de Transporte, protocolos TCP e UDP

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Programação de Sockets em C/C++

Redes de Computadores II

Tecnologia de Redes. Protocolo TCP

Redes de Computadores. TCP Orientação à Conexão. Prof. Othon M. N. Batista Mestre em Informática

REDES DE COMPUTADORES

Redes de Computadores. Camada de Transporte

Capítulo 11 - Camada de Transporte TCP/IP e de Aplicação. Associação dos Instrutores NetAcademy - Julho de Página

Programação com sockets (em Java)

Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos

Redes de Computadores. Trabalho de Laboratório Nº7

INTRODUÇÃO ÀS REDES DE COMPUTADORES

A Camada de Transporte

Camada de rede. Camada de enlace. Meio Físico

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Redes de Computadores

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

Comunicação entre Processos

Sistemas de Operação Sockets

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

CAMADA DE TRANSPORTE

Passagem de Mensagens

Capítulo II Modelos de Programação Distribuída


Computadores Digitais 2. Prof. Rodrigo de Souza Couto

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Segundo Bimestre

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Informática I. Aula Aula 22-03/07/06 1

Sockets. Bruno Guimarães Lucas Rossini

Comunicação em Sistemas Distribuídos

Rede de Computadores

Sistemas Distribuídos

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

CCNA 1 Conceitos Básicos de Redes. Módulo 11 Camada de Transporte TCP/IP Camada de Aplicação

Sistemas Distribuídos

Qualidade em Servicos de Rede Prof. Eduardo Maronas Monks Roteiro de Laboratorio Camada de Transporte Parte II

Modelo Cliente/Servidor e Introdução a Sockets

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Redes de Computadores

Traceroute É uma ferramenta de diagnóstico que rastreia a rota de um pacote através de uma rede de computadores e que utiliza os protocolos IP e ICMP.


Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

REDES DE COMPUTADORES

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

Arquitetura TCP/IP. Parte XI Transporte orientado a conexão (TCP) Fabrízzio Alphonsus A. M. N. Soares

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

Tipos de Servidores. Servidores com estado

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Mecanismos de Comunicação. Sockets em java (

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

INF1013 MODELAGEM DE SOFTWARE

Programação TCP/IP. Protocolos TCP e UDP

Tecnologia de Redes de Computadores

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

sockets interprocess communication Taisy Weber

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

Redes de Computadores. Trabalho de Laboratório Nº8

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

4. Protocolos Teóricos e Protocolos de Controlo de Ligação Protocolos ARQ; Especificação de Protocolos; Eficiência ARQ.

Rede de Computadores II

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Redes de Computadores e Aplicações

3. Projeto e implementação de Servidores

Controle de Congestionamento em TCP Parte 2. Prof. Dr. S. Motoyama

Endereços de transporte TPDU. Nível de Rede Endereço de rede. Figura 1. Entidade de transporte

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Camada de Transporte TCP/IP e Aplicação

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Arquitetura de Sistemas Operativos

CAPÍTULO 6 A CAMADA DE TRANSPORTE

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

Cap 03 - Camada de Aplicação Internet (Kurose)

Camada de Transporte. Protocolos TCP e UDP

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

Protocolo de transporte TCP (Transmission Control Protocol)

Protocolos básicos de LANs IP (primeiro trabalho laboratorial)

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

Sistemas Distribuídos Java Sockets

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Transcrição:

Cliente-servidor com Sockets TCP Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2006/2007 c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 1

Comunicação orientada à conexão via TCP/IP Servidor fica à espera de ligações. Cliente liga-se ao servidor, sendo estabelecida conexão. Conexão é um canal fiável para comunicação bidireccional. Um socket representa um extremo de uma conexão. Uma conexão é caracterizada por um socket-pair. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 2

Características de uma conexão TCP Fiabilidade: quando são enviados dados é esperado um acknowledgment; se não vier, os dados são retransmitidos. Ordem: os dados são partidos em segmentos numerados; se chegarem fora de ordem são reordenados; se chegar em duplicado é descartado. Controlo de fluxo: cada lado diz quantos bytes está disposto a receber: janela; janela representa tamanho de buffer disponível no receptor; pode aumentar ou diminuir conforme dados são lidos pela aplicação ou chegam; se receptor estiver lento, emissor tem que esperar. Full-duplex: uma conexão é bidireccional, para enviar e receber dados. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 3

Endereçamento Cada máquina (host) tem (pelo menos) um endereço ip. Exemplo: 193.136.19.96 Podem existir vários serviços em cada máquina. Serviços de uma máquina são distinguidos por portos. Um servidor especifica em que porto escuta. Um cliente especifica onde se ligar com um par (ip,porto). c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 4

Gamas de portos Um porto é um número de 16 bits. Serviços internet com números de 0 1023, standardizados pela IANA (Internet Assigned Numbers Authority); e.g.: echo: 7 ftp: 21 ssh: 22 telnet: 23 www: 80 Portos registadas, de 1024 49151; registadas na IANA como conveniência à comunidade. Portos dinâmicos, de 49152-65535: são atribuídos a sockets de clientes para distinguir conexões; podem ser usados por servidores que usam um serviço de localização. Ver lista em http://www.iana.org/assignments/port-numbers. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 5

Cliente-servidor com TCP esqueleto Cliente: socket() connect() while () write() read() close() Servidor socket() bind() listen() while () accept() while () read() write() close() c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 6

Cliente Etapas de um cliente: Criar socket. Connect: é especificado o ip e porto do servidor; inicia o three-way handshake para estabelecer conexão com o servidor. Troca de dados escrevendo e lendo do connected socket. Close: fecha conexão. (Pode ser cliente ou servidor.) c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 7

Servidor Etapas de um servidor Criar socket. Bind: atribui endereço local ao socket: tipicamente apenas o porto; pode ser especificado qual dos ip locais no caso de uma máquina com vários ip. Listen: coloca o socket no modo listening, para poder aceitar pedidos de connect a ele dirigidos; permite especificar o backlog: quantas conexões são guardadas pelo kernel antes de serem retiradas pelo accept. Accept: devolve connected socket da lista de conexões estabelecidas; bloqueia caso ainda não exista conexão estabelecida. Troca de dados lendo e escrevendo do connected socket. Close: fecha conexão. (Pode ser cliente ou servidor.) c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 8

Estabelecimento de conexão O servidor tem que estar preparado para aceitar conexões, fazendo socket, bind, listen (um chamado passive open). Um accept que seja feito bloqueia. É efectuado um three-way handshake: O cliente faz um active open com connect; é enviado um SYN. O servidor toma nota de conexão a ser estabelecida; faz ACK ao SYN e envia o seu SYN; quando segmento chega, o connect retorna no cliente. O cliente faz ACK ao SYN do servidor; quando segmento chega, a conexão está estabelecida e um accept pode retornar. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 9

Estabelecimento de conexão Entre o momento em que uma conexão começa e acaba de ser estabelecida passa um round-trip time (RTT); Durante este tempo, a conexão está numa fila de conexões a ser estabelecidas. Se forem chegando muitos pedidos de conexão, esta fila pode crescer. O backlog especifica a soma dos tamanhos das filas de conexões a ser estabelecidas ou já estabelecidas e ainda não obtidas pelo accept. É importante que o backlog seja alto para servidores com muita carga em redes com elevada latência. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 10

Terminação de conexão São efectuados 4 passos: 1 Um lado (cliente ou servidor) faz close (active close), sendo enviado um FIN. 2 O outro lado que recebe o FIN faz um passive close, sendo enviado um ACK do FIN; é provocado um EOF na leitura. 3 Mais tarde a aplicação que recebeu o EOF faz close do socket; é enviado um FIN. 4 O lado que fez o active close faz ACK a este FIN. Entre os passos 2 e 3, é possível serem enviados dados para quem fez o active close; neste caso temos um half-close. Um half-close pode ser obtido com shutdown, para permitir a parte activa receber dados. c 2000 2006 Paulo Sérgio Almeida Cliente-servidor com Sockets TCP 11