Несколько вопросов о свойствах TCP протокола
По первому вопросу — в заголовке TCP нет флага, сигнализирующего о фрагментации пакета (в отличие от IP), а также есть чексумма, которая не будет валидной в случае, если пакет принят не полностью. Фрагментацией пакетов занимается уровень IP.
2) Кроссплатформенного способа вроде нет.
В linux есть ioctl SIOCOUTQ который позволяет определить, сколько еще не отосланных (не подтвержденных) данных есть в буфере отправки.
В других ОСях наверно тоже что-то подобное есть.
Зная, сколько байтов мы отправили в сокет, и вычитая из них эти не отосланые, можно определить, сколько доставлено.

Хотя обычно прикладной протокол построен по принципу запрос-ответ.
Так что получая ответ на свой запрос вы получаете подтверждение доставки запроса.
Т.е. проблемы этой вобщем-то не существует.