ARPANET : O surgir do TCP/IP * Os protocolos usados na ARPANET não eram adequados para se executarem em várias redes. * DARPA começou a trabalhar numa tecnologia para a Internet em meados da década de 70. * Esse conjunto de protocolos tomou a forma conhecida actualmente entre 1977-79 - Modelo TCP/IP * Modelo TCP/IP » Desenhado para suportar comunicação entre redes físicas distintas » Integrado no Unix BSD (Interface Sockets) » Foram desenvolvidas um grande numero de aplicações e utilitários EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-1 O crescimento do TCP/IP * Muitas instituições usaram a tecnologia TCP/IP para interligarem as suas redes com a DARPA. » A National Science Foundation (NSF), Department of Energy (DOE), Department of Defense (DOD), Health and Human Services Agency (HHA), National Aeronautics and Space Administration (NASA) * A entidade resultante, conhecida por “Connected Internet”, “DARPA/NSF Internet” ou simplesmente “Internet”, permitiu às instituições trocarem facilmente informação. * O sucesso desta cooperação demostrou a viabilidade do TCP/IP, sobre um conjunto heterogéneo de redes. * O que torna o modelo TCP/IP interessante é a sua adopção quase universal, bem como a dimensão que a Internet atingiu. EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-2 O modelo TCP/IP O modelo TCP/IP é constituído por 4 camadas. Aplications (FTP, TELNET, HTTP, SMTP, XWindows, OSPF, RIP, etc.) Transport (Host-to-Host) TCP,UDP Internet (IP,ICMP,ARP,RARP) Network Interface (OSI, IEEE,PPP,SLIP) EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-3 TCP / IP * Aplication Layer » – Programas que fornecem serviços (Ex: TELNET, FTP, SMTP). Escolhe o tipo de transporte necessário. * Transport Layer – – – – Fornece forma de comunicação entre duas aplicações (ponto a ponto). Controle de fluxo. Controle de erros. Segmentação e reagrupamento das mensagens. * Internet Layer – – – – – Fornece comunicação entre duas máquinas. Responsável pelo encaminhamento. Verifica a validade dos datagramas recebidos. Recebe/envia mensagens ICMP de controle e informação e erros. Envia datagramas IP. * Network Interface Layer – – Transmite datagramas IP e envia-os para uma rede física específica. Recebe datagramas IP de uma rede física específica. EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-4 Interligação de redes Host A Host B Porto Aplicações TCP/UDP Aplicações TCP/UDP Endereço global IP IP Network Acess Protocol #1 Network Acess Protocol #2 Router IP Network 1 Network 2 NAP 1 NAP 1 EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-5 IP (Internet Protocol) Esconde a arquitectura física da Internet - Rede Virtual Cria identificadores universais - Endereços IP (id a 32 bits) Define unidade de transferência do protocolo - Datagramas IP Faz encaminhamento da informação Fornece um serviço não fiável, de comunicação entre máquinas Responsável por converter endereços IP em endereços físicos IP TCP UDP IP ICMP ARP Redes f ísicas Acesso à rede EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-6 Datagrama IP (1) 0 4 VERS 8 HLEN 16 SERVICE TYPE 24 31 TOTAL LEN FLAGS IDENTIFICATION TTL 19 PROTOCOL FRAGMENT OFFSET HEADER CHKSUM HEADER SOURCE IP ADDRESS DESTINATION IP ADDRESS IP OPTIONS ( 0 ou mais) PADDING DADOS EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-7 Endereços IP 8 Classe A 0 Classe B 1 0 Classe C 1 1 0 Classe D 1 1 1 0 Classe E 1 1 1 1 0 16 netid netid hostid netid hostid Multicast address reservado para uso futuro Host Local host tudo 0s Host nesta rede Broadcast limitado tudo 1s 127 31 hostid tudo 0s net 24 tudo 1s qualquer (normalmente 1) Broadcast directo para a rede Loopback EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-8 Alcance de cada classe de endereços IP Class A B C D E End. min 0.1.0.0 128.0.0.0 192.0.1.0 224.0.0.0 240.0.0.0 End. Max 126.0.0.0 191.255.0.0 223.255.255.0 239.255.255.255 247.255.255.255 Num. Redes 126 16.384 2.097.151 * Internet Assigned Number Authority (IANA) » Entidade que controla a unicidade dos endereços IP * Internet Information Center (INTERNIC) » Entidade que distribui os enedereços IP EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1-9 UDP (User Datagram Protocol) Aplicação 1 Portos UDP UDP TCP UDP IP ICMP ARP Aplicação 2 ... Aplicação n Fornece serviço não fiável (igual ao do IP) Adiciona o conceito de porto Capacidade de distinguir múltiplos destinos numa mesma máquina Internet (endereços IP ) Acesso à rede EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 10 Portos UDP atribuídos echo discard daytime msp chargen time rlp domain bootps bootpc tftp gopher www kerberos csnet-ns rtelnet pop2 pop3 pop3q sunrpc 7/udp 9/udp 13/udp 18/udp 19/udp 37/udp 39/udp 53/udp 67/udp 68/udp 69/udp 70/udp 80/udp 88/udp 105/udp 107/udp 109/udp 110/udp 112/udp 111/udp sink null # message send protocol ttytst source timserver resource # resource location nameserver # BOOTP server # BOOTP client # Internet Gopher # HyperText Transfer Protocol krb5 # Kerberos v5 cso-ns # Remote Telnet postoffice # POP version 2 # POP version 3 # POP version 3 ntp 123/udp msrpc 135/udp netbios-ns 137/udp netbios-dgm 138/udp netbios-ssn 139/udp imap2 143/udp snmp 161/udp snmp-trap 162/udp cmip-man 163/udp cmip-agent 164/udp xdmcp 177/udp nextstep 178/udp bgp 179/udp prospero 191/udp irc 194/udp smux 199/udp EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores # Network Time Protocol # Microsoft RPC # NETBIOS Name Service # NETBIOS Datagram Service # NETBIOS session service # Interim Mail Access Proto v2 # Simple Net Mgmt Proto snmptrap # Traps for SNMP # ISO mgmt over IP (CMOT) # X Display Mgr. Control Proto NeXTStep NextStep # server # Border Gateway Proto. # Cliff Neuman's Prospero # Internet Relay Chat # SNMP Unix Multiplexer 1 - 11 TCP (Transmission Control Protocol) Portos TCP Aplicação 1 ... Aplicação n Serviço fiável Transfere cadeias (streams) de “bytes” sem estrutura. Canais virtuais com estabelecimento de ligação. Comunicação nos dois sentidos em simultâneo (full-duplex) “Bufferização” dos dados enviados e recebidos. Adiciona o conceito de porto - capacidade de distinguir múltiplos destinos numa mesma máquina Não assume nada acerca da(s) interface(s) física que irá suportar a comunicação TCP TCP UDP IP ICMP ARP Aplicação 2 Acesso à rede Internet (endereços IP ) EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 12 Formato do segmento TCP (1) 0 4 10 16 SOURCE PORT 24 31 DESTINATION PORT SEQUENCE NUMBER ACKNOWLEDGEMENT NUMBER HLEN RESERVED CODE BITS CHECKSUM WINDOW URGENT POINTER OPTIONS (if any) PADDING DATA ... EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 13 Ligações TCP (1) * Um porto TCP não corresponde a uma única fila. * Podem existir várias aplicações a comunicar sobre o mesmo porto TCP desde que em ligações diferentes. * Uma ligação TCP é identificada por um par de endpoints. * Um endpoint é constituído por 2 identificadores » <Endereço IP, porto> * Para que exista uma ligação diferente, basta que mude um dos identificadores dos 2 endpoints. EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 14 Ligações TCP (2) Aplicação A1 Aplicação A2 21 TCP (A) Aplicação A3 Aplicação B1 Aplicação B2 Aplicação C1 1024 1025 1024 TCP (B) TCP (C) 3 aplicações a comunicarem sobre o porto 21 TCP da máquina A * 3 Ligações: » A1 B1 : <A, 21> <B, 1024> » A2 B2 : <A, 21> <B, 1025> » A3 C1 : <A, 21> <C, 1024> EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 15 Portos TCP atribuídos tcpmux echo discard systat daytime netstat qotd msp chargen ftp-data ftp ssh telnet telnets smtp time nameserver whois domain mtp bootps bootpc gopher rje finger 1/tcp 7/tcp 9/tcp 11/tcp 13/tcp 15/tcp 17/tcp 18/tcp 19/tcp 20\tcp 21/tcp 22/tcp 23/tcp 24/tcp 25/tcp 37/tcp 42/tcp 43/tcp 53/tcp 57/tcp 67/tcp 68/tcp 70/tcp 77/tcp 79/tcp # TCP port service multiplexer www link kerberos 80/tcp 87/tcp 88/tcp http # WorldWideWeb HTTP ttylink krb5 # Kerberos v5 sink null users quote of the day # message send protocol ttytst source File transfer protocol (data) File transfer protocol (control) mail timserver name # IEN 116 nicname nameserver # name-domain server # deprecated # BOOTP server # BOOTP client # Internet Gopher netrjs supdup hostnames iso-tsap csnet-ns pop2 pop3 pop3q sunrpc auth sftp uucp-path nntp 95/tcp 101/tcp 102/tcp 105/tcp 109/tcp 110/tcp 112/tcp 111/tcp 113/tcp 115/tcp 117/tcp 119/tcp ntp msrpc netbios-ns netbios-dgm netbios-ssn irc proxy 123/tcp 135/tcp 137/tcp 138/tcp 139/tcp 194/tcp 3128/tcp hostname # usually from sri-nic tsap # part of ISODE. cso-ns # also used by CSO name server postoffice # POP version 2 # POP version 3 # POP version 3 tap ident authentication readnews untp # USENET News Transfer Protocol # Microsoft RPC # NETBIOS Name Service # NETBIOS Datagram Service # NETBIOS session service # Internet Relay Chat # Squid Proxy EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 16 1.3 - Interface de Sockets * Sockets : Interface TCP/IP no UNIX BSD * WinSockets : Interface TCP/IP No Windows ISEL 1998 - Luis Falcão DEEC - LEIC - Tecnologias de Internet Interface connectionless (UDP) Servidor Cliente socket( ) socket( ) bind( ) bind( ) recvfrom( ) sendto( ) Bloqueia até serem recebidos dados do cliente Processa pedido sendto( ) EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores recvfrom( ) 1 - 18 Interface connectio-oriented (TCP) Servidor socket( ) bind( ) listen( ) Abertura passiva da ligação accept( ) Bloqueia até cliente estabelecer ligação recv( ) Cliente socket( ) connect( ) Abertura activa da ligação send( ) Processa pedido send( ) EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores recv( ) 1 - 19 Estruturas de endereços nos sockets // Estrutura genérica struct sockaddr { u_short sa_family; // família de endereços (2 bytes) char sa_data[14]; // Endereço específico do protocolo }; // Estrutura para família Internet (sa_family = AF_INET) struct sockaddr_in { short sin_family; // familia TCP/IP (AF_INET) unsigned short sin_port; // porto struct in_addr sin_addr; // Endereço IP char sin_zero[8]; }; struct in_addr { u_long s_addr; // 32 bits com endereço IP, em ordenação de rede. }; EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 20 Primitivas para ambos (1) // Cria um descritor para um socket de determinado protocolo int socket(int family, int type, int protocol); family - AF_INET, AF_UNIX type - SOCK_STREAM, SOCK_DGRAM, SOCK_RAW protocol - IPPROTO_UDP, IPPROTO_TCP, IPPROTO_ICMP, IPPROTO_RAW // Associa um socket a um porto e a um endereço int bind ( int sockfd, struct sockaddr * myaddr, int addrlen); sockfd - Descritor do socket my_addr - Estrutura com endereço a reservar atribuir ao socket. addrlen - Dimensão da estrutura myaddr EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 21 Primitivas para ambos (2) /* Quando usada com um socket TCP, estabelece uma ligação com o servidor (abertura activa da ligação). Quando usada com um socket UDP, cria uma associação entre o socket e o endereço e porto destino. Desta forma dados enviados futuramente vão sempre para este destino. */ int connect(int sockfd, struct sockaddr *servaddr, int addrlen); sockfd - Descritor do socket my_addr - Estrutura com endereço e porto do servidor. addrlen - Dimensão da estrutura servaddr EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 22 Primitivas do serviço TCP (1) // Disponibilidade para receber ligações. int listen(int sockfd, int backlog); sockfd - Descritor do socket backlog - Numero máximo de ligações pendentes // Primitiva bloqueante que espera pelo estabelecimento da ligações dos clientes (abertura passiva da ligação) int accept(int sockfd, struct sockaddr *peer, int *addrlen); sockfd - Descritor do socket peer - Estrutura retornada com endereço e porto do servidor. addrlen - Parâmetro de passagem e retorno da dimensão da estrutura peer. EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 23 Primitivas do serviço TCP (2) // Primitiva pare envio de dados int send(int sockfd, char *data, int nbytes, int flags); sockfd - Descritor do socket data - Apontador para os dados a enviar. nbytes - Dimensão dos dados a enviar. flags - (ver adiante…) // Primitiva pare recepção de dados int recv(int sockfd, char *data, int nbytes, int flags); sockfd - Descritor do socket data - Apontador para a zona de dados reservada para colocação dos dados. nbytes - Dimensão da zona reservada para recepção dos dados. flags - (ver adiante…) EST 1998 - Nuno Valero Ribeiro DSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 24