If you want some fun reading, try RFC 793 which specifies the transmission control protocol (http://www.faqs.org/rfcs/rfc793.html
The SYN flag is used to SYNchronize a connection - basically to set it up. FIN means there is no more data left, and RST is set to "reset" the connection.
The others are for ACKnowledgements, URGent data and PuSH which "forces" delivery of data.
I know the above is pretty simplistic, so read the RFC or other online resources for more info
Here's one I found on Google: