I have a feeling the chapter would probably end up acting being a really good example of why you don't want to rewrite TCP
Yes. The dilemma is that reproducing TCP is damned hard to do without introducting subtle, non-deterministic - yet fatal - bugs ...but most non-simple multiplayer games need to do it sooner or later.
Recent research confirmed that none of the major free game-protocols have yet been converted to Java, nor is there much likelihood of it happening (and they aren't that special anyway - their appeal is largely from the fact that they DON'T embellish with lots of extra features).
So, I thought that I could kill two birds with one stone
Having just been maintaining a TCP stack for a bespoke platform I'm suddenly keenly aware of how complex the actual behaviour is and how much of the solution is emergent and not engineered
Exactly; I don't think there's any way of really explaining why you don't want to do TCP short of actually showing how difficult it becomes.
NB: despite the aim to reproduce all of TCP in one chapter, I only intend to do so in a manual / user-guide kind of way - i.e. it has to explain problems and their solutions, but can skip a lot of the precise detail simply because once you understand how it all fits together and why, you are able to quite quickly scan the technically more detailed RFC's and know what you are looking at and looking for.