journal-20-4-11
I read about Address Resolution Protocol. It seems a little insecure. What if a computer just said "Oh that's me" to every ARP request?
I also looked into tunneling a bit more. I think its working but I'm a little fuzzy on which port number means what and don't know how to tell if it's working.
I looked at nmap a bit. Its interesting how automated these things are. It seems like it would be easy for a TCP implementation to log such attacks by noticing the characteristic packets.
I was thinking about a final project and I think playing with Twisted would be fun.
More Realistic Selective Acknowledgement Example
Last week I tried fleshing out an idea I had about how to mimic Selective Acknowledgement using window sizes. I don't think it works as well as I hoped because I was using unrealistic numbers. To get a better sense I'm using numbers taken from the example packet trace
here. I didn't copy the trace packet for packet because there were no packets dropped and it therefore wouldn't be useful. Rather I used the numbers as guidelines for my example. The Seq/Ack numbers are relative to make them easier to read but other than that they should be acurrate.
1
Alice:
Sequence number: 0
Acknowledgement number: N/A
Header length: 40 bytes
SYN
Window Size: 32768 bytes
Options: (20 bytes)
Maximum segment size: 1460 bytes
2
Bob:
Sequence number: 0
Acknowledgement number: 0
Header length: 40 bytes
SYN ACK
Window Size: 32120
Options: (20 bytes)
Maximum segment size: 1460 bytes
3
Alice:
Sequence number: 1
Acknowledgement number: 1
Header length: 32 bytes
ACK
Window Size: 33304
4
Alice:
Sequence number: 1
Acknowledgement number: 1
Header length: 32 bytes
ACK
Window Size: 33304
1428 bytes of data
5
Alice:
Sequence number: 1429
Acknowledgement number: 1
Header length: 32 bytes
ACK
Window Size: 33304
1428 bytes of data
6
Alice:
Sequence number: 2857
Acknowledgement number: 1
Header length: 32 bytes
ACK
Window Size: 33304
1428 bytes of data
7
Alice:
Sequence number: 4285
Acknowledgement number: 1
Header length: 32 bytes
ACK
Window Size: 33304
1428 bytes of data
What happens at this point if Bob didn't receive Packet #5. Clearly if Selective Acknowledgement is turned on then he can send the following
8
Bob:
Sequence number: 1
Acknowledgement number: 1429
Header length: 32 bytes
ACK
Window Size: 32152
Options:
Selective Acknowledgement from 2857 to 5713
However if he can't then my alternative would be something like:
8
Bob:
Sequence number: 1
Acknowledgement number: 1429
Header length: 32 bytes
ACK
Window Size: 1428
This would cause Alice to return just the missing data but at quite a cost. Alice couldn't start sending data from 5713 on until she had received packet 8, sent packet 9 and then received packet 10. That's 1.5 round trips. This might be useful in an application where the application layer messages that were being exchanged rarely exceeded the 1440 byte maximum for one packet and thus the TCP stream was basically already going this slow (perhaps a simple instant messaging app). However for any application that might, for example, need to send large files (e.g. several megabytes) this would be totally impractical.