Sockets
Um socket pode ser usado em ligações de rede de computadores , para um fim de um elo bidirecional de comunicação entre dois programas. A interface original surgiu no sistema operacional UNIX BSD (Berkeley Software Distribution) desenvolvidos especificamente para aplicações cliente/servidor onde cliente e servidor podem estar em máquinas diferentes, havendo uma comunicação através de protocolos de transportes , fazendo com que quando o aplicativo interagir com o software de protocolo , ele deve informar se o mesmo é cliente ou um servidor.
O Socket é uma abstração computacional que mapeia diretamente a uma porta de transporte, através de protocolos TCP ou UDP e mais um endereço de rede. Através dos protocolos é possível a identificação de um aplicativo ou servidor na rede de comunicação IP. Em documentos de RFC (Request for Comments) relacionado a TCP ou UDP, um socket em um computador é definido com a combinação de um endereço IP, um protocolo, e o número da porta do protocolo.
Sockets UDP: O protocolo UDP não estabelece comunicação, o remetente coloca explicitamente o endereço IP e a porta do destino no formato IP. Assim o servidor deve extrair o endereço IP e a (porta) Socket do remetente do datagrama recebido. Os dados recebidos podem até estar fora de ordem ou se perderem, só então serão caminhados para a camada superior, passando pela camada de transporte (UDP) para a camada de aplicação.
Estes datagramas tem a comunicação não orientada a conexão e não confiável pois sua chegada ao destino não é garantida. Tanto o Socket UDP quanto o Socket TCP utilizam o protocolo IP para fazer o roteamento dos dados pela rede.
Sockets TCP: No Protocolo TCP, o socket cria uma ligação stream bi-direcional entre os endereços ‘hostC:portC’ e ‘hostS:portS’, ou seja, entre uma aplicação cliente em execução na máquina ‘hostC’ consegue controlar também a porta ‘portC’ e outra aplicação servidora em execução na máquina ‘hostS’ conseguindo a visualização da porta