A DHCP server listens on UDP port 67. Whenever a client needs a dynamically configured IP address, it sends a DHCPDISCOVER packet to port 67 from port 68. Because the client does not have an IP address yet, this must be an IP broadcast packet (meaning send to IP address 255.255.255.255). The server should be the only system listening to that port and will respond with a DHCPOFFER packet. This packet contains dynamic IP information and is sent to the client coming from port 67 to the client's port 68 (where the client is listening for any reply).
The client will respond with a DHCPREQUEST packet that basically says "I would like to use the IP address you gave me" to the server. The server then replies with a DHCPACK packet that informs the client it can use the IP address for a given amount of time (lease time) and with other IP information, like default gateways, DNS servers, etc. At that point the client closes port 68. The DHCP server has to leave port 67 open to answer other clients' request.