How can I send custom TCP/UDP/ICMP packets?

Windows XP is vulnerable to certain packets sent to the UPNP ports 1900 and 5000 I believe.

If someone sends a packet like this:

NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1
LOCATION: URL
NT: urn: schemas-upnp-org:device:InternetGatewayDevice:1
NTS: ssdp:alive
SERVER: EEYE/2001 UPnP/1.0 PASSITON/1.1
USN: uuid:EEYE

With the right modifications, it can lock up the computer. The information I got was from http://www.eeye.com/html/Research/Ad...D20011220.html

But... how does one send a custom packet like that? What is involved? Where can I learn more? Thanks!

-Drawenai