O protocolo IP possui outras determinações além de identificar você na rede: ele transforma a informação a ser enviada em pequenos pacotes cada um contendo em torno de 512 bytes (alguns autores se divergem quanto ao tamanho dos pacotes, alguns chegam a admitir 200 bytes). Esses pacotes recebem o nome de datagrams e em cada um desses pacotes é alocada a informação do computador de origem e de destino. Que informação é essa? o número IP. Assim, se por exemplo você estabelece uma conexão com algum servidor tipo ftp, junto de cada pacote vai o seu número IP, para que o servidor saiba para quem esta enviando os dados, alem do próprio número IP do servidor para que possa ser localizado, logico.
A respeito do tamanho dos pacotes eles podem ser facilmente percebidos: experimente fazer um upload por e-mail de um arquivo qualquer de, digamos, 137 kb. Na janela informativa de status da operação você irá perceber que aquele pacote de 137 kb aumentou para algo em torno de 188 kb. Esse arquivo de 137 kb foi segmentado em várias partes de mais ou menos 512 bytes cada e foi anexado um cabeçalho informativo feito pelo IP (explicado mais adiante) contendo informações do computador de origem e de destino. Essas informações adicionais, colocadas em cada pacote, constituem alguns kbytes a mais em tudo e foi por isso que aumentou para 188 kb.
Um dado interessante a respeito é que algumas aplicações cliente (leia-se programas que recebem exclusivamente dados) como um mIRC por exemplo, anexa os dois protocolos em seu meio e é perfeitamente configurável o tamanho de cada pacote, ou seja, você poderia enviar pacotes de dados com 512 ou 200 bytes sem problemas. Contudo, pacotes maiores são mais confiaveis e é sempre aconselhavel voce utilizar pacotes de 512 byes. Tambem nao vamos exagerar e colocar pacotes de 1024 bytes. Absurdo. É possivel? é. Mas nao é uma boa ideia.
Uma cartacteristica interessante da rede é que os dados transformados em pacotes podem se perder no caminho da transmissao. Nos primordios do TCP/IP, essas informacoes nao se perdiam tao facilmente mas com o crescente congestionamento da rede, um ou outro pacote pode se perder no caminho ou no minimo chegar na ordem errada. Isso ocorre primeiramente porque qualquer coisa enviado atraves de rede deve passar pelo meio fisico e nesse meio essas "coisas" nada mais sao do que sinais eletricos provenientes de um meio digital. Assim, um pacote de informacoes sao varios pulsos de interrupcao numa corrente continua.
Assim, os pacotes sao enviados sequencialmente mas nao é garantida a sucessão correta, assim um pacote de número 20 pode chegar na frente do 15. Ai então entra o TCP responsável pelo recebimento dos pacotes que chegam. Esse protocolo tem sua maior função no reordenamento dos pacotes. Assim, se um pacote enviado pelo IP se perde no caminho, o TCP manda novo pedido ao computador que estava enviando a informação a fim de ser reestabelecido o processo e o envio novamente do mesmo pacote ou então, se todos os pacotes conseguiram chegar, pô-los na ordem correta. Esse pedido geralmente é feito pelo protocolo ICMP (parte do IP que trata de controle de erros, explicado mais adiante) o qual é enviado em um pacote menor do que 512 bytes informando que um pacote chegou de forma inadequada ou não chegou.
Perceba que a informação nao chega inteira mas segmentada em centenas ou milhares de pacotes, dependendo do tamanho do que se quer enviar. Então como o TCP ao receber o pacote sabe em que ordem ele deve ficar? Nesse caso entra o TCP de origem. O TCP do computador de origem fornece um número sequencial a cada pacote segmentado pelo IP. Assim, quandos os pacotes chegam no destino, o TCP de destino se incumbe de "ver" esses números e pô-los na ordem correta e não na ordem em que chegam. Já pensou se não fosse assim? Quando uma página html fosse "aberta" no seu navegador ficaria tudo desorganizado, porque o seu TCP os receberia e os ordenaria do modo como chegassem.
Outro protocolo que acredito que poucas pessoas possam conhecer ou se conhecem tem certa duvida é o UDP. O UDP (User Datagram Protocol) possui as mesmas qualificacoes que o protocolo TCP e exerce a nível de rede a mesma coisa. A diferenca real se resume no fato de que qualquer conexão realizada por UDP é bastante falha e insegura. Enquanto o TCP fornece um número sequencial a cada pacote a fim de serem reorganizados na ordem correta, o UDP envia os pacotes a esmo, ou seja, sem sequência. Quando esse pacotes chegam no destino fica meio difícil a conexão. Mas aí fica a pergunta: para que diabos serve o UDP então? Bom, se você tem certeza que possui uma conexão confiável e sabe que os pacotes não irão se perder no meio do caminho ou então que chegarão na ordem correta, o UDP pode ser a sua escolha. Nesse caso não se perderia tempo na reordenação de pacotes.
Um exemplo prático de quando se usa o UDP? quando se nuka alguém ou quando se dá o chamado death ping. Ninguém vai se preocupar em enviar alguma coisa a vítima na ordem correta. O objetivo do nuke eu creio que você já conheca. Então pode ser uma boa pedida já que o envio é mais rapido, se bem que nuke além de ser condenável é um pouco antigo e diversas formas de proteção já foram feitas. Bom, então alguém poderia se perguntar: "mas e como fica o IP?". Bom, o IP fica na mesma, ou seja, ele, a nível de rede, continua a exercer a mesma função de antes e não é porque foi incluido o UDP que ele nao vai ser usado. Isso não implica. O TCP ai foi substituido meramente para se acelerar o processo ou com algum outro proposito como o do nuke ou death ping.