parity:
this refers to weather there is an even or odd number of 1's or 0's in the data. during handshaking both computers chose which they will use(odd or even) and then every byte of data, has its last bit set to a 1 or a 0 in order to maintain this.
eg. 1101 101 is your data u need 1 more bit to make a byte.
for even parity you add a 1.
giving 1101 1011 which has 6 1's which is an even number
for odd parity you add a 0:
giving 1101 1010 having 5 1's which is an odd number.
CheckSum:
This is a block error dection method, meaning it is applied to an entire chucnk of data, not just a single byte like parity.
CheckSum adds the individual bytes of data together, then devides this number by 256(2^8) and the remainder is put into the checksum byte.
they devide the number by 256 and take the remainder, because this garentees that the checksum value will never be greater than 1 byte
ok an example:
1101 1100 | 0111 1001 | 1001 1110 | 1111 1100
220 121 158 252
Add them together: 751
devide this by 256 = 2 r 239
therefor the data that is sent as the checksum value is 239(1110 1111)
CRC(Cyclic Redundancy Check):
This is very much alike checksum except instead of adding all the data bits together then dividing, CRC treats the whole string as one large number and then devides this by a number:
an example:
1101 1100 | 0111 1001 | 1001 1110 | 1111 1100 (same data)
convert that to decimal the entire thing as one number: im not gona do that but it will be some massive number
then take the remainder of deviding it by (2^32) because its a 32bit stream
and then this is ur CRC value.
Effectiveness:
CRC is very effective(the best of the 3)
Checksum is ok.
parity is not very good, but is usualy used inside each of the bits in the datastream and then CRC is applied adding streangth.
hope this has helped
cyaz gl