SlideShare uma empresa Scribd logo
1 de 15
Unix SocketsTutorial
1
Curso Profissional de Gestão e Programação de Sistemas Informáticos
Redes de Comunicação
Índice
• Unix Sockets
• O que é?..............................................................................................................................3
• Onde é que o socket é usado?................................................................................................4
• Tipos de socket.....................................................................................................................5
• Tipos de Servidores…………………………………………………………………………………………………7
• Como criar um cliente e um servidor…………………………………………………………………………..8
• Funções de Núcleo ………………………………………………………………………………………………..16
• Funções de Ajuda …………………………………………………………………………………………………15
• Conclusão …………………………………………………………………………………………………………..17
• Figuras eTabelas
• Tabela 1-Tipos de Sockets……..…………………………………………………………………………5
• Fig.1- DNS……….......................…………………………………………………………………………6
• Fig.2- Modelo Cliente -Servidor....................................................................................7
• Fig.3- Arquitetura cliente-servidor...............................................................................8
• Fig.4- Arquitetura cliente-servidor……..………………………………………………………………8
• Fig.5 –Tipos de Servidores…………………………………………………………………………………9
• Fig.6 –Tipos de Servidores………………………………………………………………………………...9
Índice ( cont.)
3
• Figuras eTabelas.
• Fig.7- Como criar / instalar um cliente e um servidor……………………………………………...10
• Tabela 2- Portas e serviços………………………………………………………………………………...11
• Tabela 3- Funções de Núcleo..........................................................................................13
• Tabela 4- Funções de Núcleo..........................................................................................14
• Tabela 5- Funções de Ajuda..........................................................................................15
• Tabela 6- Funções de Ajuda..........................................................................................16
Unix Socket- O que é o Socket?
 Sockets permitem comunicar entre dois processos diferentes na mesma ou outra maquina.
Quando quiser comunicar com outro programa na internet vai usar um descritor de arquivo.
A partir dai, realiza chamadas de socket send() e recv().
 O socket Unix é usado numa aplicação framework cliente-servidor, o servidor é um processo que desempenha algumas
funções pedidas pelo cliente
A maioria de protocolos ao nível de aplicação é:
 FTP (FileTransfer Protocol);
 SMTP (Simple MailTransfer Protocol);
 POP3 (Post Office Protocol);
4
Unix Socket-Tipos de socket
5
Stream Socket Utiliza o protocoloTCP para comunicar
através de stream de dados (um fluxo
contínuo de dados).
Datagram Socket
Socket Utiliza o protocolo UDP para
comunicar através de pacotes de
dados(os pacotes são independentes
entre si).
Raw Socket É utilizado para o desenvolvimento de
novos protocolos de comunicação ou
acesso a protocolos encriptados.
Sequenced Packets Socket Este assemelha-se ao Stream Socket,
tendo como diferença o facto de
preservar os registos de limite.
Tabela 1 –Tipos de Sockets
Unix Socket- Network Hostname e DNS
6
O HostName é um nome de um servidor
específico de determinada rede da
Internet.
O hostname é o primeiro nome da
especificação completa do host. Por
exemplo, www.microsoft.com indica o
servidor denominado "www" da rede da
Microsoft Corporation.
DNS ( Domain Name System) traduzem
nomes para os para os endereços IP e vice-
versa.
Fig.1- DNS
Unix Socket- Modelo Cliente-Servidor
7
Fig.2- Modelo Cliente-Servidor
Unix Socket- Arquitetura cliente-servidor
8
Nível 3
Nível 2 Fig.4-Arquitetura cliente-servidor
Fig.3-Arquitetura cliente-servidor
Unix Socket-Tipos de Servidores
9
Fig.6-Tipos de Servidores
Fig.5-Tipos de Servidores
Unix Socket – Como criar/ instalar um cliente e um servidor
10Fig.7-Como criar / instalar um cliente e um servidor
Unix Socket - Portas e Serviços
11
Serviço Número da Portas Descrição do serviço
Echo 7 UDP/TCP envia de volta e recebe
Discard 9 UDP/TCP manda para fora o input,
Daytime 13 UDP/TCP retorna o tempo ASCII
Chargen 19 TCP retornar os carateres.
ftp 21 TCP transferência de ficheiros.
telnet 23 TCP controla o login.
Smtp 25 TCP email.
Tfto 37 UDP transferência trivial dos ficheiros.
finger 69 TCP informação sobre os utilizadores
http 80 TCP World WideWeb
login 513 TCP controla o login
Tabela 2-Portas e serviços
Unix Socket -Funções de Núcleo
12
Função - Socket
#include <sys/types.h>
#include <sys/socket.h>
int socket (int family, int type, int protocol);
⋮
Esta chamada retorna um descritor de socket que
pode usar em chamadas de sistema posteriores ou -1
em caso erro.
Função - Bind
#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr,int addrlen);
⋮
Esta chamada retorna 0 se ela for vinculada com
sucesso ao endereço, caso contrário, ela retornará -1
em caso de erro.
Função - Listen
#include <sys/types.h>
#include <sys/socket.h>
int listen(int sockfd,int backlog);
⋮
Esta chamada retorna 0 em caso de sucesso, caso
contrário, ela retorna -1 em caso de erro.
Função - Accept
#include <sys/types.h>
#include <sys/socket.h>
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t
*addrlen);
⋮
Esta chamada retorna um descritor não-negativo no
sucesso, caso contrário ele retorna -1 em caso de
erro.
Tabela 3-Funções de Núcleo
Unix Socket - Funções de Núcleo
13
Função – Send/SendTo
// Função Send
int send(int sockfd, const void *msg, int len, int flags);
⋮
//Função SendTo
int sendto(int sockfd, const void *msg, int len, unsigned int
flags, const struct sockaddr *to, int tolen);
⋮
Estas chamadas retornam o número de bytes
enviados, caso contrário retornam -1 em caso de
erro.
Função – Recv/RecvFrom
//Função Recv
int recv(int sockfd, void *buf, int len, unsigned int flags);
⋮
//Função RecvFrom
int recvfrom(int sockfd, void *buf, int len, unsigned int
flags struct sockaddr *from, int *fromlen);
⋮
Esta chamada retorna o número de bytes lidos no
buffer, caso contrário ele retornará -1 em caso de
erro.
Função - Close
int close( int sockfd );
⋮
Esta chamada retorna 0 em caso de sucesso, caso
contrário, retorna -1 em caso de erro.
Função - Shutdown
int shutdown(int sockfd, int how);
⋮
Esta chamada retorna 0 em caso de sucesso, caso
contrário, ela retorna -1 em caso de erro.
Tabela 4-Funções de Núcleo
Unix Socket - Funções de Ajuda
14
Função – Write
#include <unistd.h>
int write(int fildes, const void *buf, int
nbyte);
⋮
Após a conclusão bem-sucedida 0 write () retorna o
número de bytes realmente gravados no ficheiro
associado, fildes. Este número nunca é maior do que
nbyte. Caso contrário, é retornado -1.
Função – Read
#include <sys/types.h>
#include <unistd.h>
int fork(void);
⋮
Após a conclusão bem-sucedida, write () retorna 0
número de bytes realmente gravados no ficheiro
associado a fildes. Este número nunca é maior do
que nbyte. Caso contrário, é retornado -1.
Função - Fork
int close( int sockfd );
⋮
Após a conclusão bem-sucedida, fork () retorna 0
para o processo filho e o ID do processo do processo
filho para o processo pai. Caso contrário, -1 é
retornado para o processo pai, nenhum processo
filho é criado e errno está configurado para indicar o
erro.
Função - bzero
void bzero(void *s, int nbyte);
⋮
Esta função não retorna valores.
Tabela 5-Funções de Ajuda
Unix Socket - Funções de Ajuda
15
Função – bcmp
int bcmp(const void *s1, const void *s2, int
nbyte);
⋮
Esta função retorna 0 se ambas as strings forem
idênticas, 1 caso contrário. A função bcmp () retorna
sempre 0 quando nbyte é 0.
Função – bcopy
void bcopy(const void *s1, void *s2, int
nbyte);
⋮
Esta função não retorna nada.
Função - memset
void *memset(void *s, int c, int nbyte);
⋮
Esta função retorna um apontador para vazio, mais
concretamente, um apontador para a memória
definida.
Tabela 6-Funções de Ajuda

