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
Download

Power Point presentation