240 likes | 312 Views
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.
E N D
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
O crescimento do TCP/IP • Muitas instituições usaram a tecnologia TCP/IP para interligarem as suas redes com a DARPA. • A National ScienceFoundation (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.
Aplications (FTP, TELNET, HTTP, SMTP, X-Windows, OSPF, RIP, etc.) Transport (Host-to-Host) TCP,UDP Internet (IP,ICMP,ARP,RARP) Network Interface (OSI, IEEE,PPP,SLIP) O modelo TCP/IP O modelo TCP/IP é constituído por 4 camadas.
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.
TCP UDP IP ICMP ARP Acesso à rede 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
Datagrama IP (1) 0 4 8 16 19 24 31 VERS HLEN SERVICE TYPE TOTAL LEN FLAGS FRAGMENT OFFSET IDENTIFICATION PROTOCOL HEADER CHKSUM TTL HEADER SOURCE IP ADDRESS DESTINATION IP ADDRESS IP OPTIONS ( 0 ou mais) PADDING DADOS
Endereços IP 8 16 24 31 Classe A 0 netid hostid Classe B 1 0 netid hostid Classe C 1 1 0 netid hostid Classe D 1 1 1 0 Multicast address Classe E 1 1 1 1 0 reservado para uso futuro Host Local tudo 0s Host nesta rede host tudo 0s Broadcast limitado tudo 1s Broadcast directo para a rede tudo 1s net Loopback 127 qualquer (normalmente 1)
Class End. min End. Max Num. Redes A 0.1.0.0 126.0.0.0 126 B 128.0.0.0 191.255.0.0 16.384 C 192.0.1.0 223.255.255.0 2.097.151 D 224.0.0.0 239.255.255.255 E 240.0.0.0 247.255.255.255 Alcance de cada classe de endereços IP • 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
Aplicação 2 Aplicação n TCP UDP IP ICMP ARP Acesso à rede UDP (User Datagram Protocol) ... Portos UDP Aplicação 1 • 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 UDP
Portos UDP atribuídos echo 7/udp discard 9/udp sink null daytime 13/udp msp 18/udp # message send protocol chargen 19/udp ttytst source time 37/udp timserver rlp 39/udp resource # resource location domain 53/udp nameserver bootps 67/udp # BOOTP server bootpc 68/udp # BOOTP client tftp 69/udp gopher 70/udp # Internet Gopher www 80/udp # HyperText Transfer Protocol kerberos 88/udp krb5 # Kerberos v5 csnet-ns 105/udp cso-ns rtelnet 107/udp # Remote Telnet pop2 109/udp postoffice # POP version 2 pop3 110/udp # POP version 3 pop3q 112/udp # POP version 3 sunrpc 111/udp ntp 123/udp # Network Time Protocol msrpc 135/udp # Microsoft RPC netbios-ns 137/udp # NETBIOS Name Service netbios-dgm 138/udp # NETBIOS Datagram Service netbios-ssn 139/udp # NETBIOS session service imap2 143/udp # Interim Mail Access Proto v2 snmp 161/udp # Simple Net Mgmt Proto snmp-trap 162/udp snmptrap # Traps for SNMP cmip-man 163/udp # ISO mgmt over IP (CMOT) cmip-agent 164/udp xdmcp 177/udp # X Display Mgr. Control Proto nextstep 178/udp NeXTStep NextStep # server bgp 179/udp # Border Gateway Proto. prospero 191/udp # Cliff Neuman's Prospero irc 194/udp # Internet Relay Chat smux 199/udp # SNMP Unix Multiplexer
Aplicação 1 Aplicação n Aplicação 2 TCP (Transmission Control Protocol) Portos TCP ... 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 Acesso à rede
Formato do segmento TCP (1) 0 4 10 16 24 31 SOURCE PORT DESTINATIONPORT SEQUENCE NUMBER ACKNOWLEDGEMENT NUMBER HLEN RESERVED CODE BITS WINDOW CHECKSUM URGENT POINTER OPTIONS (if any) PADDING DATA ...
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.
Ligações TCP (2) • 3 Ligações: • A1 B1 : <A, 21> <B, 1024> • A2 B2 : <A, 21> <B, 1025> • A3 C1 : <A, 21> <C, 1024> Aplicação A1 Aplicação A2 Aplicação A3 Aplicação B1 Aplicação B2 Aplicação C1 21 1024 1025 1024 TCP (A) TCP (B) TCP (C) 3 aplicações a comunicarem sobre o porto 21 TCP da máquina A
Portos TCP atribuídos tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp discard 9/tcp sink null systat 11/tcp users daytime 13/tcp netstat 15/tcp qotd 17/tcp quote of the day msp 18/tcp # message send protocol chargen 19/tcp ttytst source ftp-data 20\tcp File transfer protocol (data) ftp 21/tcp File transfer protocol (control) ssh 22/tcp telnet 23/tcp telnets 24/tcp smtp 25/tcp mail time 37/tcp timserver nameserver 42/tcp name # IEN 116 whois 43/tcp nicname domain 53/tcp nameserver # name-domain server mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootpc 68/tcp # BOOTP client gopher 70/tcp # Internet Gopher rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP link 87/tcp ttylink kerberos 88/tcp krb5 # Kerberos v5 supdup 95/tcp hostnames 101/tcp hostname # usually from sri-nic iso-tsap 102/tcp tsap # part of ISODE. csnet-ns 105/tcp cso-ns # also used by CSO name server pop2 109/tcp postoffice # POP version 2 pop3 110/tcp # POP version 3 pop3q 112/tcp # POP version 3 sunrpc 111/tcp auth 113/tcp tap ident authentication sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp # USENET News Transfer Protocol ntp 123/tcp msrpc 135/tcp # Microsoft RPC netbios-ns 137/tcp # NETBIOS Name Service netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-ssn 139/tcp # NETBIOS session service irc 194/tcp # Internet Relay Chat proxy 3128/tcp # Squid Proxy
1.3 - Interface de Sockets Sockets : Interface TCP/IP no UNIX BSD WinSockets : Interface TCP/IP No Windows
Interface connectionless (UDP) Servidor Cliente socket( ) socket( ) bind( ) bind( ) recvfrom( ) sendto( ) Dados (pedido) Bloqueia até serem recebidos dados do cliente Processa pedido Dados (resposta) sendto( ) recvfrom( )
Interface connectio-oriented (TCP) Servidor socket( ) bind( ) Cliente listen( ) Abertura passiva da ligação socket( ) accept( ) Estabelecimento da ligação Abertura activa da ligação connect( ) Bloqueia até cliente estabelecer ligação Dados (pedido) send( ) recv( ) Processa pedido Dados (resposta) send( ) recv( )
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. };
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
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
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.
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…)