Всем привет. Помогите пожалуйста. Я ловлю пакет TCP, изменяю данные в нем( они идут как раз после заголовка TCP) и отправляю далее. Когда просто ловлю и отправляю работает. Когда заменяю какую-то букву в тексте( данные после заголовка TCP), считатаю checksum TCP и записываю в заголовок новую checksum TCP , отправляет.
Но когда изменяю длину, а именно дописываю несколько слов к данным и заменяю последнее слово и пишу в поток(стек сетевой) пакет со старой длиной( checksum тоже по старой длине посчитан) то отправляет, а когда пишу в поток(стек сетевой ) количество байт больше чем пакет который я получил то ни checksum не считает ни отправляет без неё.
Я подозреваю что надо еще в первых 40 байтах пакета там где заголовки изменить что-то. (После 40 байт из 41 уже идут данные). Я прочитал
https://en.wikipedia.org/wiki/IPv4 там есть таблица
IPv4 Header Format и там в некоторых заголовках хранится длина. Но в програме WireShark длина хранится и в IP и в TCP заголовках(так показывает крайней мере (фото 2)).