O IPX é um protocolo que utiliza datagramas, ou seja, cada pacote é tratado como uma entidade individual, não possuindo nenhuma relação lógica ou de seqüência com outros pacotes.
As tarefas realizadas pelo protocolo IPX incluem endereçamento e roteamento possibilitando assim a movimentação de pacotes de dados entre nodos da rede. O protocolo IPX define esquemas de endereçamento inter-redes e intra-nodo, confiando ao hardware da rede a definição do endereçamento dos nodos.
O endereçamento inter-redes é implementado pelo IPX através de números de redes. A cada segmento de rede deve ser atribuído um único número que será utilizado pelos roteadores para encaminhar um pacote para o segmento ao qual esta destinado.
O endereçamento intra-nodo é implementado pelo IPX através de números de sockets. Levando-se em consideração que vários processos podem estar operando em um nodo da rede ao mesmo tempo, a utilização de números de sockets possibilita a identificação exclusiva de um processo.
Sempre que um processo necessita realizar alguma comunicação através da rede, requisita um número de socket que servirá como seu identificador. Sempre que o processo que implementa o IPX recebe um pacote, deve identificar o número do socket e encaminha-lo para o processo destino. Desta forma, o número de socket possibilita um método eficiente para roteamento de pacotes dentro de um nodo da rede.
O tamanho mínimo para o pacote IPX, não incluindo o tamanho do cabeçalho do protocolo de acesso ao meio físico é 30 bytes (tamanho do cabeçalho IPX). Historicamente, o tamanho máximo do pacote IPX foi especificado em 576 bytes (cabeçalho e dados). No entanto, o protocolo IPX possibilita atualmente tamanhos de pacotes acima de 65.535 bytes. Normalmente, o protocolo de meio físico limita o tamanho máximo do pacote em valores menores do que o máximo permitido pelo protocolo IPX. Por exemplo, os pacotes do protocolo Ethernet 802.3 são limitados ao tamanho de 1.500 bytes (não incluindo o cabeçalho).
O cabeçalho IPX é colocado após o cabeçalho de controle do meio físico e antes do pacote de dados (o pacote de dados frequentemente inclui o cabeçalho de um protocolo de mais alto nível). O cabeçalho IPX possui os seguintes campos:
Checksum (2 bytes)
Tamanho do pacote (2 bytes)
Controle do transporte (1 byte)
Tipo do pacote (1 byte)
Rede destino (4 bytes)
Nodo destino (6 bytes)
Socket destino (2 bytes)
Rede origem (4 bytes)
Nodo origem (6 bytes)
Socket origem (2 bytes)
Roteadores compatíveis com o Netware podem ser configurados para interconectar dois ou mais segmentos de uma rede. A cada um destes segmentos deve ser atribuido um único número para distingui-lo dos outros segmentos da rede. O número de identificação do segmento deve ser configurado em todos os roteadores conectados ao segmento. Este número serve como um endereço comum para cada nodo conectado ao segmento.
O roteamento de um pacote numa rede Netware é manipulado utilizando-se o cabeçalho do protocolo de acesso ao meio físico e o cabeçalho do pacote IPX. Para enviar um pacote o nodo origem deve conhecer completamente o endereço inter-rede (número da rede, número do nodo e socket) do nodo destino. O endereço expresso no cabeçalho do protocolo de meio físico depende da existência de um roteador entre o nodo origem e o nodo destino.
Quando um nodo deseja enviar informações para outro nodo que possua o mesmo número de rede (ambos nodos estão no mesmo segmento), o nodo origem pode simplesmente enviar o pacote diretamente para o nodo destino. Entretanto, se os dois nodos possuem números de rede diferentes (estão em segmentos diferentes), o nodo origem deve identificar o roteador adequado no seu próprio segmento e enviar a mensagem, possibilitando assim o encaminhamento do pacote para o segmento de rede do nodo destino.
Para achar este roteador, o nodo origem realiza um broadcast de um pacote RIP requisitando a rota mais rápida para o número de segmento do nodo destino. Esta requisição é respondida pelo roteador do segmento do nodo origem que possua o caminho mais curto para o segmento destino. Nesta resposta o roteador inclue no cabeçalho do pacote IPX os endereços do seu segmento de rede e do seu nodo. No caso do nodo origem ser o próprio roteador, não será necessário o broadcast do pacote RIP, sendo possível obter as informações necessárias diretamente na tabela de roteamento interna ao roteador.
Após o nodo origem conhecer o endereço do roteador, pode preparar o pacote para ser enviado para o nodo destino. O nodo origem preenche os campos de endereçamento do pacote da seguinte forma:
- Preenche no cabeçalho IPX os campos de endereços do nodo destino (endereço de rede destino e do socket destino)
- Preenche no cabeçalho IPX os campos de endereços do nodo origem (endereço da rede origem e do socket origem) com seus próprios endereços
- Preenche os demais campos do cabeçalho do pacote IPX
- Preenche no cabeçalho do protocolo de meio físico o campo de endereço destino com o endereço do roteador (obtido com a requisição RIP)
- Preenche no cabeçalho do protocolo de meio físico o campo de endereço fonte com seu próprio endereço
Quando o roteador recebe um pacote, seu processo IPX realiza os seguintes passos:
- Os campos de endereço destino no cabeçalho IPX (rede, nodo e socket) são verificados para avaliar se o pacote deve ser enviado para um socket de processo interno ao roteador
- O cabeçalho IPX é então examinado para verificar se o campo "controle de transporte" é maior do que 16. Se isto acontecer, o pacote é discartado
- Se o pacote é destinado para um número de rede no qual o roteador esta diretamente conectado, devem ser realizados os seguintes passos: colocar o endereço do nodo destino obtido no cabeçalho IPX no campo endereço destino do cabeçalho MAC, colocar o endereço do nodo roteador no campo de endereço fonte do cabeçalho MAC, incrementar o campo "controle de transporte" do cabeçalho IPX e transmitir o pacote para o segmento do nodo destino
- Se o roteador não esta diretamente conectado ao segmento onde reside o nodo destino, deve enviar o pacote para o próximo roteador no caminho do nodo destino. Para enviar o pacote para outro roteador, devem ser realizados os seguintes passos: colocar o endereço do nodo do próximo roteador no campo de endereço destino no cabeçalho MAC, colocar o endereço do seu próprio nodo no campo de endereço fonte no cabeçalho MAC e incrementar o campo "controle de transporte" no cabeçalho IPX. Logo após o pacote pode ser enviado para o próximo roteador.
No processo de roteamento descrito acima, a única modificação realizada no cabeçalho IPX é o incremento do campo "controle de transporte". Todos os demais campos são deixados com os mesmos valores inicializados pelo nodo origem. A única excessão para esta regra ocorrerá quando o campo de endereço origem no cabeçalho IPX for preenchido com zero pelo nodo origem. Neste caso, o roteador deve preenche-lo com o endereço fonte apropriado antes de propagar o pacote. Se o campo endereço destino possuir zero o pacote não será roteado.