1 / 24

ARPANET : O surgir do TCP/IP

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.

vivian
Download Presentation

ARPANET : O surgir do TCP/IP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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.

  3. 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.

  4. 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.

  5. Interligação de redes

  6. 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

  7. 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

  8. 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)

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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 ...

  14. 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.

  15. 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

  16. 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

  17. 1.3 - Interface de Sockets Sockets : Interface TCP/IP no UNIX BSD WinSockets : Interface TCP/IP No Windows

  18. 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( )

  19. 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( )

  20. 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. };

  21. 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

  22. 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

  23. 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.

  24. 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…)

More Related