Mais conteúdo relacionado

Semelhante a Unix Socket Tutorial- O que é Socket

Redes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxRedes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxLuiz Arthur
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisconogueira
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtAnderson Bassani
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Intel Software Brasil
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...tdc-globalcode
 
Configuração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxConfiguração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxSoftD Abreu
 
Redes De Computadores Internet
Redes De Computadores   InternetRedes De Computadores   Internet
Redes De Computadores InternetMario Bittencourt
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Configurando rede local
Configurando rede localConfigurando rede local
Configurando rede localFelipe Pereira
 
Redes prática - Inetd
Redes prática - InetdRedes prática - Inetd
Redes prática - InetdLuiz Arthur
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespesluizfelipemz
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Marcelo Charan
 

Semelhante a Unix Socket Tutorial- O que é Socket (20)

Asterisk
AsteriskAsterisk
Asterisk
 
redes
redesredes
redes
 
Redes prática - Enderecamento I Plinux
Redes prática - Enderecamento I PlinuxRedes prática - Enderecamento I Plinux
Redes prática - Enderecamento I Plinux
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
 
OpenSolaris a Céu Aberto
OpenSolaris a Céu AbertoOpenSolaris a Céu Aberto
OpenSolaris a Céu Aberto
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Servicos de internet
Servicos de internetServicos de internet
Servicos de internet
 
Configuração Ethernet Wireless Linux
Configuração Ethernet Wireless LinuxConfiguração Ethernet Wireless Linux
Configuração Ethernet Wireless Linux
 
44 sockets[1]
44 sockets[1]44 sockets[1]
44 sockets[1]
 
Redes De Computadores Internet
Redes De Computadores   InternetRedes De Computadores   Internet
Redes De Computadores Internet
 
Dhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamentoDhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamento
 
Curso python
Curso pythonCurso python
Curso python
 
Configurando rede local
Configurando rede localConfigurando rede local
Configurando rede local
 
Redes prática - Inetd
Redes prática - InetdRedes prática - Inetd
Redes prática - Inetd
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#
 

