【求助】TCP分片该怎么重组?

brk1985 2017-01-19 05:45:48
目前我的程序抓网络数据包,可以获得IP包及其长度。

简单的情况、即有效信息就在一个IP包里,我直接从某个IP包里提取即可。
如果有效信息比较长、会被分到2个以上IP包里。这时候需要进行数据包分片重组。

我的计划是把相关协议的IP包存入到数据结构中,根据TCP序列号进行重组。

TCP有序也是依靠序列号,但是我发现序列号会有重复,怎么回事?还是说我这种TCP重组方式有问题?
...全文
721 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevancheng 2017-01-21
  • 打赏
  • 举报
回复
tcp 协议是流协议,保证数据传输顺序正确,至于传输中怎么分包,没办法控制,一般是应用层按照长度读,或者读到缓存,自己根据应用协议处理
shenyi0106 2017-01-20
  • 打赏
  • 举报
回复
你想干嘛? 如果想重写协议栈,建议先看书,然后去研究linux内核 如果只是写7层协议,那你完全没有必要去考虑什么分片重组的事。 备注:TCP是有序号的,而且丢包,序号乱序和序号重复也是很正常,因为TCP本身也是依赖IP分组的, IP分组本身就会乱序,只不过TCP协议栈通过技术手段(序号+重传+滑动窗口+拥塞算法)来解决了丢包,乱序等问题的。
赵4老师 2017-01-20
  • 打赏
  • 举报
回复
《TCP-IP详解卷一:协议》 《TCP-IP详解卷二:实现》
oyljerry 2017-01-20
  • 打赏
  • 举报
回复
你先看看这个包是不是重复的,或者是否正确。不然序列号应该是不同的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