首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCP:序列号/确认号是如何生成的?

TCP:序列号/确认号是如何生成的?
EN

Stack Overflow用户
提问于 2009-03-28 14:54:47
回答 8查看 28.3K关注 0票数 20

我目前正在开发一个程序,该程序可以嗅探发送到特定地址和从特定地址接收的TCP数据包。我试图完成的是用定制的数据包回复某些接收到的数据包。我已经完成了解析。我已经可以生成有效的以太网、IP和TCP数据包。

我唯一不能理解的是seq / ack数字是如何确定的。

虽然这可能与问题无关,但该程序是使用WinPCap用C++编写的。我正在寻求任何可能对我有帮助的提示、文章或其他资源。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-03-28 15:02:37

建立TCP连接时,每一端都会生成一个随机数作为其初始序列号。它是一个强随机数:如果互联网上的任何人都能猜到序列号,那么就存在安全问题,因为他们可以很容易地伪造数据包注入到TCP流中。

此后,对于传输的每个字节,序列号将递增1。ACK字段是来自另一端的序列号,被发回以确认接收。

原始的TCP协议规范RFC 793可以提供很大的帮助。

票数 28
EN

Stack Overflow用户

发布于 2010-07-08 18:49:15

我也有同样的工作要做。首先,随机生成初始seq# (0-4294967297)。然后接收方对接收到的数据长度进行计数,并将seq# + length = x的确认信息发送给发送方。然后,序列将是x,发送者将发送数据。类似地,接收器将计算长度ACK,并将x + length = y作为y发送,以此类推……它是如何生成seq/ack的.

如果你想实际地展示它,尝试在Wireshark中嗅探数据包,然后跟踪TCP流并查看场景……

票数 7
EN

Stack Overflow用户

发布于 2009-03-28 16:16:50

如果我理解正确的话,您正在尝试挂载TCP SEQ prediction attack。如果是这样的话,您将需要研究目标操作系统的Initial Sequence Number生成器的细节。

在相当多的all the major OS's wrt中有广泛宣传的漏洞,它们的ISN生成器是可预测的。我没有密切关注它的后果,但我的理解是,大多数供应商都发布了randomize their ISN increments的补丁。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/692880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档