Unix Socket Tutorial- O que é Socket

  • 1. Unix SocketsTutorial 1 Curso Profissional de Gestão e Programação de Sistemas Informáticos Redes de Comunicação
  • 2. Índice • Unix Sockets • O que é?..............................................................................................................................3 • Onde é que o socket é usado?................................................................................................4 • Tipos de socket.....................................................................................................................5 • Tipos de Servidores…………………………………………………………………………………………………7 • Como criar um cliente e um servidor…………………………………………………………………………..8 • Funções de Núcleo ………………………………………………………………………………………………..16 • Funções de Ajuda …………………………………………………………………………………………………15 • Conclusão …………………………………………………………………………………………………………..17 • Figuras eTabelas • Tabela 1-Tipos de Sockets……..…………………………………………………………………………5 • Fig.1- DNS……….......................…………………………………………………………………………6 • Fig.2- Modelo Cliente -Servidor....................................................................................7 • Fig.3- Arquitetura cliente-servidor...............................................................................8 • Fig.4- Arquitetura cliente-servidor……..………………………………………………………………8 • Fig.5 –Tipos de Servidores…………………………………………………………………………………9 • Fig.6 –Tipos de Servidores………………………………………………………………………………...9
  • 3. Índice ( cont.) 3 • Figuras eTabelas. • Fig.7- Como criar / instalar um cliente e um servidor……………………………………………...10 • Tabela 2- Portas e serviços………………………………………………………………………………...11 • Tabela 3- Funções de Núcleo..........................................................................................13 • Tabela 4- Funções de Núcleo..........................................................................................14 • Tabela 5- Funções de Ajuda..........................................................................................15 • Tabela 6- Funções de Ajuda..........................................................................................16
  • 4. Unix Socket- O que é o Socket?  Sockets permitem comunicar entre dois processos diferentes na mesma ou outra maquina. Quando quiser comunicar com outro programa na internet vai usar um descritor de arquivo. A partir dai, realiza chamadas de socket send() e recv().  O socket Unix é usado numa aplicação framework cliente-servidor, o servidor é um processo que desempenha algumas funções pedidas pelo cliente A maioria de protocolos ao nível de aplicação é:  FTP (FileTransfer Protocol);  SMTP (Simple MailTransfer Protocol);  POP3 (Post Office Protocol); 4
  • 5. Unix Socket-Tipos de socket 5 Stream Socket Utiliza o protocoloTCP para comunicar através de stream de dados (um fluxo contínuo de dados). Datagram Socket Socket Utiliza o protocolo UDP para comunicar através de pacotes de dados(os pacotes são independentes entre si). Raw Socket É utilizado para o desenvolvimento de novos protocolos de comunicação ou acesso a protocolos encriptados. Sequenced Packets Socket Este assemelha-se ao Stream Socket, tendo como diferença o facto de preservar os registos de limite. Tabela 1 –Tipos de Sockets
  • 6. Unix Socket- Network Hostname e DNS 6 O HostName é um nome de um servidor específico de determinada rede da Internet. O hostname é o primeiro nome da especificação completa do host. Por exemplo, www.microsoft.com indica o servidor denominado "www" da rede da Microsoft Corporation. DNS ( Domain Name System) traduzem nomes para os para os endereços IP e vice- versa. Fig.1- DNS
  • 7. Unix Socket- Modelo Cliente-Servidor 7 Fig.2- Modelo Cliente-Servidor
  • 8. Unix Socket- Arquitetura cliente-servidor 8 Nível 3 Nível 2 Fig.4-Arquitetura cliente-servidor Fig.3-Arquitetura cliente-servidor
  • 9. Unix Socket-Tipos de Servidores 9 Fig.6-Tipos de Servidores Fig.5-Tipos de Servidores
  • 10. Unix Socket – Como criar/ instalar um cliente e um servidor 10Fig.7-Como criar / instalar um cliente e um servidor
  • 11. Unix Socket - Portas e Serviços 11 Serviço Número da Portas Descrição do serviço Echo 7 UDP/TCP envia de volta e recebe Discard 9 UDP/TCP manda para fora o input, Daytime 13 UDP/TCP retorna o tempo ASCII Chargen 19 TCP retornar os carateres. ftp 21 TCP transferência de ficheiros. telnet 23 TCP controla o login. Smtp 25 TCP email. Tfto 37 UDP transferência trivial dos ficheiros. finger 69 TCP informação sobre os utilizadores http 80 TCP World WideWeb login 513 TCP controla o login Tabela 2-Portas e serviços
  • 12. Unix Socket -Funções de Núcleo 12 Função - Socket #include <sys/types.h> #include <sys/socket.h> int socket (int family, int type, int protocol); ⋮ Esta chamada retorna um descritor de socket que pode usar em chamadas de sistema posteriores ou -1 em caso erro. Função - Bind #include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, struct sockaddr *my_addr,int addrlen); ⋮ Esta chamada retorna 0 se ela for vinculada com sucesso ao endereço, caso contrário, ela retornará -1 em caso de erro. Função - Listen #include <sys/types.h> #include <sys/socket.h> int listen(int sockfd,int backlog); ⋮ Esta chamada retorna 0 em caso de sucesso, caso contrário, ela retorna -1 em caso de erro. Função - Accept #include <sys/types.h> #include <sys/socket.h> int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen); ⋮ Esta chamada retorna um descritor não-negativo no sucesso, caso contrário ele retorna -1 em caso de erro. Tabela 3-Funções de Núcleo
  • 13. Unix Socket - Funções de Núcleo 13 Função – Send/SendTo // Função Send int send(int sockfd, const void *msg, int len, int flags); ⋮ //Função SendTo int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); ⋮ Estas chamadas retornam o número de bytes enviados, caso contrário retornam -1 em caso de erro. Função – Recv/RecvFrom //Função Recv int recv(int sockfd, void *buf, int len, unsigned int flags); ⋮ //Função RecvFrom int recvfrom(int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen); ⋮ Esta chamada retorna o número de bytes lidos no buffer, caso contrário ele retornará -1 em caso de erro. Função - Close int close( int sockfd ); ⋮ Esta chamada retorna 0 em caso de sucesso, caso contrário, retorna -1 em caso de erro. Função - Shutdown int shutdown(int sockfd, int how); ⋮ Esta chamada retorna 0 em caso de sucesso, caso contrário, ela retorna -1 em caso de erro. Tabela 4-Funções de Núcleo
  • 14. Unix Socket - Funções de Ajuda 14 Função – Write #include <unistd.h> int write(int fildes, const void *buf, int nbyte); ⋮ Após a conclusão bem-sucedida 0 write () retorna o número de bytes realmente gravados no ficheiro associado, fildes. Este número nunca é maior do que nbyte. Caso contrário, é retornado -1. Função – Read #include <sys/types.h> #include <unistd.h> int fork(void); ⋮ Após a conclusão bem-sucedida, write () retorna 0 número de bytes realmente gravados no ficheiro associado a fildes. Este número nunca é maior do que nbyte. Caso contrário, é retornado -1. Função - Fork int close( int sockfd ); ⋮ Após a conclusão bem-sucedida, fork () retorna 0 para o processo filho e o ID do processo do processo filho para o processo pai. Caso contrário, -1 é retornado para o processo pai, nenhum processo filho é criado e errno está configurado para indicar o erro. Função - bzero void bzero(void *s, int nbyte); ⋮ Esta função não retorna valores. Tabela 5-Funções de Ajuda
  • 15. Unix Socket - Funções de Ajuda 15 Função – bcmp int bcmp(const void *s1, const void *s2, int nbyte); ⋮ Esta função retorna 0 se ambas as strings forem idênticas, 1 caso contrário. A função bcmp () retorna sempre 0 quando nbyte é 0. Função – bcopy void bcopy(const void *s1, void *s2, int nbyte); ⋮ Esta função não retorna nada. Função - memset void *memset(void *s, int c, int nbyte); ⋮ Esta função retorna um apontador para vazio, mais concretamente, um apontador para a memória definida. Tabela 6-Funções de Ajuda

Notas do Editor

  1. Nível 2- O cliente interage diretamente com o servidor, esta arquitetura costuma ter problemas de segurança e velocidade. Nível 3- Existe um tipo de software entre o cliente e o servidor chamado “middleware” é utilizado para verificar o estado da segurança da ligação e faz um balanço no caso de excesso de informação.
  2. Cliente. Criar um socket com a chamada ao sistema socket(). Conectar o socket ao endereço do servidor com a chamada ao sistema connect() Para receber e enviar dados existem varias formas, a mais simples é usar o read() e write(). Servidor. Criar um socket com a chamada ao sistema socket(). Para unir o socket com um endereço usa-se a chamada ao sistema bind(). Descobrir conexões com a chamada ao sistema listen(). Para aceitar uma conexão usa-se a chamada ao sistema accept(), esta chamada ao sistema geralmente bloqueia a conexão. Para receber e enviar dados usa-se as chamadas ao sistema read() e write().