Why does the heartbeat request even contain the length of the heartbeat block? We know the length of the SSL record!
The record has two variable length fields, so you need a length field for either the payload or the padding. In this case the payload has the length field and the padding length is implicit.
The only problem is git needs a bare repository to push and pull from, so you're still tied to a central server.
git can push and pull to normal repos as well (though it won't push to the checked out branch), so it works perfectly fine without a central server. You still need access to the repo you want to pull from which can be annoying for things behind NAT/firewalls etc. BT Sync can do NAT traversal so it could work better I guess.
git annex sounds similar to what you want
Why does the heartbeat request even contain the length of the heartbeat block? We know the length of the SSL record!
The record has two variable length fields, so you need a length field for either the payload or the padding. In this case the payload has the length field and the padding length is implicit.
The only problem is git needs a bare repository to push and pull from, so you're still tied to a central server.
git can push and pull to normal repos as well (though it won't push to the checked out branch), so it works perfectly fine without a central server. You still need access to the repo you want to pull from which can be annoying for things behind NAT/firewalls etc. BT Sync can do NAT traversal so it could work better I guess. git annex sounds similar to what you want