Aqui está uma explicação em termos leigos (espero que você tenha os conceitos):
Os computadores precisam de endereços IP para se distinguirem e se comunicarem entre si. Estes endereços podem ser configurados manualmente em cada PC (o que é uma tarefa chata em grandes redes) ou atribuídos automaticamente.
O último é realizado utilizando-se o chamado servidor DHCP (veja o link wikipedia do Andrey ). Em termos leigos: Cada PC que precisa ter um número atribuído grita "para" a rede: "OLÁ, AQUI SOU. DÊ-ME UM ENDEREÇO!" (google para: broadcast). O servidor DHCP percebe isso e envia ao PC que está gritando um endereço IP que pode ser atribuído a ele mesmo.
As portas não têm nada a ver com o DHCP. Imagine ser um PC que queira falar com outro PC (um servidor). Você tem um IP que você pode usar para conectar (atribuído manualmente ou via DHCP). E se você quiser falar com dois serviços / programas diferentes nesse servidor? Você precisa ter terminais diferentes (= portas) nos quais cada serviço pode escutar. Você precisa de vários endereços!
Imagine as portas como um tipo de terminal / multiplexador IP para IPs. Cada PC pode ter vários aplicativos ouvindo portas diferentes.
Quando você se conecta a um servidor, precisa escolher uma porta à qual deseja se conectar (por exemplo, para servidores da Web, geralmente é a porta 80, 25 para enviar e-mail, etc.).
Andrew S. Tanenbaum escreveu um bom livro chamado "Redes de Computadores", que explica tudo isso em detalhes e de uma maneira compreensível. Mas esteja avisado: Estes são tópicos bastante grandes! Então o livro é grande também. Mas IMHO vale a pena.