Question: Are network cards and IP addresses a one-one map?

Answer: 
On linux, the command is `ip addr add IFADDR dev STRING`, where IFADDR and STRING are replaced by the IP address and device name. You can see some examples in the [Guide to IP Layer NEtwork Administration with Linux](http://linux-ip.net/html/tools-ip-address.html). You'll also want to specify your routes that use that IP address using `ip route`. Again, [the guide](http://linux-ip.net/html/tools-ip-route.html) comes through.

Even though the syntax of the `ip` commands makes it seem that you are associating the IP address with a specific network card, linux considers the IP address as belonging to the overall system. Thus in [some circumstances](http://wiki.openvz.org/Multiple_network_interfaces_and_ARP_flux) you may want to twiddle with ARP settings.
IP layer (the ip address) is completely independent from the physical layer (your network adapter). If your operating system has properly implemented the OSI stack or some close model of it you should be able to easily define several incoming IP addresses on a single network interface. Handling incoming traffic over multiple IP's is pretty easy within linux. However, it's a little more tricky making outgoing traffic have different source IPs when sharing a single interface. Applications typically default to use the primary IP for outgoing source if you don't do anything special to force another IP to show up, but it's definitely possible to do this as well.