I would add RFC1122/1123 requirements for internet hosts to the list of suggested readings, basically a review and protocol walkthrough that also discusses some implementation F.A.Q.
I also can confirm, that it's no problem to design an TCP/IP stack from the scratch, mainly based on the RFCs, and a handy test platform to try your code. I once did for an embedded processor. The three weeks estimation seems to be a good guess to my opinion.
Regarding TCP, there are some embedded products, that have omitted reassembly. You typically won't never be aware, unless you test it explicitely, or use a very lossy internet connection. Reassembly of consecutive fragments can be needed with some likelihood, if the communication is routed over media with restricted packet length, but it's not too difficult to implement. UDP is much easier, as said, and it's clearly more effective for a communication, that repeatedly exchanges commands and state data, while TCP is preferable for data streams (although not necessarily required).