arpanet : o surgir do tcp/ip
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 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
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 2
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 RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 3
O modelo TCP/IP
O modelo TCP/IP é constituído por 4 camadas.
Internet(IP,ICMP,ARP,RARP)
Transport (Host-to-Host)TCP,UDP
Aplications(FTP, TELNET, HTTP, SMTP, X-
Windows, OSPF, RIP, etc.)
Network Interface(OSI, IEEE,PPP,SLIP)
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 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.
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 5
Interligação de redes
Network 1 Network 2
Router
Porto
Endereçoglobal
Host A Host B
TCP/UDP
IP
Network AcessProtocol #1
Aplicações
IP
NAP 1 NAP 1
TCP/UDP
IP
Network AcessProtocol #2
Aplicações
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 6
Esconde a arquitectura física da Internet - Rede VirtualCria identificadores universais - Endereços IP (id a 32 bits)Define unidade de transferência do protocolo - Datagramas IPFaz encaminhamento da informaçãoFornece um serviço não fiável, de comunicação entre máquinasResponsável por converter endereços IP em endereços físicos
IP (Internet Protocol)
Redes físicas
IP
IP
TCP
Acesso à rede
UDP
ARPICMP
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 7
VERS HLEN SERVICE TYPE
FRAGMENT OFFSETFLAGS
PROTOCOL HEADER CHKSUM
SOURCE IP ADDRESS
TOTAL LEN
IDENTIFICATION
TTL
DESTINATION IP ADDRESS
IP OPTIONS ( 0 ou mais) PADDING
DADOS
0 4 8 16 19 24 31
HEADER
Datagrama IP (1)
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 8
Endereços IP
8 16 24 31Classe A
tudo 0s
tudo 0s
tudo 1s
Host Local
Host nesta rede
netid0 hostid1 0 netid hostid1 1 netid hostid0
1 1 Multicast address1 0
1 1 reservado para uso futuro1 1 0
127 qualquer (normalmente 1)
Broadcast limitado
Broadcast directo para a rede
Loopback
Classe B
Classe C
Classe D
Classe E
host
net tudo 1s
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 9
A 0.1.0.0 126.0.0.0 126B 128.0.0.0 191.255.0.0 16.384C 192.0.1.0 223.255.255.0 2.097.151D 224.0.0.0 239.255.255.255E 240.0.0.0 247.255.255.255
Class End. min End. Max Num. Redes
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
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 10
PortosUDP
UDP (User Datagram Protocol)
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áquinaUDP
Internet(endereços IP )
Aplicação 1 Aplicação 2 Aplicação n...
IP
TCP
Acesso à rede
UDP
ARPICMP
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 11
Portos UDP atribuídosecho 7/udpdiscard 9/udp sink nulldaytime 13/udpmsp 18/udp # message send protocolchargen 19/udp ttytst sourcetime 37/udp timserverrlp 39/udp resource # resource locationdomain 53/udp nameserverbootps 67/udp # BOOTP serverbootpc 68/udp # BOOTP clienttftp 69/udpgopher 70/udp # Internet Gopherwww 80/udp # HyperText Transfer Protocolkerberos 88/udp krb5 # Kerberos v5csnet-ns 105/udp cso-nsrtelnet 107/udp # Remote Telnetpop2 109/udp postoffice # POP version 2pop3 110/udp # POP version 3pop3q 112/udp # POP version 3sunrpc 111/udp
ntp 123/udp # Network Time Protocolmsrpc 135/udp # Microsoft RPCnetbios-ns 137/udp # NETBIOS Name Servicenetbios-dgm 138/udp # NETBIOS Datagram Servicenetbios-ssn 139/udp # NETBIOS session serviceimap2 143/udp # Interim Mail Access Proto v2snmp 161/udp # Simple Net Mgmt Protosnmp-trap 162/udp snmptrap # Traps for SNMPcmip-man 163/udp # ISO mgmt over IP (CMOT)cmip-agent 164/udpxdmcp 177/udp # X Display Mgr. Control Protonextstep 178/udp NeXTStep NextStep # serverbgp 179/udp # Border Gateway Proto.prospero 191/udp # Cliff Neuman's Prosperoirc 194/udp # Internet Relay Chatsmux 199/udp # SNMP Unix Multiplexer
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 12
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
Internet(endereços IP )
Aplicação 1 Aplicação 2 Aplicação n...
PortosTCP
TCP (Transmission Control Protocol)
IP
TCP
Acesso à rede
UDP
ARPICMP
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 13
Formato do segmento TCP (1)0
DESTINATION PORT SOURCE PORT
SEQUENCE NUMBER
ACKNOWLEDGEMENT NUMBER
WINDOWCODE BITSRESERVEDHLEN
URGENT POINTERCHECKSUM
OPTIONS (if any) PADDING
DATA...
16 31244 10
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 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.
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 15
Ligações TCP (2)
TCP (A)
Aplicação A1 Aplicação A2
21TCP (B) TCP (C)
1024
Aplicação C1
1024
Aplicação B1
1025
Aplicação B2
* 3 Ligações:» A1 B1 : <A, 21> <B, 1024>» A2 B2 : <A, 21> <B, 1025>» A3 C1 : <A, 21> <C, 1024>
3 aplicações a comunicarem sobre o porto 21 TCP da máquina A
Aplicação A3
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 16
Portos TCP atribuídos
supdup 95/tcphostnames 101/tcp hostname # usually from sri-niciso-tsap 102/tcp tsap # part of ISODE.csnet-ns 105/tcp cso-ns # also used by CSO name serverpop2 109/tcp postoffice # POP version 2pop3 110/tcp # POP version 3pop3q 112/tcp # POP version 3sunrpc 111/tcpauth 113/tcp tap ident authenticationsftp 115/tcpuucp-path 117/tcpnntp 119/tcp readnews untp # USENET News Transfer Protocolntp 123/tcpmsrpc 135/tcp # Microsoft RPCnetbios-ns 137/tcp # NETBIOS Name Servicenetbios-dgm 138/tcp # NETBIOS Datagram Servicenetbios-ssn 139/tcp # NETBIOS session serviceirc 194/tcp # Internet Relay Chatproxy 3128/tcp # Squid Proxy
tcpmux 1/tcp # TCP port service multiplexerecho 7/tcpdiscard 9/tcp sink nullsystat 11/tcp usersdaytime 13/tcpnetstat 15/tcpqotd 17/tcp quote of the daymsp 18/tcp # message send protocolchargen 19/tcp ttytst sourceftp-data 20\tcp File transfer protocol (data)ftp 21/tcp File transfer protocol (control)ssh 22/tcptelnet 23/tcptelnets 24/tcpsmtp 25/tcp mailtime 37/tcp timservernameserver 42/tcp name # IEN 116whois 43/tcp nicnamedomain 53/tcp nameserver # name-domain servermtp 57/tcp # deprecatedbootps 67/tcp # BOOTP serverbootpc 68/tcp # BOOTP clientgopher 70/tcp # Internet Gopherrje 77/tcp netrjsfinger 79/tcpwww 80/tcp http # WorldWideWeb HTTPlink 87/tcp ttylinkkerberos 88/tcp krb5 # Kerberos v5
ISEL 1998 - Luis FalcãoDEEC - LEIC - Tecnologias de Internet
1.3 - Interface de Sockets
* Sockets : Interface TCP/IP no UNIX BSD* WinSockets : Interface TCP/IP No Windows
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 18
Interface connectionless (UDP)ServidorServidor
Bloqueia até serem recebidos dados do cliente
socket( )
bind( )
recvfrom( )
sendto( )
Processa pedido
socket( )
bind( )
sendto( )
recvfrom( )
ClienteCliente
Dados (pedido)
Dados (resposta)
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 19
Interface connectio-oriented (TCP)ServidorServidor
ClienteCliente
Processa pedido
socket( )
recv( )
bind( )
listen( )
accept( )
Bloqueia até cliente estabelecer ligação
send( )
socket( )
connect( )
send( )
recv( )
Dados (pedido)
Dados (resposta)
Estabelecimento
da ligação
Abertura passiva da ligação
Abertura activa da ligação
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 20
Estruturas de endereços nos sockets
// Estrutura genéricastruct 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 RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 21
Primitivas para ambos (1)// Cria um descritor para um socket de determinado protocoloint socket(int family, int type, int protocol);
family - AF_INET, AF_UNIXtype - SOCK_STREAM, SOCK_DGRAM, SOCK_RAWprotocol - IPPROTO_UDP, IPPROTO_TCP, IPPROTO_ICMP, IPPROTO_RAW
// Associa um socket a um porto e a um endereçoint bind ( int sockfd, struct sockaddr * myaddr, int addrlen);
sockfd - Descritor do socketmy_addr - Estrutura com endereço a reservar atribuir ao socket.addrlen - Dimensão da estrutura myaddr
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 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 socketmy_addr - Estrutura com endereço e porto do servidor.addrlen - Dimensão da estrutura servaddr
EST 1998 - Nuno Valero RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 23
Primitivas do serviço TCP (1)// Disponibilidade para receber ligações.int listen(int sockfd, int backlog);
sockfd - Descritor do socketbacklog - 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 socketpeer - 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 RibeiroDSI - LEI - Lic. Engª Informática - Computação em Redes de Computadores 1 - 24
Primitivas do serviço TCP (2)// Primitiva pare envio de dadosint send(int sockfd, char *data, int nbytes, int flags);
sockfd - Descritor do socketdata - Apontador para os dados a enviar.nbytes - Dimensão dos dados a enviar.flags - (ver adiante…)
// Primitiva pare recepção de dadosint recv(int sockfd, char *data, int nbytes, int flags);
sockfd - Descritor do socketdata - 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…)